-
Notifications
You must be signed in to change notification settings - Fork 2
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Add an action to build for WoA32 (#24)
* 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
Showing
2 changed files
with
131 additions
and
18 deletions.
There are no files selected for viewing
This file contains 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
This file contains 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
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 |