From a200ce37b525d4913c221ed8c714a4698e65d2f7 Mon Sep 17 00:00:00 2001 From: "Dario P." Date: Fri, 16 Oct 2026 11:48:35 +0200 Subject: [PATCH] Add per-user Windows installer and build instructions --- README.md | 21 +++++++++++++++--- README.txt | 5 ++++- installer/Build-Installer.ps1 | 12 ++++++++++ installer/Orbit.iss | 41 +++++++++++++++++++++++++++++++++++ 4 files changed, 75 insertions(+), 4 deletions(-) create mode 100644 installer/Build-Installer.ps1 create mode 100644 installer/Orbit.iss diff --git a/README.md b/README.md index 5c3ac55..8a1b5d2 100644 --- a/README.md +++ b/README.md @@ -25,9 +25,12 @@ A portable C# / WPF website launcher for Windows. ## Run -Download the portable Windows x64 package from this repository's Releases page, -extract it, and run `Orbit.exe`. No installer or separate .NET runtime -is required. Windows 10 or Windows 11, 64-bit. +Choose a Windows x64 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-Portable-win-x64.zip**: extract and run `Orbit.exe`, without installing. + +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. ## Settings @@ -47,6 +50,18 @@ 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 ``` +### Build the installer + +Install Inno Setup 7, then run: + +```powershell +./installer/Build-Installer.ps1 +``` + +Use `-IsccPath` for a compiler installed elsewhere. The output is +`release/Orbit-Setup-win-x64.exe`. The installer bundles the runtime as normal +files so the installed app does not need to extract it on launch. + ## Checks ```powershell diff --git a/README.txt b/README.txt index 79cae90..b616f2b 100644 --- a/README.txt +++ b/README.txt @@ -2,7 +2,10 @@ ORBIT 1.1.3 - WEBSITE SHORTCUTS Created by Dario P. Run Orbit.exe on 64-bit Windows 10 or Windows 11. -No installer or separate .NET installation is required. +The portable version needs no installer or separate .NET installation. +Alternatively, run Orbit-Setup-win-x64.exe to install Orbit for your Windows +account with a Start menu shortcut and optional desktop shortcut. Uninstall +through Windows Settings > Apps. Saved links and settings are preserved. NEW IN 1.1 - Import / Export: share a JSON library including custom icons and collection diff --git a/installer/Build-Installer.ps1 b/installer/Build-Installer.ps1 new file mode 100644 index 0000000..dbee1a2 --- /dev/null +++ b/installer/Build-Installer.ps1 @@ -0,0 +1,12 @@ +param([string]$IsccPath = "${env:ProgramFiles(x86)}\Inno Setup 7\ISCC.exe") +$ErrorActionPreference = 'Stop' +$projectRoot = Split-Path $PSScriptRoot -Parent +if (!(Test-Path -LiteralPath $IsccPath)) { throw "Inno Setup compiler not found. Supply -IsccPath with the path to ISCC.exe." } +Push-Location $projectRoot +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 + if ($LASTEXITCODE -ne 0) { throw 'Publish failed.' } + Copy-Item README.txt release/installer-payload/README.txt + & $IsccPath installer/Orbit.iss + if ($LASTEXITCODE -ne 0) { throw 'Installer compilation failed.' } +} finally { Pop-Location } diff --git a/installer/Orbit.iss b/installer/Orbit.iss new file mode 100644 index 0000000..41d1615 --- /dev/null +++ b/installer/Orbit.iss @@ -0,0 +1,41 @@ +#define AppVersion GetVersionNumbersString("..\release\installer-payload\Orbit.exe") +[Setup] +AppId={{60E686D4-296A-41D2-B445-5DDC79FD2A2C} +AppName=Orbit +AppVersion={#AppVersion} +AppPublisher=Dario P. +AppPublisherURL=https://github.com/donishki/orbit +AppSupportURL=https://github.com/donishki/orbit/issues +AppUpdatesURL=https://github.com/donishki/orbit/releases/latest +DefaultDirName={localappdata}\Programs\Orbit +DefaultGroupName=Orbit +DisableProgramGroupPage=yes +PrivilegesRequired=lowest +ArchitecturesAllowed=x64compatible +ArchitecturesInstallIn64BitMode=x64compatible +MinVersion=10.0 +OutputDir=..\release +OutputBaseFilename=Orbit-Setup-win-x64 +SetupIconFile=..\app.ico +UninstallDisplayIcon={app}\Orbit.exe +UninstallDisplayName=Orbit +WizardStyle=modern +Compression=lzma2 +SolidCompression=yes +CloseApplications=yes +RestartApplications=no + +[Tasks] +Name: "desktopicon"; Description: "Create a &desktop shortcut"; GroupDescription: "Shortcuts:"; Flags: unchecked + +[Files] +Source: "..\release\installer-payload\*"; DestDir: "{app}"; Flags: ignoreversion recursesubdirs createallsubdirs + +[Icons] +Name: "{autoprograms}\Orbit"; Filename: "{app}\Orbit.exe"; WorkingDir: "{app}" +Name: "{autodesktop}\Orbit"; Filename: "{app}\Orbit.exe"; WorkingDir: "{app}"; Tasks: desktopicon + +[Run] +Filename: "{app}\Orbit.exe"; Description: "Launch Orbit"; Flags: nowait postinstall skipifsilent + +; Deliberately do not remove the user's %LOCALAPPDATA%\Orbit settings on uninstall.