diff --git a/.github/actions/package/manifest.yml b/.github/actions/package/manifest.yml new file mode 100644 index 000000000..3ae458696 --- /dev/null +++ b/.github/actions/package/manifest.yml @@ -0,0 +1,28 @@ +name: Configure manifest +inputs: + manifest: + required: true + publisher: + required: true + version: + required: true + prefix: + required: true + branch: + required: true +runs: + using: "composite" + steps: + - name: Configure manifest + shell: powershell + run: | + $manifestPath = ${{ inputs.manifest }} + + $manifest = [xml](Get-Content $manifestPath) + $manifest.Package.Identity.Publisher = "${{ inputs.publisher }}" + $manifest.Package.Identity.Version = "${{ inputs.version }}" + $manifest.Package.Properties.DisplayName = "${{ inputs.prefix }}" + if ("${{ inputs.branch }}" -ne "master") { + $manifest.Package.Properties.DisplayName = $manifest.Package.Properties.DisplayName + " (${{ inputs.branch }})" + } + $manifest.Save($manifestPath) diff --git a/.github/workflows/sponsors.yml b/.github/workflows/00-sponsors.yml similarity index 100% rename from .github/workflows/sponsors.yml rename to .github/workflows/00-sponsors.yml diff --git a/.github/workflows/translators.yml b/.github/workflows/00-translators.yml similarity index 100% rename from .github/workflows/translators.yml rename to .github/workflows/00-translators.yml diff --git a/.github/workflows/10-base.yml b/.github/workflows/10-base.yml new file mode 100644 index 000000000..3e6a5184f --- /dev/null +++ b/.github/workflows/10-base.yml @@ -0,0 +1,72 @@ +name: Base +on: + push: + branches: + - master + - dev + - rafael/* + paths-ignore: + - '**/*.md' + - '.github/ISSUE_TEMPLATE/*' + - '.github/workflows/sponsors.yml' + - '.github/workflows/translators.yml' + - 'Graphics/*' + pull_request: + branches: + - dev + paths-ignore: + - '**/*.md' + - crowdin.yml +env: + DOTNET_SKIP_FIRST_TIME_EXPERIENCE: true + DOTNET_CLI_TELEMETRY_OPTOUT: true + +jobs: + base: + runs-on: windows-latest + + steps: + - name: Checkout + uses: actions/checkout@v4 + + - name: Fetch all history for all tags and branches + run: git fetch --prune --unshallow + + - name: Install GitVersion + uses: gittools/actions/gitversion/setup@v1.1.1 + with: + versionSpec: '5.x' + includePrerelease: false + + - name: Use GitVersion + id: gitversion + uses: gittools/actions/gitversion/execute@v1.1.1 + + - name: Create artifacts folder + shell: pwsh + run: | + New-Item -ItemType Directory -Force -Path .artifacts/ + + - name: Generate versioning artifact + shell: pwsh + run: | + "${{ steps.gitversion.outputs.majorMinorPatch }}.${{ steps.gitversion.outputs.commitsSinceVersionSource }}" | + Out-File .artifacts/version.txt + + - name: Restore packages + run: dotnet restore EarTrumpet.sln + shell: cmd + + - name: Build EarTrumpet + shell: cmd + run: | + dotnet publish /p:PublishProfile=Properties\PublishProfiles\x86.pubxml EarTrumpet/EarTrumpet.csproj /p:Platform=x86 /p:OutputPath=..\.artifacts\base\x86 + dotnet publish /p:PublishProfile=Properties\PublishProfiles\x64.pubxml EarTrumpet/EarTrumpet.csproj /p:Platform=x64 /p:OutputPath=..\.artifacts\base\x64 + dotnet publish /p:PublishProfile=Properties\PublishProfiles\arm64.pubxml EarTrumpet/EarTrumpet.csproj /p:Platform=ARM64 /p:OutputPath=..\.artifacts\base\arm64 + + - name: Add to cache + uses: actions/cache/save@v4 + with: + key: base-${{ github.sha }} + path: | + .artifacts diff --git a/.github/workflows/20-appinstaller.yml b/.github/workflows/20-appinstaller.yml new file mode 100644 index 000000000..e17f8843d --- /dev/null +++ b/.github/workflows/20-appinstaller.yml @@ -0,0 +1,40 @@ +on: + workflow_run: + workflows: ["Base"] + types: + - completed + +env: + channel: "AppInstaller" + publisher: "CN=File-New-Project, O=File-New-Project, L=Purcellville, S=Virginia, C=US" + +jobs: + appinstaller: + runs-on: windows-latest + + steps: + - name: Checkout + uses: actions/checkout@v4 + + - name: Restore base + uses: actions/cache/restore@v4 + with: + path: .artifacts + key: base-${{ github.sha }} + + - name: Set Bugsnag API Key + shell: pwsh + run: | + Get-ChildItem .artifacts\base\**\app.config | ForEach-Object { + $cfg = Get-Content $_ + $cfg | ForEach-Object { $_.Replace("{bugsnag.apikey}", "${{ secrets.bugsnag_api_key }}") } | Set-Content $_ + } + + - name: Configure manifest + uses: .github/actions/package/manifest.yml + with: + manifest: packaging/package.appxmanifest + publisher: ${{ env.publisher }} + branch: ${{ github.ref_name }} + prefix: "EarTrumpet" + version: .artifacts/version.txt diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml deleted file mode 100644 index 5cccd31e6..000000000 --- a/.github/workflows/main.yml +++ /dev/null @@ -1,408 +0,0 @@ -name: EarTrumpet-CI -on: - push: - branches: - - master - - dev - - rafael/* - paths-ignore: - - "**/*.md" - - ".github/ISSUE_TEMPLATE/*" - - ".github/workflows/sponsors.yml" - - ".github/workflows/translators.yml" - - "Graphics/*" - pull_request: - branches: - - dev - paths-ignore: - - "**/*.md" - - crowdin.yml -env: - DOTNET_SKIP_FIRST_TIME_EXPERIENCE: true - DOTNET_CLI_TELEMETRY_OPTOUT: true - -jobs: - build: - runs-on: windows-latest - strategy: - matrix: - channel: [AppInstaller, Store, Chocolatey] - include: - - channel: AppInstaller - publisher: - "CN=File-New-Project, O=File-New-Project, L=Purcellville, S=Virginia, C=US" - - channel: Store - publisher: CN=6099D0EF-9374-47ED-BDFE-A82136831235 - - channel: Chocolatey - publisher: 'CN=File-New-Project, O=File-New-Project, L=Purcellville, S=Virginia, C=US' - max-parallel: 1 - steps: - - name: Checkout - uses: actions/checkout@v4 - - - name: Fetch all history for all tags and branches - run: git fetch --prune --unshallow - - - name: Install GitVersion - uses: gittools/actions/gitversion/setup@v1.1.1 - with: - versionSpec: "5.x" - includePrerelease: false - - - name: Use GitVersion - id: gitversion - uses: gittools/actions/gitversion/execute@v1.1.1 - - - name: Generate versioning metadata - shell: pwsh - id: metadata - run: | - if("${{ matrix.channel }}" -eq "Store") { - $Version = "Version=${{ steps.gitversion.outputs.majorMinorPatch }}.0" - } else { - $Version = "Version=${{ steps.gitversion.outputs.majorMinorPatch }}.${{ steps.gitversion.outputs.commitsSinceVersionSource }}" - } - - Write-Output $Version >> $env:GITHUB_OUTPUT - - - name: Restore packages - run: dotnet restore EarTrumpet.sln - - - name: Set Bugsnag API Key - shell: pwsh - run: | - $cfg = Get-Content ".\EarTrumpet\app.config" - $cfg | ForEach-Object { $_.Replace("{bugsnag.apikey}", "${{ secrets.bugsnag_api_key }}") } | Set-Content ".\EarTrumpet\app.config" - - - name: Adjust manifest and store association - if: matrix.channel == 'Store' || matrix.channel == 'AppInstaller' - shell: powershell - run: | - $manifestPath = ".\EarTrumpet.Package\Package.appxmanifest" - $storeAssociationPath = ".\EarTrumpet.Package\Package.StoreAssociation.xml" - - $manifest = [xml](Get-Content $manifestPath) - $manifest.Package.Identity.Publisher = "${{ matrix.publisher }}" - $manifest.Package.Identity.Version = "${{ steps.metadata.outputs.version }}" - - if("${{ matrix.channel }}" -eq "AppInstaller") { - if("${{ steps.gitversion.outputs.branchName }}" -eq "master") { - $manifest.Package.Properties.DisplayName = "EarTrumpet" - $manifest.Package.Applications.Application.VisualElements.DisplayName = "EarTrumpet" - } else { - $manifest.Package.Properties.DisplayName = $manifest.Package.Properties.DisplayName + " (${{ steps.gitversion.outputs.branchName }})" - $manifest.Package.Applications.Application.VisualElements.DisplayName = "EarTrumpet (${{ steps.gitversion.outputs.branchName }})" - } - } - $manifest.Save($manifestPath) - - $storeAssociation = [xml](Get-Content $storeAssociationPath) - $storeAssociation.StoreAssociation.Publisher = "${{ matrix.publisher }}" - if("${{ matrix.channel }}" -eq "AppInstaller") { - if("${{ steps.gitversion.outputs.branchName }}" -eq "master") { - $storeAssociation.StoreAssociation.ProductReservedInfo.ReservedNames.ReservedName = "EarTrumpet" - } else { - $storeAssociation.StoreAssociation.ProductReservedInfo.ReservedNames.ReservedName = "EarTrumpet (${{ steps.gitversion.outputs.branchName }})" - } - } - $storeAssociation.Save($storeAssociationPath) - - - name: Set up MSBuild - uses: microsoft/setup-msbuild@v2 - - - name: Build EarTrumpet msixupload package - if: matrix.channel == 'Store' - shell: cmd - run: msbuild EarTrumpet.Package/EarTrumpet.Package.wapproj /p:Platform=x86 /p:Configuration=Release /p:msixbundle=Always /p:Channel=${{ matrix.channel }} /p:AppxPackageDir=..\.artifacts\msixupload\ /p:AppxPackageSigningEnabled=false /p:UapAppxPackageBuildMode=CI -maxcpucount - - - name: Upload msixupload artifact - if: matrix.channel == 'Store' && github.event_name != 'pull_request' - uses: actions/upload-artifact@v4 - with: - name: msixupload - path: .artifacts/msixupload - - - name: Build EarTrumpet - if: matrix.channel == 'Chocolatey' - shell: cmd - run: | - msbuild /t:Publish /p:PublishProfile=Properties\PublishProfiles\x86.pubxml EarTrumpet/EarTrumpet.csproj /p:Platform=x86 /p:Channel=${{ matrix.channel }} /p:OutputPath=..\.artifacts\loose\x86 -maxcpucount - msbuild /t:Publish /p:PublishProfile=Properties\PublishProfiles\x64.pubxml EarTrumpet/EarTrumpet.csproj /p:Platform=x64 /p:Channel=${{ matrix.channel }} /p:OutputPath=..\.artifacts\loose\x64 -maxcpucount - msbuild /t:Publish /p:PublishProfile=Properties\PublishProfiles\arm64.pubxml EarTrumpet/EarTrumpet.csproj /p:Platform=ARM64 /p:Channel=${{ matrix.channel }} /p:OutputPath=..\.artifacts\loose\arm64 -maxcpucount - - - name: Upload loose artifacts - if: - matrix.channel == 'Chocolatey' && github.event_name != 'pull_request' - uses: actions/upload-artifact@v4 - with: - name: loose - path: .artifacts/loose - - - name: Build EarTrumpet appinstaller/sideload package - if: matrix.channel == 'AppInstaller' || matrix.channel == 'Chocolatey' - shell: cmd - run: msbuild EarTrumpet.Package/EarTrumpet.Package.wapproj /p:Platform=x86 /p:Configuration=Release /p:msixbundle=Always /p:Channel=${{ matrix.channel }} /p:AppxPackageDir=..\.artifacts\sideload\ /p:AppxPackageSigningEnabled=false /p:UapAppxPackageBuildMode=SideloadOnly /p:GenerateAppInstallerFile=true /p:AppxPackageTestDir=..\.artifacts\sideload\ /p:AppInstallerUri="https://install.eartrumpet.app" -maxcpucount - - - name: Adjust appinstaller manifest - if: - matrix.channel == 'AppInstaller' && github.event_name != - 'pull_request' - shell: powershell - run: | - $manifestPath = ".artifacts/sideload/EarTrumpet.Package.appinstaller" - $manifest = [xml](Get-Content $manifestPath) - $manifest.AppInstaller.Uri = "https://install.eartrumpet.app/${{ steps.gitversion.outputs.branchName }}/EarTrumpet.Package.appinstaller" - $manifest.AppInstaller.MainBundle.Uri = "https://install.eartrumpet.app/${{ steps.gitversion.outputs.branchName }}/EarTrumpet.Package_${{ steps.gitversion.outputs.majorMinorPatch }}.${{ steps.gitversion.outputs.commitsSinceVersionSource }}_x86_x64_arm64.msixbundle" - $manifest.AppInstaller.MainBundle.Publisher = "${{ matrix.publisher }}" - - $fragment = [xml]'' - $manifest.AppInstaller.InsertAfter($manifest.ImportNode($fragment.AppInstaller.Dependencies, $true), $manifest.AppInstaller.MainBundle) - - $manifest.Save($manifestPath) - - - name: Upload appinstaller/sideload package artifacts - if: - matrix.channel == 'AppInstaller' && github.event_name != - 'pull_request' - uses: actions/upload-artifact@v4 - with: - name: sideload - path: .artifacts/sideload - - - name: Fix up PDPs - if: matrix.channel == 'Store' && github.event_name != 'pull_request' - shell: pwsh - run: | - Set-Location packaging\MicrosoftStore\PDPs - Get-ChildItem | ForEach-Object { - $locale = $_.Name - $pdp = [xml](Get-Content "$locale\pdp.xml") - $pdp.ProductDescription.language = $locale - $pdp.ProductDescription.lang = $locale - $pdp.ProductDescription - $pdp.Save((Resolve-Path "$locale\pdp.xml")) - } - - - name: Stage chocolatey packaging metadata - if: - matrix.channel == 'Chocolatey' && github.event_name != 'pull_request' - shell: powershell - run: | - Copy-Item .chocolatey\* -Recurse ".artifacts\chocolatey\" - - - name: Upload chocolatey artifacts - if: matrix.channel == 'Chocolatey' && github.event_name != 'pull_request' - uses: actions/upload-artifact@v4 - with: - name: chocolatey - path: .artifacts/chocolatey - outputs: - version: ${{ steps.metadata.outputs.version }} - release: - needs: build - runs-on: windows-2019 - if: github.event_name != 'pull_request' - strategy: - matrix: - channel: [AppInstaller, Store, Chocolatey] - max-parallel: 3 - env: - AZURE_TENANT_ID: ${{ secrets.azure_tenant_id }} - AZURE_CLIENT_ID: ${{ secrets.azure_client_id }} - AZURE_CLIENT_SECRET: ${{ secrets.azure_client_secret }} - steps: - - name: Download all artifacts - uses: actions/download-artifact@v4 - with: - path: .artifacts - - - name: Install NuGet - uses: NuGet/setup-nuget@v1 - with: - nuget-version: latest - - - name: Install Build Tools - run: nuget install Microsoft.Windows.SDK.BuildTools - - - name: Install Azure Codesigning - shell: pwsh - env: - ACS_PACKAGE_URI: ${{ secrets.acs_package_uri }} - ACS_METADATA_URI: ${{ secrets.acs_metadata_uri }} - GITHUB_RUN_ID: ${{ github.run_id }} - run: | - Invoke-WebRequest $env:ACS_PACKAGE_URI -UseBasicParsing -OutFile package.zip - Expand-Archive package.zip -DestinationPath acs - Invoke-WebRequest $env:ACS_METADATA_URI -UseBasicParsing -OutFile acs\metadata.json - - - name: Sign and repackage Store artifacts - if: matrix.channel == 'Store' - shell: pwsh - run: | - ls .artifacts\Msixupload - $MsixUploadPath = ".artifacts\Msixupload" - $ExtractedPath = "$env:TEMP\Extracted" - $SignedPath = ".artifacts\Signed" - - $Version = [Version]"${{ needs.build.outputs.version }}" - $MsixBundleFilename = "EarTrumpet.Package_${Version}_x86_x64_arm64.msixbundle" - $MsixUploadFilename = "EarTrumpet.Package_${Version}_x86_x64_arm64_bundle.msixupload" - $MsixUploadFilePath = "$MsixUploadPath\$MsixUploadFilename" - - ### Prepare output directories - New-Item -ItemType Directory "$SignedPath" - New-Item -ItemType Directory "$SignedPath\Package" - New-Item -ItemType Directory "$SignedPath\Bundle" - New-Item -ItemType Directory "$SignedPath\Msixupload" - - ### Expand msixupload and msixbundle - Expand-Archive $MsixUploadFilePath "$ExtractedPath\msixupload" # Outputs *.appxsym, .msixbundle - Expand-Archive "$ExtractedPath\msixupload\$MsixBundleFilename" "$ExtractedPath\bundle" # Outputs arch-specific and neutral *.msix packages - - foreach ($arch in @("x86", "x64", "arm64")) { - $ExtractedPathWithArch = "$ExtractedPath\$arch" - $AppxSymFilename = "EarTrumpet.Package_${Version}_${arch}.appxsym" - $MsixFilename = "EarTrumpet.Package_${Version}_${arch}.msix" - - ### Expand symbols and app package - Expand-Archive "$ExtractedPath\msixupload\$AppxSymFilename" "$ExtractedPathWithArch\Symbols" - Expand-Archive "$ExtractedPath\bundle\$MsixFilename" "$ExtractedPathWithArch\Package" - - ### Place symbols next to executable image - Copy-Item "$ExtractedPathWithArch\Symbols\EarTrumpet.pdb" "$ExtractedPathWithArch\Package\EarTrumpet\" - - ### Sign executable image - & (Resolve-Path "Microsoft.Windows.SDK.BuildTools.*\bin\*\x64\signtool.exe") sign /v /fd SHA256 /td SHA256 /tr http://timestamp.acs.microsoft.com /dlib "acs\bin\x64\Azure.CodeSigning.Dlib.dll" /dmdf "acs\metadata.json" "$ExtractedPathWithArch\Package\EarTrumpet\EarTrumpet.exe" - - ### Repackage app - & "C:\Program Files (x86)\Windows Kits\10\bin\10.0.17763.0\x86\makeappx.exe" pack /l /h sha256 /d "$ExtractedPathWithArch\Package" /o /p "$SignedPath\Package\$MsixFilename" - Set-ItemProperty "$SignedPath\Package\$MsixFilename" -Name IsReadOnly -Value $true - } - - ### Copy remaining neutral packages - Copy-Item "$ExtractedPath\bundle\*.msix" "$SignedPath\Package\" -ErrorAction Ignore - - ### Rebundle packages - & "C:\Program Files (x86)\Windows Kits\10\bin\10.0.17763.0\x86\makeappx.exe" bundle /d "$SignedPath\Package" /bv $Version /o /p "$SignedPath\bundle\$MsixBundleFilename" - - ### Recreate msixupload - Copy-Item "$ExtractedPath\msixupload\*.appxsym" "$SignedPath\Bundle" - Compress-Archive -Path "$SignedPath\Bundle\*" -DestinationPath "$SignedPath\msixupload\$MsixUploadFilename" -CompressionLevel Optimal - - - - name: Sign AppInstaller artifacts - if: matrix.channel == 'AppInstaller' - shell: pwsh - run: | - $SideloadPath = ".artifacts\Sideload" - $SignedPath = ".artifacts\Signed" - - $Version = [Version]"${{ needs.build.outputs.version }}" - $MsixBundleFilename = "EarTrumpet.Package_${Version}_x86_x64_arm64.msixbundle" - $MsixBundleFilePath = "$SideloadPath\$MsixBundleFilename" - $AppInstallerFilePath = "$SideloadPath\EarTrumpet.Package.appinstaller" - cat $AppInstallerFilePath - ### Prepare output directories - New-Item -ItemType Directory "$SignedPath" - New-Item -ItemType Directory "$SignedPath\Package" - New-Item -ItemType Directory "$SignedPath\Bundle" - New-Item -ItemType Directory "$SignedPath\Sideload" - - ### Expand msixbundle - $ExtractedPath = "$env:TEMP\Extracted" - Expand-Archive $MsixBundleFilePath "$ExtractedPath\Bundle" - - foreach ($arch in @("x86", "x64", "arm64")) { - $ExtractedPathWithArch = "$ExtractedPath\$arch" - $AppxSymFilename = "EarTrumpet.Package_${Version}_${arch}.appxsym" - $MsixFilename = "EarTrumpet.Package_${Version}_${arch}.msix" - - ### Expand symbols and app package - Expand-Archive "$SideloadPath\$AppxSymFilename" "$ExtractedPathWithArch\Symbols" - Expand-Archive "$ExtractedPath\Bundle\$MsixFilename" "$ExtractedPathWithArch\Package" - - ### Place symbols next to executable image - Copy-Item "$ExtractedPathWithArch\Symbols\EarTrumpet.pdb" "$ExtractedPathWithArch\Package\EarTrumpet\" - - ### Sign executable image - & (Resolve-Path "Microsoft.Windows.SDK.BuildTools.*\bin\*\x64\signtool.exe") sign /v /fd SHA256 /td SHA256 /tr http://timestamp.acs.microsoft.com /dlib "acs\bin\x64\Azure.CodeSigning.Dlib.dll" /dmdf "acs\metadata.json" "$ExtractedPathWithArch\Package\EarTrumpet\EarTrumpet.exe" - - ### Repackage app - & "C:\Program Files (x86)\Windows Kits\10\bin\10.0.17763.0\x86\makeappx.exe" pack /l /h sha256 /d "$ExtractedPathWithArch\Package" /o /p "$SignedPath\Package\$MsixFilename" - Set-ItemProperty "$SignedPath\Package\$MsixFilename" -Name IsReadOnly -Value $true - } - - ### Copy remaining neutral packages - Copy-Item "$ExtractedPath\bundle\*.msix" "$SignedPath\Package\" -ErrorAction Ignore - - ### Copy appinstaller manifest - Copy-Item $AppInstallerFilePath "$SignedPath\Bundle\" - - ### Rebundle packages - & "C:\Program Files (x86)\Windows Kits\10\bin\10.0.17763.0\x86\makeappx.exe" bundle /d "$SignedPath\Package" /bv $Version /o /p "$SignedPath\Bundle\$MsixBundleFilename" - - ### Sign appx bundle - & (Resolve-Path "Microsoft.Windows.SDK.BuildTools.*\bin\*\x64\signtool.exe") sign /v /fd SHA256 /td SHA256 /tr http://timestamp.acs.microsoft.com /dlib "acs\bin\x64\Azure.CodeSigning.Dlib.dll" /dmdf "acs\metadata.json" "$SignedPath\Bundle\$MsixBundleFilename" - - - name: Sign and repackage Chocolatey artifacts - if: matrix.channel == 'Chocolatey' - shell: pwsh - run: | - $LooseFilesPath = ".artifacts\loose" - - ### Sign executable image - & (Resolve-Path "Microsoft.Windows.SDK.BuildTools.*\bin\*\x64\signtool.exe") sign /v /fd SHA256 /td SHA256 /tr http://timestamp.acs.microsoft.com /dlib "acs\bin\x64\Azure.CodeSigning.Dlib.dll" /dmdf "acs\metadata.json" "$LooseFilesPath\EarTrumpet.exe" - - ### Package for release - Compress-Archive -Path "$LooseFilesPath\*" -DestinationPath ".artifacts\chocolatey\tools\release.zip" -CompressionLevel Optimal - - - name: Adjust nuspec - if: matrix.channel == 'Chocolatey' - shell: pwsh - run: | - $Version = [Version]"${{ needs.build.outputs.version }}" - $NuspecPath = ".artifacts\chocolatey\eartrumpet.nuspec" - - $nuspec = [xml](Get-Content -Path $NuspecPath) - $nuspec.package.metadata.version = $Version - $nuspec.Save($NuspecPath) - - - name: Create chocolatey package - if: matrix.channel == 'Chocolatey' - shell: powershell - run: | - choco pack ".artifacts\chocolatey\eartrumpet.nuspec" --out ".artifacts\chocolatey" - - - name: Upload chocolatey artifact - if: matrix.channel == 'Chocolatey' - uses: actions/upload-artifact@v4 - with: - name: chocolatey-package - path: .artifacts/chocolatey/*.nupkg - - - name: Install OpenSSH FOD - if: matrix.channel == 'AppInstaller' || matrix.channel == 'Store' - shell: powershell - run: | - Set-Service -Name wuauserv -StartupType Manual - Start-Service -Name wuauserv - Add-WindowsCapability -Online -Name OpenSSH.Server~~~~0.0.1.0 - - - name: Push release to Partner Center via StoreBroker - if: matrix.channel == 'Store' - shell: powershell - run: | - Set-PSRepository -Name "PSGallery" -InstallationPolicy Trusted - Install-Module -Name StoreBroker - - $Password = ConvertTo-SecureString '${{ secrets.partnercenter_clientkey }}' -AsPlainText -Force - $Credentials = New-Object System.Management.Automation.PSCredential ('${{ secrets.partnercenter_clientid }}', $Password) - Set-StoreBrokerAuthentication -TenantId '${{ secrets.partnercenter_tenantid }}' -Credential $Credentials -Verbose - - $SubmissionRoot = "$env:TEMP\Packaging\Submission" - $Version = [Version]"${{ needs.build.outputs.version }}" - $MsixUpload = "EarTrumpet.Package_${Version}_x86_x64_arm64_bundle.msixupload" - - New-SubmissionPackage -ConfigPath "Packaging\MicrosoftStore\SBConfig.json" -PDPRootPath "Packaging\MicrosoftStore\PDPs" -ImagesRootPath "Packaging\MicrosoftStore\PDPs" -AppxPath ".artifacts\signed\msixupload\$MsixUpload" -MediaFallbackLanguage en-US -OutPath "$SubmissionRoot" -OutName EarTrumpet -Verbose - $submissionId, $submissionUrl = Update-ApplicationSubmission -AppId "${{ secrets.partnercenter_appid }}" -SubmissionDataPath "$SubmissionRoot\EarTrumpet.json" -PackagePath "$SubmissionRoot\EarTrumpet.zip" -AddPackages -UpdateListings -UpdatePublishModeAndVisibility -UpdatePricingAndAvailability -UpdateAppProperties -UpdateNotesForCertification -TargetPublishMode Manual -Force -Verbose - Complete-ApplicationSubmission -AppId "${{ secrets.partnercenter_appid }}" -SubmissionId $submissionId -Verbose diff --git a/EarTrumpet.sln b/EarTrumpet.sln index 32458ff3e..11aee4e42 100644 --- a/EarTrumpet.sln +++ b/EarTrumpet.sln @@ -3,8 +3,6 @@ Microsoft Visual Studio Solution File, Format Version 12.00 # Visual Studio Version 17 VisualStudioVersion = 17.0.32014.148 MinimumVisualStudioVersion = 10.0.40219.1 -Project("{C7167F0D-BC9F-4E6E-AFE1-012C56B48DB5}") = "EarTrumpet.Package", "EarTrumpet.Package\EarTrumpet.Package.wapproj", "{EA5510ED-F014-4587-A505-64C59D5B2627}" -EndProject Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution Items", "{8F56ECD6-00C6-4C4A-AB1F-C01ED14EF53B}" ProjectSection(SolutionItems) = preProject CHANGELOG.md = CHANGELOG.md @@ -38,33 +36,6 @@ Global VSDebug|x86 = VSDebug|x86 EndGlobalSection GlobalSection(ProjectConfigurationPlatforms) = postSolution - {EA5510ED-F014-4587-A505-64C59D5B2627}.Debug|ARM64.ActiveCfg = Debug|ARM64 - {EA5510ED-F014-4587-A505-64C59D5B2627}.Debug|ARM64.Build.0 = Debug|ARM64 - {EA5510ED-F014-4587-A505-64C59D5B2627}.Debug|ARM64.Deploy.0 = Debug|ARM64 - {EA5510ED-F014-4587-A505-64C59D5B2627}.Debug|x64.ActiveCfg = Debug|x64 - {EA5510ED-F014-4587-A505-64C59D5B2627}.Debug|x64.Build.0 = Debug|x64 - {EA5510ED-F014-4587-A505-64C59D5B2627}.Debug|x64.Deploy.0 = Debug|x64 - {EA5510ED-F014-4587-A505-64C59D5B2627}.Debug|x86.ActiveCfg = Debug|x86 - {EA5510ED-F014-4587-A505-64C59D5B2627}.Debug|x86.Build.0 = Debug|x86 - {EA5510ED-F014-4587-A505-64C59D5B2627}.Debug|x86.Deploy.0 = Debug|x86 - {EA5510ED-F014-4587-A505-64C59D5B2627}.Release|ARM64.ActiveCfg = Release|ARM64 - {EA5510ED-F014-4587-A505-64C59D5B2627}.Release|ARM64.Build.0 = Release|ARM64 - {EA5510ED-F014-4587-A505-64C59D5B2627}.Release|ARM64.Deploy.0 = Release|ARM64 - {EA5510ED-F014-4587-A505-64C59D5B2627}.Release|x64.ActiveCfg = Release|x64 - {EA5510ED-F014-4587-A505-64C59D5B2627}.Release|x64.Build.0 = Release|x64 - {EA5510ED-F014-4587-A505-64C59D5B2627}.Release|x64.Deploy.0 = Release|x64 - {EA5510ED-F014-4587-A505-64C59D5B2627}.Release|x86.ActiveCfg = Release|x86 - {EA5510ED-F014-4587-A505-64C59D5B2627}.Release|x86.Build.0 = Release|x86 - {EA5510ED-F014-4587-A505-64C59D5B2627}.Release|x86.Deploy.0 = Release|x86 - {EA5510ED-F014-4587-A505-64C59D5B2627}.VSDebug|ARM64.ActiveCfg = Debug|ARM64 - {EA5510ED-F014-4587-A505-64C59D5B2627}.VSDebug|ARM64.Build.0 = Debug|ARM64 - {EA5510ED-F014-4587-A505-64C59D5B2627}.VSDebug|ARM64.Deploy.0 = Debug|ARM64 - {EA5510ED-F014-4587-A505-64C59D5B2627}.VSDebug|x64.ActiveCfg = Debug|x64 - {EA5510ED-F014-4587-A505-64C59D5B2627}.VSDebug|x64.Build.0 = Debug|x64 - {EA5510ED-F014-4587-A505-64C59D5B2627}.VSDebug|x64.Deploy.0 = Debug|x64 - {EA5510ED-F014-4587-A505-64C59D5B2627}.VSDebug|x86.ActiveCfg = Debug|x86 - {EA5510ED-F014-4587-A505-64C59D5B2627}.VSDebug|x86.Build.0 = Debug|x86 - {EA5510ED-F014-4587-A505-64C59D5B2627}.VSDebug|x86.Deploy.0 = Debug|x86 {DF42BC76-DFB5-41C2-9308-1A1F13A66A38}.Debug|ARM64.ActiveCfg = Debug|ARM64 {DF42BC76-DFB5-41C2-9308-1A1F13A66A38}.Debug|ARM64.Build.0 = Debug|ARM64 {DF42BC76-DFB5-41C2-9308-1A1F13A66A38}.Debug|x64.ActiveCfg = Debug|x64