Build PicView Win32 #968
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| name: Build PicView Win32 | |
| on: | |
| push: | |
| branches: | |
| - dev | |
| pull_request: | |
| branches: | |
| - dev | |
| workflow_dispatch: | |
| jobs: | |
| build: | |
| runs-on: windows-latest | |
| steps: | |
| # Step 1: Checkout the code | |
| - name: Checkout repository | |
| uses: actions/checkout@v4 | |
| # Step 2: Setup .NET 10 SDK | |
| - name: Setup .NET 10 SDK | |
| uses: actions/setup-dotnet@v5 | |
| with: | |
| dotnet-version: '10.x' | |
| # Step 3: Get version from Directory.Build.props using PowerShell | |
| - name: Get version from Directory.Build.props | |
| id: get-version | |
| run: pwsh -File "${{ github.workspace }}/Build/Get-VersionInfo.ps1" | |
| # Step 4 (x64): Publish x64 version | |
| - name: Publish x64 version | |
| run: | | |
| pwsh -File "${{ github.workspace }}\Build\Build Avalonia.Win32.ps1" -Platform "x64" -outputPath "${{ github.workspace }}\Build\PicView-v${{steps.get-version.outputs.version}}-win-x64" | |
| shell: pwsh | |
| # Step 5 (x64): Upload the x64 zip file as an artifact | |
| - name: Upload the x64 artifact | |
| uses: actions/upload-artifact@v4 | |
| with: | |
| name: PicView-v${{steps.get-version.outputs.version}}-win-x64 | |
| path: ${{ github.workspace }}/Build/PicView-v${{steps.get-version.outputs.version}}-win-x64/ | |
| retention-days: 14 | |
| # Step 5.5 (x64): Remove .pdb files from x64 build before installer | |
| - name: Remove .pdb files from x64 build for installer | |
| run: | | |
| Remove-Item -Path "${{ github.workspace }}\Build\PicView-v${{steps.get-version.outputs.version}}-win-x64\*.pdb" -Force -ErrorAction SilentlyContinue | |
| shell: pwsh | |
| # Step 6 (x64): Install Inno Setup | |
| - name: Install Inno Setup | |
| run: | | |
| choco install innosetup -y | |
| # Step 7 (x64): Compile .ISS to .EXE Installer for x64 | |
| - name: Compile .ISS to .EXE Installer (x64) | |
| run: | | |
| New-Item -Path "${{ github.workspace }}\Build\install" -ItemType Directory -Force | |
| & 'C:\Program Files (x86)\Inno Setup 6\ISCC.exe' ` | |
| /O+ ` | |
| /DMyAppVersion="${{steps.get-version.outputs.clean-version}}" ` | |
| /DMyAppOutputDir="${{ github.workspace }}\Build\install" ` | |
| /DMyFileSource="${{ github.workspace }}\Build\PicView-v${{steps.get-version.outputs.version}}-win-x64" ` | |
| /DMyAppOutputName="PicView-v${{steps.get-version.outputs.version}}-win-x64" ` | |
| /DLicenseFile="${{ github.workspace }}\src\PicView.Core\Licenses\LICENSE.txt" ` | |
| /DAppIcon="${{ github.workspace }}\src\PicView.Avalonia.Win32\icon.ico" ` | |
| /DVersionInfoVersion="${{steps.get-version.outputs.clean-version}}" ` | |
| "${{ github.workspace }}\Build\install.iss" | |
| shell: pwsh | |
| # Step 8 (x64): Upload Inno Setup Installer for x64 as an artifact | |
| - name: Upload Inno Setup Installer (x64) | |
| uses: actions/upload-artifact@v4 | |
| with: | |
| name: PicView-${{steps.get-version.outputs.version}}-installer-x64 | |
| path: ${{ github.workspace }}\Build\install\PicView-v${{steps.get-version.outputs.version}}-win-x64.exe | |
| retention-days: 14 | |
| # Step 9 (arm64): Publish arm64 version | |
| - name: Publish arm64 version | |
| run: | | |
| pwsh -File "${{ github.workspace }}\Build\Build Avalonia.Win32.ps1" -Platform "arm64" -outputPath "${{ github.workspace }}\Build\PicView-v${{steps.get-version.outputs.version}}-win-arm64" | |
| shell: pwsh | |
| # Step 10 (arm64): Upload the arm64 zip file as an artifact | |
| - name: Upload the arm64 artifact | |
| uses: actions/upload-artifact@v4 | |
| with: | |
| name: PicView-v${{steps.get-version.outputs.version}}-win-arm64 | |
| path: ${{ github.workspace }}/Build/PicView-v${{steps.get-version.outputs.version}}-win-arm64/ | |
| retention-days: 14 | |
| # Step 10.5 (arm64): Remove .pdb files from arm64 build before installer | |
| - name: Remove .pdb files from arm64 build for installer | |
| run: | | |
| Remove-Item -Path "${{ github.workspace }}\Build\PicView-v${{steps.get-version.outputs.version}}-win-arm64\*.pdb" -Force -ErrorAction SilentlyContinue | |
| shell: pwsh | |
| # Step 11 (arm64): Compile .ISS to .EXE Installer for arm64 | |
| - name: Compile .ISS to .EXE Installer (arm64) | |
| run: | | |
| & 'C:\Program Files (x86)\Inno Setup 6\ISCC.exe' ` | |
| /O+ ` | |
| /DMyAppVersion="${{steps.get-version.outputs.clean-version}}" ` | |
| /DMyAppOutputDir="${{ github.workspace }}\Build\install" ` | |
| /DMyFileSource="${{ github.workspace }}\Build\PicView-v${{steps.get-version.outputs.version}}-win-arm64" ` | |
| /DMyAppOutputName="PicView-v${{steps.get-version.outputs.version}}-win-arm64" ` | |
| /DLicenseFile="${{ github.workspace }}\src\PicView.Core\Licenses\LICENSE.txt" ` | |
| /DAppIcon="${{ github.workspace }}\src\PicView.Avalonia.Win32\icon.ico" ` | |
| /DVersionInfoVersion="${{steps.get-version.outputs.clean-version}}" ` | |
| "${{ github.workspace }}\Build\install.iss" | |
| shell: pwsh | |
| # Step 12 (arm64): Upload Inno Setup Installer for arm64 as an artifact | |
| - name: Upload Inno Setup Installer (arm64) | |
| uses: actions/upload-artifact@v4 | |
| with: | |
| name: PicView-${{steps.get-version.outputs.version}}-installer-arm64 | |
| path: ${{ github.workspace }}\Build\install\PicView-v${{steps.get-version.outputs.version}}-win-arm64.exe | |
| retention-days: 14 |