; Inno Setup script for PeerSpeak (Windows installer). ; ; PeerSpeak is a single self-contained binary: the GUI icon, notification ; chimes, and avatar presets are all embedded in the .exe (include_bytes!), ; so the only payload here is peerspeak.exe plus an .ico for the shortcuts. ; ; 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--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.3" #define MyAppPublisher "mollusk" #define MyAppExeName "peerspeak.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 through Windows Firewall (recommended for voice calls)"; GroupDescription: "Network:" [Files] Source: "peerspeak.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. 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: "{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"