opennx/packaging/win32/opennx.iss
2025-08-08 20:34:09 +02:00

224 lines
9.7 KiB
Plaintext

;
; $Id: opennx.iss 674 2012-02-05 05:55:40Z felfert $
;
#undef DEBUG
#define APPNAME "OpenNXCE"
; Automatically get version from executable resp. dll
#define APPEXE "setupdir\bin\opennx.exe"
#include "version.iss"
#define MSWU "SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall"
#define APPIDSTR "{56D797D7-543C-408F-BBEB-B56787873D2F}"
#define APPIDVAL "{" + APPIDSTR
[Setup]
AppName={#=APPNAME}
AppVersion={#=APPFULLVER}
AppVerName={#=APPFULLVERNAME}
AppPublisher=OpenNX Community Edition
AppPublisherURL=Community from http://unixforum.org
AppCopyright=(C) 2011 The OpenNX Team, CE 2020
;VersionInfoVersion={#=APPFULLVER}
DefaultDirName={pf}\{#=APPNAME}
DefaultGroupName={#=APPNAME}
#ifdef DEBUG
PrivilegesRequired=none
#endif
DisableStartupPrompt=true
ChangesAssociations=yes
OutputDir=.
OutputBaseFileName={#=SETUPFVNAME}
ShowLanguageDialog=no
MinVersion=0,5.0.2195sp3
AppID={#=APPIDVAL}
UninstallFilesDir={app}\uninstall
Compression=lzma/ultra64
SolidCompression=yes
SetupLogging=yes
WizardImageFile=compiler:wizmodernimage-IS.bmp
WizardSmallImageFile=compiler:wizmodernsmallimage-IS.bmp
; The following breaks in older wine versions, so we
; check the wine version in the invoking script and
; define BADWINE, if we are crossbuilding and have a
; broken wine version.
#ifndef BADWINE
SetupIconFile=setupdir\bin\nx.ico
#endif
UninstallDisplayIcon={app}\bin\opennx.exe
LicenseFile=lgpl.rtf
[Languages]
Name: "en"; MessagesFile: "compiler:Default.isl"
Name: "de"; MessagesFile: "compiler:Languages\German.isl"
Name: "es"; MessagesFile: "compiler:Languages\Spanish.isl"
Name: "fr"; MessagesFile: "compiler:Languages\French.isl"
Name: "ru"; MessagesFile: "compiler:Languages\Russian.isl"
[CustomMessages]
dticon=Create a &desktop icon
dticon_group=Additional icons:
cwizard=OpenNX Connection Wizard
sadmin=OpenNX Session Administrator
uninst_opennx=Uninstall OpenNX
fwadd=Adding firewall rules
doc_pconnect=Pconnect Manual
de.dticon=Desktop-Verknüpfung &anlegen
de.dticon_group=Zusätzliche Verknüpfungen:
de.cwizard=OpenNX Verbindungs-Assistent
de.sadmin=OpenNX Sitzungsverwaltung
de.uninst_opennx=Deinstalliere OpenNX
de.fwadd=Erstelle Firewall-Regeln
de.doc_pconnect=Pconnect Handbuch
[Tasks]
Name: "desktopicon"; Description: "{cm:dticon}"; GroupDescription: "{cm:dticon_group}";
[Files]
Source: setupdir\*; DestDir: {app}; Flags: recursesubdirs restartreplace replacesameversion uninsrestartdelete
#if BUILDXMING == "no"
Source: setupdir\bin\opennx.exe; DestDir: {app}; DestName: nxclient.exe; Flags: restartreplace replacesameversion uninsrestartdelete
#endif
[Icons]
Name: "{group}\OpenNX"; Filename: "{app}\bin\opennx.exe";
Name: "{group}\{cm:cwizard}"; Filename: "{app}\bin\opennx.exe"; Parameters: "--wizard"; IconFilename: "{app}\bin\opennx.exe"; IconIndex: 2;
Name: "{group}\{cm:sadmin}"; Filename: "{app}\bin\opennx.exe"; Parameters: "--admin"; IconFilename: "{app}\bin\opennx.exe"; IconIndex: 3
Name: "{group}\{cm:doc_pconnect}"; Filename: "{app}\share\pconnect.html";
Name: "{group}\{cm:uninst_opennx}"; Filename: "{uninstallexe}";
Name: "{commondesktop}\OpenNX"; Filename: "{app}\bin\opennx.exe"; Tasks: "desktopicon";
[Registry]
; Delete original NXClient file global associations
Root: HKLM; Subkey: "Software\Classes\.nxs"; ValueType: none; Flags: deletekey
Root: HKLM; Subkey: "Software\Classes\NXClient.session"; ValueType: none; Flags: deletekey;
;
Root: HKLM; Subkey: "Software\Classes\.nxs"; ValueType: String; ValueData: "OpenNX.session"; Flags: deletekey uninsdeletekey;
Root: HKLM; Subkey: "Software\Classes\.nxs"; ValueName: "Content Type"; ValueType: String; ValueData: "application/nx-session";
Root: HKLM; Subkey: "Software\Classes\OpenNX.session"; ValueType: String; ValueData: "OpenNX session file"; Flags: deletekey uninsdeletekey;
Root: HKLM; Subkey: "Software\Classes\OpenNX.session\DefaultIcon"; ValueType: String; ValueData: "{app}\bin\opennx.exe,1";
Root: HKLM; Subkey: "Software\Classes\OpenNX.session\shell\open\command"; ValueType: String; ValueData: """{app}\bin\opennx.exe"" --session ""%1""";
; Delete original NXClient class regs in HKCU
Root: HKCU; Subkey: "Software\Classes\.nxs"; ValueName: ""; ValueType: none; Flags: deletekey deletevalue
Root: HKCU; Subkey: "Software\Classes\.nxs"; ValueName: "Content Type"; ValueType: none; Flags: deletekey deletevalue
Root: HKCU; Subkey: "Software\Classes\NXClient.session"; ValueName: ""; ValueType: none; Flags: deletekey deletevalue
Root: HKCU; Subkey: "Software\Classes\OpenNX.session\DefaultIcon"; ValueType: none; Flags: deletekey deletevalue
Root: HKCU; Subkey: "Software\Classes\OpenNX.session\shell\open\command"; ValueType: none; Flags: deletekey deletevalue
[Run]
; Allow nxssh, nxesd, pulseaudio, Xming and NXWin in Windows firewall
#if FileExists("setupdir\bin\nxssh.exe")
Filename: "{sys}\netsh.exe"; Parameters: "firewall add allowedprogram ""{app}\bin\nxssh.exe"" ""OpenNX nxssh"" ENABLE"; StatusMsg: {cm:fwadd}; Flags: runhidden skipifdoesntexist
#endif
#if FileExists("setupdir\bin\nxesd.exe")
Filename: "{sys}\netsh.exe"; Parameters: "firewall add allowedprogram ""{app}\bin\nxesd.exe"" ""OpenNX nxesd"" ENABLE"; StatusMsg: {cm:fwadd}; Flags: runhidden skipifdoesntexist
#endif
#if FileExists("setupdir\bin\tracelog.exe")
Filename: "{sys}\netsh.exe"; Parameters: "firewall add allowedprogram ""{app}\bin\tracelog.exe"" ""OpenNX tracelog"" ENABLE"; StatusMsg: {cm:fwadd}; Flags: runhidden skipifdoesntexist
#endif
#if FileExists("setupdir\bin\pulseaudio.exe")
Filename: "{sys}\netsh.exe"; Parameters: "firewall add allowedprogram ""{app}\bin\pulseaudio.exe"" ""OpenNX pulseaudio"" ENABLE"; StatusMsg: {cm:fwadd}; Flags: runhidden skipifdoesntexist
#endif
#if FileExists("setupdir\bin\Xming.exe")
Filename: "{sys}\netsh.exe"; Parameters: "firewall add allowedprogram ""{app}\bin\Xming.exe"" ""OpenNX Xming"" ENABLE"; StatusMsg: {cm:fwadd}; Flags: runhidden skipifdoesntexist
#endif
#if FileExists("setupdir\bin\NXWin.exe")
Filename: "{sys}\netsh.exe"; Parameters: "firewall add allowedprogram ""{app}\bin\NXWin.exe"" ""OpenNX NXWin"" ENABLE"; StatusMsg: {cm:fwadd}; Flags: runhidden skipifdoesntexist
#endif
[UninstallRun]
; Remove firewall exceptions
#if FileExists("setupdir\bin\nxssh.exe")
Filename: "{sys}\netsh.exe"; Parameters: "firewall delete allowedprogram ""{app}\bin\nxssh.exe"" ALL"; Flags: runhidden skipifdoesntexist; RunOnceId: fwdelnxssh
#endif
#if FileExists("setupdir\bin\nxesd.exe")
Filename: "{sys}\netsh.exe"; Parameters: "firewall delete allowedprogram ""{app}\bin\nxesd.exe"" ALL"; Flags: runhidden skipifdoesntexist; RunOnceId: fwdelnxesd
#endif
#if FileExists("setupdir\bin\tracelog.exe")
Filename: "{sys}\netsh.exe"; Parameters: "firewall delete allowedprogram ""{app}\bin\tracelog.exe"" ALL"; Flags: runhidden skipifdoesntexist; RunOnceId: fwdelnxesd
#endif
#if FileExists("setupdir\bin\pulseaudio.exe")
Filename: "{sys}\netsh.exe"; Parameters: "firewall delete allowedprogram ""{app}\bin\pulseaudio.exe"" ALL"; Flags: runhidden skipifdoesntexist; RunOnceId: fwdelnxesd
#endif
#if FileExists("setupdir\bin\Xming.exe")
Filename: "{sys}\netsh.exe"; Parameters: "firewall delete allowedprogram ""{app}\bin\Xming.exe"" ALL"; Flags: runhidden skipifdoesntexist; RunOnceId: fwdelxming
#endif
#if FileExists("setupdir\bin\NXWin.exe")
Filename: "{sys}\netsh.exe"; Parameters: "firewall delete allowedprogram ""{app}\bin\NXWin.exe"" ALL"; Flags: runhidden skipifdoesntexist; RunOnceId: fwdelnxwin
#endif
#if BUILDXMING == "yes"
[UninstallDelete]
Type: files; Name: "{app}\share\Xming\font-dirs"
[Code]
procedure CurStepChanged(step: TSetupStep);
var
fontDir, mkfsexe, s: String;
i, r: Integer;
FindRec: TFindRec;
fontDirs: TStringList;
begin
if step = ssPostInstall then begin
(* Create {app}\share\Xming\font-dirs *)
fontDir := ExpandConstant('{app}\share\Xming\fonts');
fontDirs := TStringList.Create;
(* First, create a list of all subdirs in fonts *)
if DirExists(fontDir) then begin
if FindFirst(fontDir + '\*', FindRec) then begin
try
repeat
if FindRec.Attributes and FILE_ATTRIBUTE_DIRECTORY <> 0 then
fontDirs.Append(fontDir + '\' + FindRec.Name);
until not FindNext(FindRec);
finally
FindClose(FindRec);
end;
end;
end;
(* Add the windows font dir to the list *)
fontDirs.Append(ExpandConstant('{fonts}'));
(* Create the file, containing the comma-separated directory list. *)
s := ExpandConstant('{app}\share\Xming\font-dirs');
Log('Creating ' + s);
SaveStringToFile(s, fontDirs.CommaText, false);
(* Finally, run mkfontscale for all font directories *)
mkfsexe := ExpandConstant('{app}\bin\mkfontscale.exe');
for i := 0 to fontDirs.Count - 1 do begin
s := AddQuotes(fontDirs[i]);
Log('Creating fonts.scale and fonts.dir in ' + s);
Exec(mkfsexe, s, '', SW_HIDE, ewWaitUntilTerminated, r);
Exec(mkfsexe, '-b -s -l ' + s, '', SW_HIDE, ewWaitUntilTerminated, r);
end;
end;
end;
procedure CurUninstallStepChanged(ustep: TUninstallStep);
var
s, txt, wfonts: String;
i: Integer;
fontDirs: TStringList;
begin
if ustep = usUninstall then begin
s := ExpandConstant('{app}\share\Xming\font-dirs');
wfonts := ExpandConstant('{fonts}');
if LoadStringFromFile(s, txt) then begin
fontDirs := TStringList.Create;
fontDirs.CommaText := txt;
for i := 0 to fontDirs.Count - 1 do begin
s := fontDirs[i];
if s <> wfonts then begin
s := AddBackSlash(s);
DeleteFile(s + 'fonts.scale');
DeleteFile(s + 'fonts.dir');
end;
end;
end;
end;
end;
#endif