72 lines
3.6 KiB
Plaintext
72 lines
3.6 KiB
Plaintext
; Inno Setup script for PeerSpeak (Windows installer).
|
|
;
|
|
; PeerSpeak itself is a self-contained binary. The installer also carries the
|
|
; matching viewer-only PixelPass helper so Windows can watch Linux-hosted shares.
|
|
;
|
|
; Build (under Wine on Linux, or native Windows):
|
|
; wine "C:\Program Files (x86)\Inno Setup 6\ISCC.exe" peerspeak.iss
|
|
; Output lands in .\output\peerspeak-<version>-setup.exe
|
|
;
|
|
; The peerspeak.exe is cross-compiled with win-cross-build.sh
|
|
; (x86_64-pc-windows-gnu, statically linked -- no extra DLLs needed).
|
|
|
|
#define MyAppName "PeerSpeak"
|
|
#define MyAppVersion "0.6.8"
|
|
#define MyAppPublisher "mollusk"
|
|
#define MyAppExeName "peerspeak.exe"
|
|
#define PixelPassExeName "pixelpass.exe"
|
|
|
|
[Setup]
|
|
; A stable AppId keeps upgrades/uninstall tracking consistent across versions.
|
|
AppId={{2754D6C1-C8A4-4B13-9824-2D303439739D}
|
|
AppName={#MyAppName}
|
|
AppVersion={#MyAppVersion}
|
|
AppVerName={#MyAppName} {#MyAppVersion}
|
|
AppPublisher={#MyAppPublisher}
|
|
DefaultDirName={autopf}\{#MyAppName}
|
|
DefaultGroupName={#MyAppName}
|
|
DisableProgramGroupPage=yes
|
|
UninstallDisplayIcon={app}\{#MyAppExeName}
|
|
SetupIconFile=peerspeak.ico
|
|
Compression=lzma2/max
|
|
SolidCompression=yes
|
|
WizardStyle=modern
|
|
OutputDir=output
|
|
OutputBaseFilename=peerspeak-{#MyAppVersion}-setup
|
|
; Program Files install + firewall rule both need elevation.
|
|
PrivilegesRequired=admin
|
|
ArchitecturesAllowed=x64compatible
|
|
ArchitecturesInstallIn64BitMode=x64compatible
|
|
|
|
[Languages]
|
|
Name: "english"; MessagesFile: "compiler:Default.isl"
|
|
|
|
[Tasks]
|
|
Name: "desktopicon"; Description: "{cm:CreateDesktopIcon}"; GroupDescription: "{cm:AdditionalIcons}"; Flags: unchecked
|
|
Name: "firewall"; Description: "Allow PeerSpeak and PixelPass through Windows Firewall (recommended)"; GroupDescription: "Network:"
|
|
|
|
[Files]
|
|
Source: "peerspeak.exe"; DestDir: "{app}"; Flags: ignoreversion
|
|
Source: "pixelpass.exe"; DestDir: "{app}"; Flags: ignoreversion
|
|
Source: "peerspeak.ico"; DestDir: "{app}"; Flags: ignoreversion
|
|
|
|
[Icons]
|
|
Name: "{group}\{#MyAppName}"; Filename: "{app}\{#MyAppExeName}"; IconFilename: "{app}\peerspeak.ico"
|
|
Name: "{group}\{cm:UninstallProgram,{#MyAppName}}"; Filename: "{uninstallexe}"
|
|
Name: "{autodesktop}\{#MyAppName}"; Filename: "{app}\{#MyAppExeName}"; IconFilename: "{app}\peerspeak.ico"; Tasks: desktopicon
|
|
|
|
[Run]
|
|
; iroh uses UDP hole-punching; pre-authorizing avoids a mid-call firewall prompt.
|
|
; Delete first so an upgrade replaces our owned rule instead of accumulating an
|
|
; identical rule on every install. `netsh delete` removes every matching rule;
|
|
; its no-match exit code on a first install is harmless to Inno Setup.
|
|
Filename: "{sys}\netsh.exe"; Parameters: "advfirewall firewall delete rule name=""PeerSpeak"""; Flags: runhidden; Tasks: firewall
|
|
Filename: "{sys}\netsh.exe"; Parameters: "advfirewall firewall add rule name=""PeerSpeak"" dir=in action=allow program=""{app}\{#MyAppExeName}"" enable=yes profile=any"; Flags: runhidden; Tasks: firewall
|
|
Filename: "{sys}\netsh.exe"; Parameters: "advfirewall firewall delete rule name=""PeerSpeak PixelPass"""; Flags: runhidden; Tasks: firewall
|
|
Filename: "{sys}\netsh.exe"; Parameters: "advfirewall firewall add rule name=""PeerSpeak PixelPass"" dir=in action=allow program=""{app}\{#PixelPassExeName}"" enable=yes profile=any"; Flags: runhidden; Tasks: firewall
|
|
Filename: "{app}\{#MyAppExeName}"; Description: "{cm:LaunchProgram,{#MyAppName}}"; Flags: nowait postinstall skipifsilent
|
|
|
|
[UninstallRun]
|
|
Filename: "{sys}\netsh.exe"; Parameters: "advfirewall firewall delete rule name=""PeerSpeak"""; Flags: runhidden; RunOnceId: "DelPeerSpeakFirewall"
|
|
Filename: "{sys}\netsh.exe"; Parameters: "advfirewall firewall delete rule name=""PeerSpeak PixelPass"""; Flags: runhidden; RunOnceId: "DelPeerSpeakPixelPassFirewall"
|