Add 32-bit portable and installer build support

This commit is contained in:
dasp committed 2026-10-16 11:56:48 +02:00
1 parent a200ce37b5
commit 2a1640624e
4 files changed
+37 -16

No files matched your search

+7 -3
View File
@@ -25,12 +25,13 @@ A portable C# / WPF website launcher for Windows.
## Run ## Run
Choose a Windows x64 download from [Releases](https://github.com/donishki/orbit/releases/latest): Choose a Windows x64 (64-bit) or x86 (32-bit) download from [Releases](https://github.com/donishki/orbit/releases/latest):
- **Orbit-Setup-win-x64.exe**: installs Orbit for your Windows account, adds a Start menu shortcut, and offers an optional desktop shortcut. Remove it through Windows Settings > Apps. - **Orbit-Setup-win-x64.exe**: installs Orbit for your Windows account, adds a Start menu shortcut, and offers an optional desktop shortcut. Remove it through Windows Settings > Apps.
- **Orbit-Portable-win-x64.zip**: extract and run `Orbit.exe`, without installing. - **Orbit-Portable-win-x64.zip**: extract and run `Orbit.exe`, without installing.
- **Orbit-Setup-win-x86.exe** / **Orbit-Portable-win-x86.zip**: the equivalent 32-bit versions.
Both include .NET and support 64-bit Windows 10 or Windows 11. The installer defaults to `%LOCALAPPDATA%\Programs\Orbit`, requires no administrator password, and preserves links and settings during upgrades and uninstall. Installed and portable copies share the same settings for your account. All packages include .NET. Use x64 for 64-bit Windows 10/11, or x86 for 32-bit Windows 10 (also runnable on 64-bit Windows). The installer defaults to `%LOCALAPPDATA%\Programs\Orbit`, requires no administrator password, and preserves links and settings during upgrades and uninstall. The x86 installer uses `%LOCALAPPDATA%\Programs\Orbit-x86` and labels shortcuts “Orbit (32-bit)” so both architectures can coexist. Installed and portable copies share the same settings for your account.
## Settings ## Settings
@@ -50,16 +51,19 @@ Requires Windows and the .NET 8 SDK.
dotnet publish Orbit.csproj -c Release -r win-x64 --self-contained true -p:PublishSingleFile=true -p:IncludeNativeLibrariesForSelfExtract=true -p:DebugType=None -p:DebugSymbols=false -o release dotnet publish Orbit.csproj -c Release -r win-x64 --self-contained true -p:PublishSingleFile=true -p:IncludeNativeLibrariesForSelfExtract=true -p:DebugType=None -p:DebugSymbols=false -o release
``` ```
For the 32-bit portable build, replace `win-x64` with `win-x86` and use a separate output directory.
### Build the installer ### Build the installer
Install Inno Setup 7, then run: Install Inno Setup 7, then run:
```powershell ```powershell
./installer/Build-Installer.ps1 ./installer/Build-Installer.ps1
./installer/Build-Installer.ps1 -Architecture x86
``` ```
Use `-IsccPath` for a compiler installed elsewhere. The output is Use `-IsccPath` for a compiler installed elsewhere. The output is
`release/Orbit-Setup-win-x64.exe`. The installer bundles the runtime as normal `release/Orbit-Setup-win-x64.exe` or `release/Orbit-Setup-win-x86.exe`. The installer bundles the runtime as normal
files so the installed app does not need to extract it on launch. files so the installed app does not need to extract it on launch.
## Checks ## Checks
+3 -2
View File
@@ -1,9 +1,10 @@
ORBIT 1.1.3 - WEBSITE SHORTCUTS ORBIT 1.1.3 - WEBSITE SHORTCUTS
Created by Dario P. Created by Dario P.
Run Orbit.exe on 64-bit Windows 10 or Windows 11. Run Orbit.exe. Choose x64 for 64-bit Windows 10/11, or x86 for 32-bit
Windows 10. The x86 version also runs on 64-bit Windows.
The portable version needs no installer or separate .NET installation. The portable version needs no installer or separate .NET installation.
Alternatively, run Orbit-Setup-win-x64.exe to install Orbit for your Windows Alternatively, run Orbit-Setup-win-x64.exe or Orbit-Setup-win-x86.exe to install Orbit for your Windows
account with a Start menu shortcut and optional desktop shortcut. Uninstall account with a Start menu shortcut and optional desktop shortcut. Uninstall
through Windows Settings > Apps. Saved links and settings are preserved. through Windows Settings > Apps. Saved links and settings are preserved.
+4 -4
View File
@@ -1,12 +1,12 @@
param([string]$IsccPath = "${env:ProgramFiles(x86)}\Inno Setup 7\ISCC.exe") param([ValidateSet("x64", "x86")][string]$Architecture = "x64", [string]$IsccPath = "${env:ProgramFiles(x86)}\Inno Setup 7\ISCC.exe")
$ErrorActionPreference = 'Stop' $ErrorActionPreference = 'Stop'
$projectRoot = Split-Path $PSScriptRoot -Parent $projectRoot = Split-Path $PSScriptRoot -Parent
if (!(Test-Path -LiteralPath $IsccPath)) { throw "Inno Setup compiler not found. Supply -IsccPath with the path to ISCC.exe." } if (!(Test-Path -LiteralPath $IsccPath)) { throw "Inno Setup compiler not found. Supply -IsccPath with the path to ISCC.exe." }
Push-Location $projectRoot Push-Location $projectRoot
try { try {
dotnet publish Orbit.csproj -c Release -r win-x64 --self-contained true -p:PublishSingleFile=false -p:DebugType=None -p:DebugSymbols=false -o release/installer-payload dotnet publish Orbit.csproj -c Release -r "win-$Architecture" --self-contained true -p:PublishSingleFile=false -p:DebugType=None -p:DebugSymbols=false -o "release/installer-payload-$Architecture"
if ($LASTEXITCODE -ne 0) { throw 'Publish failed.' } if ($LASTEXITCODE -ne 0) { throw 'Publish failed.' }
Copy-Item README.txt release/installer-payload/README.txt Copy-Item README.txt "release/installer-payload-$Architecture/README.txt"
& $IsccPath installer/Orbit.iss & $IsccPath "/DArch=$Architecture" installer/Orbit.iss
if ($LASTEXITCODE -ne 0) { throw 'Installer compilation failed.' } if ($LASTEXITCODE -ne 0) { throw 'Installer compilation failed.' }
} finally { Pop-Location } } finally { Pop-Location }
+23 -7
View File
@@ -1,24 +1,40 @@
#define AppVersion GetVersionNumbersString("..\release\installer-payload\Orbit.exe") #ifndef Arch
#define Arch "x64"
#endif
#define Payload "..\release\installer-payload-" + Arch
#define AppVersion GetVersionNumbersString(Payload + "\Orbit.exe")
[Setup] [Setup]
#if Arch == "x86"
AppId={{A2A7C189-843C-4D5F-B2F3-05A80A936C95}
DefaultDirName={localappdata}\Programs\Orbit-x86
#define ShortcutName "Orbit (32-bit)"
#else
AppId={{60E686D4-296A-41D2-B445-5DDC79FD2A2C} AppId={{60E686D4-296A-41D2-B445-5DDC79FD2A2C}
DefaultDirName={localappdata}\Programs\Orbit
#define ShortcutName "Orbit"
#endif
AppName=Orbit AppName=Orbit
AppVersion={#AppVersion} AppVersion={#AppVersion}
AppPublisher=Dario P. AppPublisher=Dario P.
AppPublisherURL=https://github.com/donishki/orbit AppPublisherURL=https://github.com/donishki/orbit
AppSupportURL=https://github.com/donishki/orbit/issues AppSupportURL=https://github.com/donishki/orbit/issues
AppUpdatesURL=https://github.com/donishki/orbit/releases/latest AppUpdatesURL=https://github.com/donishki/orbit/releases/latest
DefaultDirName={localappdata}\Programs\Orbit
DefaultGroupName=Orbit DefaultGroupName=Orbit
DisableProgramGroupPage=yes DisableProgramGroupPage=yes
PrivilegesRequired=lowest PrivilegesRequired=lowest
SetupArchitecture=x86
#if Arch == "x64"
ArchitecturesAllowed=x64compatible ArchitecturesAllowed=x64compatible
ArchitecturesInstallIn64BitMode=x64compatible ArchitecturesInstallIn64BitMode=x64compatible
#else
ArchitecturesAllowed=x86compatible
#endif
MinVersion=10.0 MinVersion=10.0
OutputDir=..\release OutputDir=..\release
OutputBaseFilename=Orbit-Setup-win-x64 OutputBaseFilename=Orbit-Setup-win-{#Arch}
SetupIconFile=..\app.ico SetupIconFile=..\app.ico
UninstallDisplayIcon={app}\Orbit.exe UninstallDisplayIcon={app}\Orbit.exe
UninstallDisplayName=Orbit UninstallDisplayName={#ShortcutName}
WizardStyle=modern WizardStyle=modern
Compression=lzma2 Compression=lzma2
SolidCompression=yes SolidCompression=yes
@@ -29,11 +45,11 @@ RestartApplications=no
Name: "desktopicon"; Description: "Create a &desktop shortcut"; GroupDescription: "Shortcuts:"; Flags: unchecked Name: "desktopicon"; Description: "Create a &desktop shortcut"; GroupDescription: "Shortcuts:"; Flags: unchecked
[Files] [Files]
Source: "..\release\installer-payload\*"; DestDir: "{app}"; Flags: ignoreversion recursesubdirs createallsubdirs Source: "{#Payload}\*"; DestDir: "{app}"; Flags: ignoreversion recursesubdirs createallsubdirs
[Icons] [Icons]
Name: "{autoprograms}\Orbit"; Filename: "{app}\Orbit.exe"; WorkingDir: "{app}" Name: "{autoprograms}\{#ShortcutName}"; Filename: "{app}\Orbit.exe"; WorkingDir: "{app}"
Name: "{autodesktop}\Orbit"; Filename: "{app}\Orbit.exe"; WorkingDir: "{app}"; Tasks: desktopicon Name: "{autodesktop}\{#ShortcutName}"; Filename: "{app}\Orbit.exe"; WorkingDir: "{app}"; Tasks: desktopicon
[Run] [Run]
Filename: "{app}\Orbit.exe"; Description: "Launch Orbit"; Flags: nowait postinstall skipifsilent Filename: "{app}\Orbit.exe"; Description: "Launch Orbit"; Flags: nowait postinstall skipifsilent