feat: add native platform installers for Windows, macOS, and Linux

Replace zip/tar archive distribution with platform-native installers:

- Windows: NSIS installer (.exe) with per-user install to
  %LOCALAPPDATA%\Programs\Aryx, Start Menu and Desktop shortcuts,
  Add/Remove Programs registration, and silent install support
- macOS: DMG disk image (.dmg) with drag-to-Applications experience
  via create-dmg
- Linux: Debian package (.deb) with /opt/aryx installation,
  /usr/bin/aryx symlink, desktop entry, hicolor icons, and
  libsecret-1-0 dependency declaration

Add scripts/create-installer.ts as the platform-dispatching entry
point. Update CI workflow to produce native installers instead of
archives. Add installerAssetName to ReleaseTarget interface.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
This commit is contained in:
David Kaya
2026-03-26 13:06:50 +01:00
co-authored by Copilot
parent da7aa5cdd2
commit f838d2ac15
8 changed files with 549 additions and 18 deletions
+6 -16
View File
@@ -97,19 +97,19 @@ jobs:
- os: windows-latest
label: Windows
release_dir_name: Aryx-windows-x64
asset_path: release/Aryx-windows-x64.zip
asset_path: release/Aryx-windows-x64-setup.exe
- os: macos-15-intel
label: macOS (x64)
release_dir_name: Aryx-macos-x64
asset_path: release/Aryx-macos-x64.zip
asset_path: release/Aryx-macos-x64.dmg
- os: macos-15
label: macOS (arm64)
release_dir_name: Aryx-macos-arm64
asset_path: release/Aryx-macos-arm64.zip
asset_path: release/Aryx-macos-arm64.dmg
- os: ubuntu-latest
label: Linux
release_dir_name: Aryx-linux-x64
asset_path: release/Aryx-linux-x64.tar.gz
asset_path: release/aryx-linux-x64.deb
steps:
- name: Check out repository
@@ -141,18 +141,8 @@ jobs:
if: runner.os == 'macOS'
run: codesign --force --deep --sign - "release/${{ matrix.release_dir_name }}/Aryx.app"
- name: Create Windows release archive
if: runner.os == 'Windows'
shell: pwsh
run: Compress-Archive -Path 'release\Aryx-windows-x64\*' -DestinationPath 'release\Aryx-windows-x64.zip' -Force
- name: Create macOS release archive
if: runner.os == 'macOS'
run: ditto -c -k --sequesterRsrc --keepParent "release/${{ matrix.release_dir_name }}/Aryx.app" "${{ matrix.asset_path }}"
- name: Create Linux release archive
if: runner.os == 'Linux'
run: tar -czf release/Aryx-linux-x64.tar.gz -C release Aryx-linux-x64
- name: Create platform installer
run: bun run scripts/create-installer.ts
- name: Upload asset to GitHub release
shell: bash