diff --git a/.github/workflows/build.yaml b/.github/workflows/build.yaml index 6181b87..bf3c2de 100644 --- a/.github/workflows/build.yaml +++ b/.github/workflows/build.yaml @@ -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) @@ -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 diff --git a/.github/workflows/woa32.yaml b/.github/workflows/woa32.yaml new file mode 100644 index 0000000..80d7678 --- /dev/null +++ b/.github/workflows/woa32.yaml @@ -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