windows: amd64 installer
This adds windows amd64 support via a dynamic build step that configures the inno installer for the correct architecture Changelog-Added: Add amd64 support for Windows build Closes: https://github.com/damus-io/notedeck/issues/506
This commit is contained in:
61
.github/workflows/rust.yml
vendored
61
.github/workflows/rust.yml
vendored
@@ -170,10 +170,15 @@ jobs:
|
|||||||
path: packages/notedeck-${{ matrix.arch }}.dmg
|
path: packages/notedeck-${{ matrix.arch }}.dmg
|
||||||
|
|
||||||
windows-installer:
|
windows-installer:
|
||||||
name: Build Windows Installer (x86_64)
|
name: Windows Installer
|
||||||
runs-on: windows-latest
|
runs-on: windows-latest
|
||||||
needs: windows-test
|
needs: windows-test
|
||||||
if: github.ref_name == 'master' || github.ref_name == 'ci'
|
if: github.ref_name == 'master' || github.ref_name == 'ci'
|
||||||
|
strategy:
|
||||||
|
fail-fast: false
|
||||||
|
matrix:
|
||||||
|
arch: [x86_64, aarch64]
|
||||||
|
|
||||||
steps:
|
steps:
|
||||||
# Checkout the repository
|
# Checkout the repository
|
||||||
- name: Checkout Code
|
- name: Checkout Code
|
||||||
@@ -195,19 +200,59 @@ jobs:
|
|||||||
- name: Install Inno Setup
|
- name: Install Inno Setup
|
||||||
run: choco install innosetup --no-progress --yes
|
run: choco install innosetup --no-progress --yes
|
||||||
|
|
||||||
|
# Set up Rust toolchain
|
||||||
|
- name: Install Rust toolchain
|
||||||
|
run: rustup target add ${{ matrix.arch }}-pc-windows-msvc
|
||||||
|
|
||||||
|
# Build
|
||||||
|
- name: Build
|
||||||
|
shell: pwsh
|
||||||
|
run: |
|
||||||
|
$target = "${{ matrix.arch }}-pc-windows-msvc"
|
||||||
|
Write-Output "Building for target: $target"
|
||||||
|
cargo build --release --target=$target
|
||||||
|
|
||||||
|
# Generate ISS Script
|
||||||
|
- name: Generate Inno Setup Script
|
||||||
|
shell: pwsh
|
||||||
|
run: |
|
||||||
|
$arch = "${{ matrix.arch }}"
|
||||||
|
$issContent = @"
|
||||||
|
[Setup]
|
||||||
|
AppName=Damus Notedeck
|
||||||
|
AppVersion=0.1
|
||||||
|
DefaultDirName={pf}\Notedeck
|
||||||
|
DefaultGroupName=Damus Notedeck
|
||||||
|
OutputDir=..\packages\$arch
|
||||||
|
OutputBaseFilename=DamusNotedeckInstaller
|
||||||
|
Compression=lzma
|
||||||
|
SolidCompression=yes
|
||||||
|
|
||||||
|
[Files]
|
||||||
|
Source: "..\target\$arch-pc-windows-msvc\release\notedeck.exe"; DestDir: "{app}"; Flags: ignoreversion
|
||||||
|
|
||||||
|
[Icons]
|
||||||
|
Name: "{group}\Damus Notedeck"; Filename: "{app}\notedeck.exe"
|
||||||
|
|
||||||
|
[Run]
|
||||||
|
Filename: "{app}\notedeck.exe"; Description: "Launch Damus Notedeck"; Flags: nowait postinstall skipifsilent
|
||||||
|
"@
|
||||||
|
Set-Content -Path "scripts/windows-installer-$arch.iss" -Value $issContent
|
||||||
|
|
||||||
# Build Installer
|
# Build Installer
|
||||||
- name: Run Inno Setup Script
|
- name: Run Inno Setup Script
|
||||||
run: |
|
run: |
|
||||||
& "C:\Program Files (x86)\Inno Setup 6\ISCC.exe" "scripts\windows-installer.iss"
|
& "C:\Program Files (x86)\Inno Setup 6\ISCC.exe" "scripts\windows-installer-${{ matrix.arch }}.iss"
|
||||||
|
|
||||||
# List outputs
|
|
||||||
- name: List Inno Script outputs
|
|
||||||
run: dir packages
|
|
||||||
|
|
||||||
|
# Move output
|
||||||
|
- name: Move Inno Script outputs to architecture-specific folder
|
||||||
|
run: |
|
||||||
|
New-Item -ItemType Directory -Force -Path packages\${{ matrix.arch }}
|
||||||
|
Move-Item -Path packages\${{ matrix.arch }}\DamusNotedeckInstaller.exe -Destination packages\${{ matrix.arch }}\DamusNotedeckInstaller.exe
|
||||||
# Upload the installer as an artifact
|
# Upload the installer as an artifact
|
||||||
- name: Upload Installer
|
- name: Upload Installer
|
||||||
uses: actions/upload-artifact@v4
|
uses: actions/upload-artifact@v4
|
||||||
with:
|
with:
|
||||||
name: DamusNotedeckInstaller.exe
|
name: DamusNotedeckInstaller-${{ matrix.arch }}.exe
|
||||||
path: packages\DamusNotedeckInstaller.exe
|
path: packages\${{ matrix.arch }}\DamusNotedeckInstaller.exe
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user