e845f63d9e
Inno Setup script for a per-user x64 install, plus the icon it uses for setup.exe. The Mesa DLLs are an optional component rather than a default: a local opengl32.dll beats the system one for everything in the same folder, so shipping them unconditionally would force software rendering on machines with a working GPU. Ignore Output/ so the compiled installer stays out of the repo. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
84 lines
3.7 KiB
Plaintext
84 lines
3.7 KiB
Plaintext
; 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
|