; Inno Setup script for haul — build with: iscc Inno-compile.iss ; ; Source paths below are relative to this file, so the script compiles from a ; clone of the repo on any machine. Build the binary first: ; ; go build -trimpath -ldflags "-s -w -H=windowsgui" -o bin\haul.exe .\cmd\haul ; ; The optional Mesa component picks up whatever DLLs are sitting in bin\ — see ; "Running over Remote Desktop" in README.md for where to get them. ; ; Non-commercial use only #define MyAppName "Haul" #define MyAppVersion "0.1.0" #define MyAppPublisher "A Apointless Space" #define MyAppURL "https://gitea.apointless.space/bsncubed/haul" #define MyAppExeName "haul.exe" [Setup] ; NOTE: The value of AppId uniquely identifies this application. Do not use the same AppId value in installers for other applications. AppId={{E7059C44-7B67-430F-BF2E-6BED87C720B6} AppName={#MyAppName} AppVersion={#MyAppVersion} AppPublisher={#MyAppPublisher} AppPublisherURL={#MyAppURL} AppSupportURL={#MyAppURL} AppUpdatesURL={#MyAppURL} ; PrivilegesRequired=lowest makes {autopf} resolve to %LOCALAPPDATA%\Programs, ; which is the per-user equivalent of Program Files. Use the constant rather ; than a literal %LOCALAPPDATA% — Inno does not expand environment variables in ; that form, and would create a folder named "%LOCALAPPDATA%" instead. DefaultDirName={autopf}\{#MyAppName} UninstallDisplayIcon={app}\{#MyAppExeName} ; "ArchitecturesAllowed=x64compatible" specifies that Setup cannot run ; on anything but x64 and Windows 11 on Arm. ArchitecturesAllowed=x64compatible ; "ArchitecturesInstallIn64BitMode=x64compatible" requests that the ; install be done in "64-bit mode" on x64 or Windows 11 on Arm, ; meaning it should use the native 64-bit Program Files directory and ; the 64-bit view of the registry. ArchitecturesInstallIn64BitMode=x64compatible DisableProgramGroupPage=yes ; Remove the following line to run in administrative install mode (install for all users). PrivilegesRequired=lowest SetupIconFile=cmd\haul\Icon.ico OutputBaseFilename=haul-{#MyAppVersion}-setup-x64 Compression=lzma2/max SolidCompression=yes WizardStyle=modern [Languages] Name: "english"; MessagesFile: "compiler:Default.isl" [Types] Name: "standard"; Description: "Standard installation" Name: "rdp"; Description: "Remote Desktop / virtual machine (adds software OpenGL)" Name: "custom"; Description: "Custom installation"; Flags: iscustom ; A local opengl32.dll always wins over the system one, because Windows searches ; the executable's own directory first — so shipping Mesa unconditionally would ; force software rendering on every machine, including ones with a real GPU. ; Hence it is opt-in, for the RDP/Hyper-V/basic-display case that needs it. [Components] Name: "app"; Description: "Haul"; Types: standard rdp custom; Flags: fixed Name: "mesa"; Description: "Software OpenGL renderer (Mesa llvmpipe)"; Types: rdp [Tasks] Name: "desktopicon"; Description: "{cm:CreateDesktopIcon}"; GroupDescription: "{cm:AdditionalIcons}"; Flags: unchecked [Files] Source: "bin\{#MyAppExeName}"; DestDir: "{app}"; Components: app; Flags: ignoreversion ; Wildcard rather than a hand-maintained list: the Mesa distribution's file set ; changes between releases, and a missing entry fails at compile time while a ; stale one silently ships a DLL that no longer loads. Source: "bin\*.dll"; DestDir: "{app}"; Components: mesa; Flags: ignoreversion ; NOTE: Don't use "Flags: ignoreversion" on any shared system files [Icons] Name: "{autoprograms}\{#MyAppName}"; Filename: "{app}\{#MyAppExeName}" Name: "{autodesktop}\{#MyAppName}"; Filename: "{app}\{#MyAppExeName}"; Tasks: desktopicon [Run] Filename: "{app}\{#MyAppExeName}"; Description: "{cm:LaunchProgram,{#StringChange(MyAppName, '&', '&&')}}"; Flags: nowait postinstall skipifsilent