diff --git a/.gitignore b/.gitignore index d0b0bbc..0407457 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,4 @@ /bin/ /dist/ /haul.app/ +/Output/ diff --git a/Inno-compile.iss b/Inno-compile.iss new file mode 100644 index 0000000..c136bf6 --- /dev/null +++ b/Inno-compile.iss @@ -0,0 +1,83 @@ +; 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 diff --git a/cmd/haul/Icon.ico b/cmd/haul/Icon.ico new file mode 100644 index 0000000..f02c0c4 Binary files /dev/null and b/cmd/haul/Icon.ico differ