Skip to content

Commit

Permalink
Add an action to build for WoA32 (#24)
Browse files Browse the repository at this point in the history
* Add an action to build for WoA32

* oops

* okay im dumb

* i hate xml namespaces

* more fixes

* only build for ARM

* jackass

* confusing

* alright no appxbundle for you then

* oh right that'd do it
  • Loading branch information
WamWooWam authored Dec 13, 2024
1 parent 130cf33 commit 6f50f56
Show file tree
Hide file tree
Showing 2 changed files with 131 additions and 18 deletions.
36 changes: 18 additions & 18 deletions .github/workflows/build.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -30,27 +30,10 @@ jobs:
with:
fetch-depth: 0

# Add MSBuild to the PATH: https://github.com/microsoft/setup-msbuild
- name: Setup MSBuild.exe
uses: microsoft/setup-msbuild@v2

# Restore the application to populate the obj folder with RuntimeIdentifiers
- name: Restore NuGet Packages
run: msbuild $env:Solution_Name /t:Restore /p:Configuration=$env:Configuration /p:Platform=x64
env:
Configuration: ${{ matrix.configuration }}

# Decode the base 64 encoded pfx and save the Signing_Certificate
- name: Load Certificate
run: |
$pfx_cert_byte = [System.Convert]::FromBase64String("${{ secrets.BASE64_ENCODED_PFX }}")
$certificatePath = "GitHubActionsWorkflow.pfx"
[IO.File]::WriteAllBytes("$env:Project_Name/$certificatePath", $pfx_cert_byte)
- name: Adjust Package Version
run: |
$epoch = (Get-Date) - ([System.DateTime]::new(2024, 11, 01))
$file = (Resolve-Path "UniSky/Package.appxmanifest")
$file = (Resolve-Path "$env:Project_Name/Package.appxmanifest")
$xml = [System.Xml.XmlDocument]::new()
$xml.Load($file)
Expand All @@ -61,6 +44,23 @@ jobs:
$xml.Save($file)
# Decode the base 64 encoded pfx and save the Signing_Certificate
- name: Load Certificate
run: |
$pfx_cert_byte = [System.Convert]::FromBase64String("${{ secrets.BASE64_ENCODED_PFX }}")
$certificatePath = "GitHubActionsWorkflow.pfx"
[IO.File]::WriteAllBytes("$env:Project_Name/$certificatePath", $pfx_cert_byte)
# Add MSBuild to the PATH: https://github.com/microsoft/setup-msbuild
- name: Setup MSBuild.exe
uses: microsoft/setup-msbuild@v2

# Restore the application to populate the obj folder with RuntimeIdentifiers
- name: Restore NuGet Packages
run: msbuild $env:Solution_Name /t:Restore /p:Configuration=$env:Configuration /p:Platform=x64
env:
Configuration: ${{ matrix.configuration }}

# Create the app package by building and packaging the project
- name: Build App Packages
run: msbuild $env:ProjectFile_Name /p:Configuration=$env:Configuration /p:SourceRevisionBranch="$env:Head_Ref" /p:SourceRevisionCommit="$($env:Sha.Substring(0, 7))" /p:UapAppxPackageBuildMode=$env:Appx_Package_Build_Mode /p:AppxBundle=$env:Appx_Bundle /p:AppxBundlePlatforms="x86|x64|ARM|ARM64" /p:PackageCertificateKeyFile=GitHubActionsWorkflow.pfx /p:AppxPackageDir="$env:Appx_Package_Dir" /p:GenerateAppxPackageOnBuild=true
Expand Down
113 changes: 113 additions & 0 deletions .github/workflows/woa32.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,113 @@
# This workflow will build, sign, and package a WinUI 3 MSIX desktop application
# built on .NET.

name: WoA32

on:
push:
branches: [ master ]
pull_request:
branches: [ master ]

jobs:

build:

strategy:
matrix:
configuration: [Release]

runs-on: windows-latest

env:
Solution_Name: UniSky.sln
Project_Name: UniSky
ProjectFile_Name: UniSky/UniSky.csproj

steps:
- name: Checkout
uses: actions/checkout@v4
with:
fetch-depth: 0

- name: Adjust Package Version
run: |
$appx = 'http://schemas.microsoft.com/appx/manifest/foundation/windows10'
$rescap = 'http://schemas.microsoft.com/appx/manifest/foundation/windows10/restrictedcapabilities'
$msbuild = 'http://schemas.microsoft.com/developer/msbuild/2003'
$epoch = (Get-Date) - ([System.DateTime]::new(2024, 11, 01))
$file = (Resolve-Path "$env:Project_Name/Package.appxmanifest")
$xml = [System.Xml.XmlDocument]::new()
$xml.Load($file)
$nsmgr = [System.Xml.XmlNamespaceManager]::new($xml.NameTable)
$nsmgr.AddNamespace("appx", $appx);
$nsmgr.AddNamespace("rescap", $rescap);
# adjust package version
$node = $xml.GetElementsByTagName("Identity", $appx)[0]
$version = [System.Version]::Parse($node.GetAttribute("Version"))
$version = [System.Version]::new($version.Major, $version.Minor, $version.Build, $epoch.TotalMinutes);
$node.SetAttribute("Version", $version.ToString())
# adjust target versionk
$node = $xml.GetElementsByTagName("TargetDeviceFamily", $appx)[0]
$node.SetAttribute("MinVersion", "10.0.15035.0");
# remove confirmAppClose rescap
$node = $xml.SelectSingleNode('//rescap:Capability[@Name="confirmAppClose"]', $nsmgr)
$node.ParentNode.RemoveChild($node)
$xml.Save($file)
$file = (Resolve-Path "$env:ProjectFile_Name")
$xml.Load($file)
$nsmgr = [System.Xml.XmlNamespaceManager]::new($xml.NameTable)
$nsmgr.AddNamespace("msbuild", $msbuild);
$node = $xml.SelectSingleNode('//msbuild:PackageReference[@Include="Microsoft.UI.Xaml"]/msbuild:Version', $nsmgr)
$node.InnerXml = "2.7.4-prerelease.221117002"
$xml.Save($file)
# Decode the base 64 encoded pfx and save the Signing_Certificate
- name: Load Certificate
run: |
$pfx_cert_byte = [System.Convert]::FromBase64String("${{ secrets.BASE64_ENCODED_PFX }}")
$certificatePath = "GitHubActionsWorkflow.pfx"
[IO.File]::WriteAllBytes("$env:Project_Name/$certificatePath", $pfx_cert_byte)
# Add MSBuild to the PATH: https://github.com/microsoft/setup-msbuild
- name: Setup MSBuild.exe
uses: microsoft/setup-msbuild@v2

# Restore the application to populate the obj folder with RuntimeIdentifiers
- name: Restore NuGet Packages
run: msbuild $env:Solution_Name /t:Restore /p:Configuration=$env:Configuration /p:Platform=ARM
env:
Configuration: ${{ matrix.configuration }}

# Create the app package by building and packaging the project
- name: Build App Packages
run: msbuild $env:ProjectFile_Name /p:Configuration=$env:Configuration /p:Platform=ARM /p:SourceRevisionBranch="$env:Head_Ref-woa32" /p:SourceRevisionCommit="$($env:Sha.Substring(0, 7))" /p:UapAppxPackageBuildMode=$env:Appx_Package_Build_Mode /p:AppxBundle=$env:Appx_Bundle /p:AppxBundlePlatforms="ARM" /p:PackageCertificateKeyFile=GitHubActionsWorkflow.pfx /p:AppxPackageDir="$env:Appx_Package_Dir" /p:GenerateAppxPackageOnBuild=true
env:
Appx_Bundle: Always
Appx_Package_Build_Mode: SideloadOnly
Appx_Package_Dir: Packages\
Configuration: ${{ matrix.configuration }}
Head_Ref: ${{ github.head_ref }}
Sha: ${{ github.sha }}

# Remove the pfx
- name: Cleanup
run: Remove-Item -path UniSky/GitHubActionsWorkflow.pfx

# Upload the MSIX package: https://github.com/marketplace/actions/upload-a-build-artifact
- name: Upload Appx Package
uses: actions/upload-artifact@v4
with:
name: AppxPackage-${{ matrix.configuration }}
path: |
${{ env.Project_Name }}\\Packages

0 comments on commit 6f50f56

Please sign in to comment.