Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
WinUI projeleri için sürekli tümleştirme derlemeleri ayarlamak için GitHub Actions'ı kullanabilirsiniz. Bu makalede, bunu yapmanın farklı yollarını inceleyeceğiz. Ayrıca, diğer tüm derleme sistemleriyle tümleştirebilmeniz için komut satırını kullanarak bu görevleri nasıl gerçekleştirebileceğinizi de göstereceğiz.
Önkoşullar
- Tek projeli bir MSIX WinUI uygulamasıyla başlayın veya projenizi tek projeli MSIX kullanacak şekilde geçirin.
- GitHub kaydolun ve bir depo oluşturun , henüz yapmadıysanız.
1. Adım: Sertifikanızı ayarlama
MSIX uygulamalarının yüklenebilmesi için oturum açması gerekir. Zaten bir sertifikanız varsa bu adımı atlayabilirsiniz. Uygulamanızı Visual Studio'da açıp WinUI projenize sağ tıklayıp Paketle ve Yayımla ->Uygulama Paketleri Oluştur'u seçerek kolayca bir test sertifikası oluşturabilirsiniz.
Sonraki seçeneğine tıklayın, ardından İmzalama yöntemini seçin sayfasına gidin ve yeni bir sertifika oluşturmak için Oluştur... düğmesine tıklayın. Yayımcı adını seçin, parola alanını boş bırakın ve sertifikayı oluşturun.
Ardından, iletişim kutularını kapatın/iptal edin ve projenizde yeni bir .pfx dosyası oluşturulduğuna dikkat edin. Bu, MSIX'inizi imzalayabileceğiniz sertifikadır!
2. Adım: Sertifikanızı İşlemler gizli bilgilerine ekleyin
Mümkünse deponuza sertifika göndermekten kaçınmanız gerekir ve Git bunları varsayılan olarak yoksayar. GitHub, sertifikalar gibi hassas dosyaların güvenli bir şekilde işlenmesini yönetmek için gizli dizileri destekler.
Otomasyonlu derlemeniz için bir sertifikayı yüklemek amacıyla:
- Sertifikanızı Temel 64 dizesi olarak kodlayın: PowerShell'i sertifikanızı içeren dizine açın ve aşağıdaki komutu yürüterek pfx dosya adını sertifikanızın dosya adıyla değiştirin.
$pfx_cert = Get-Content 'App1_TemporaryKey.pfx' -AsByteStream
[System.Convert]::ToBase64String($pfx_cert) | Out-File 'App1_TemporaryKey_Base64.txt'
- GitHub deponuzda Ayarlar sayfasına gidin ve soldaki Gizli bilgiler kısmına tıklayın.
- Yeni Depo Sırrı Oluştur'a tıklayın, bunu adlandırın, ardından PowerShell çıktısındaki metin dosyasındaki metni kopyalayıp gizli değerine yapıştırın.
3. Adım: İş akışınızı ayarlama
Ardından, deponuzda Eylemler sekmesine gidin ve yeni bir iş akışı oluşturun. İş akışı şablonlarından biri yerine iş akışını kendiniz ayarlama seçeneğini belirleyin.
Aşağıdakileri iş akışı dosyanıza kopyalayıp yapıştırın ve ardından güncelleştirin...
- Solution_Name çözümünüzün adı için
-
dotnet-version to
8.0.x(veya projenizin hedeflediği .NET sürüm)
Uyarı
Yapıtın karşıya yüklenmesi adımı için (aşağıdaki son adım), derleme çıktısı çözümünüzü içeren bir klasörde değilse, env.Solution_Name'ı github.workspace ile değiştirin (GitHub Actions Çalışma Alanı klasörü).
# This workflow will build, sign, and package a WinUI MSIX desktop application
# built on .NET.
name: WinUI MSIX app
on:
push:
branches: [ main ]
pull_request:
branches: [ main ]
jobs:
build:
strategy:
matrix:
configuration: [Release]
platform: [x64, x86]
runs-on: windows-latest # For a list of available runner types, refer to
# https://help.github.com/en/actions/reference/workflow-syntax-for-github-actions#jobsjob_idruns-on
env:
Solution_Name: your-solution-name # Replace with your solution name, i.e. App1.sln.
steps:
- name: Checkout
uses: actions/checkout@v4
with:
fetch-depth: 0
# Install the .NET workload
- name: Install .NET
uses: actions/setup-dotnet@v4
with:
dotnet-version: 8.0.x
# 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 the application
run: msbuild $env:Solution_Name /t:Restore /p:Configuration=$env:Configuration
env:
Configuration: ${{ matrix.configuration }}
# Decode the base 64 encoded pfx and save the Signing_Certificate
- name: Decode the pfx
run: |
$pfx_cert_byte = [System.Convert]::FromBase64String("${{ secrets.BASE64_ENCODED_PFX }}")
$certificatePath = "GitHubActionsWorkflow.pfx"
[IO.File]::WriteAllBytes("$certificatePath", $pfx_cert_byte)
# Create the app package by building and packaging the project
- name: Create the app package
run: msbuild $env:Solution_Name /p:Configuration=$env:Configuration /p:Platform=$env:Platform /p:UapAppxPackageBuildMode=$env:Appx_Package_Build_Mode /p:AppxBundle=$env:Appx_Bundle /p:PackageCertificateKeyFile=GitHubActionsWorkflow.pfx /p:AppxPackageDir="$env:Appx_Package_Dir" /p:GenerateAppxPackageOnBuild=true
env:
Appx_Bundle: Never
Appx_Package_Build_Mode: SideloadOnly
Appx_Package_Dir: Packages\
Configuration: ${{ matrix.configuration }}
Platform: ${{ matrix.platform }}
# Remove the pfx
- name: Remove the pfx
run: Remove-Item -path GitHubActionsWorkflow.pfx
# Upload the MSIX package: https://github.com/marketplace/actions/upload-a-build-artifact
- name: Upload MSIX package
uses: actions/upload-artifact@v4
with:
name: MSIX Package - ${{ matrix.platform }}
path: ${{ env.Solution_Name }}\\Packages
4. Adım: İş akışını işleyin ve çalışmasını izleyin!
İş akışı dosyasını ana dalınıza işleyin ve gitHub deponuzdaki Eylemler sekmesine gidin ve iş akışınızın çalışmasını izleyin! Başarıyla çalışması ve derlenmiş MSIX uygulamanızı içeren yapıtlar üretmesi gerekir.
Komut satırından oluşturma
Çözümünüzü komut satırını veya başka bir CI sistemini kullanarak oluşturmak istiyorsanız, MSBuild'i bu bağımsız değişkenlerle çalıştırın.
GenerateAppxPackageOnBuild özelliği MSIX paketinin oluşturulmasına neden olur.
/p:AppxPackageDir="Packages"
/p:UapAppxPackageBuildMode=SideloadOnly
/p:AppxBundle=Never
/p:GenerateAppxPackageOnBuild=true
1. Adım: İş akışınızı ayarlama
GitHub deponuzda Eylemler sekmesine gidin ve yeni bir iş akışı oluşturun. İş akışı şablonlarından biri yerine iş akışını kendiniz ayarlama seçeneğini belirleyin.
Aşağıdakileri iş akışı dosyanıza kopyalayıp yapıştırın ve ardından güncelleştirin...
- Solution_Name çözümünüzün adı için
-
dotnet-version to
8.0.x(veya projenizin hedeflediği .NET sürüm)
Uyarı
Yapıtın karşıya yüklenmesi adımı için (aşağıdaki son adım), derleme çıktısı çözümünüzü içeren bir klasörde değilse, env.Solution_Name'ı github.workspace ile değiştirin (GitHub Actions Çalışma Alanı klasörü).
# This workflow will build and publish a WinUI unpackaged desktop application
# built on .NET.
name: WinUI unpackaged app
on:
push:
branches: [ main ]
pull_request:
branches: [ main ]
jobs:
build:
strategy:
matrix:
configuration: [Release]
platform: [x64, x86]
runs-on: windows-latest # For a list of available runner types, refer to
# https://help.github.com/en/actions/reference/workflow-syntax-for-github-actions#jobsjob_idruns-on
env:
Solution_Name: your-solution-name # Replace with your solution name, i.e. App1.sln.
steps:
- name: Checkout
uses: actions/checkout@v4
with:
fetch-depth: 0
# Install the .NET workload
- name: Install .NET
uses: actions/setup-dotnet@v4
with:
dotnet-version: 8.0.x
# 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 the application
run: msbuild $env:Solution_Name /t:Restore /p:Configuration=$env:Configuration
env:
Configuration: ${{ matrix.configuration }}
# Create the app by building and publishing the project
- name: Create the app
run: msbuild $env:Solution_Name /t:Publish /p:Configuration=$env:Configuration /p:Platform=$env:Platform
env:
Configuration: ${{ matrix.configuration }}
Platform: ${{ matrix.platform }}
# Upload the app
- name: Upload app
uses: actions/upload-artifact@v4
with:
name: Upload app - ${{ matrix.platform }}
path: ${{ env.Solution_Name }}\\bin
2. Adım: İş akışını işleyin ve çalışmasını izleyin!
İş akışı dosyasını ana dalınıza işleyin ve gitHub deponuzdaki Eylemler sekmesine gidin ve iş akışınızın çalışmasını izleyin! Başarıyla çalışması ve yerleşik uygulamanızı içeren yapıtlar üretmesi gerekir.
Komut satırından oluşturma
Çözümünüzü komut satırını veya başka bir CI sistemini kullanarak oluşturmak istiyorsanız, MSBuild'i /t:Publish bağımsız değişkeniyle çalıştırın.
Azure Pipelines
Ekibiniz Azure DevOps kullanıyorsa, Azure Pipelines ile WinUI 3 uygulamaları oluşturabilirsiniz. Aşağıdaki YAML işlem hattı, bir Windows aracısı üzerinde paketlenmiş bir MSIX WinUI uygulaması oluşturur:
trigger:
- main
pool:
vmImage: 'windows-latest'
variables:
solution: '**/*.sln'
buildPlatform: 'x64'
buildConfiguration: 'Release'
steps:
- task: UseDotNet@2
displayName: 'Install .NET SDK'
inputs:
packageType: 'sdk'
version: '8.0.x'
- task: NuGetToolInstaller@1
- task: NuGetCommand@2
inputs:
restoreSolution: '$(solution)'
- task: VSBuild@1
displayName: 'Build MSIX package'
inputs:
solution: '$(solution)'
platform: '$(buildPlatform)'
configuration: '$(buildConfiguration)'
msbuildArgs: |
/p:AppxBundlePlatforms="$(buildPlatform)"
/p:AppxPackageDir="$(Build.ArtifactStagingDirectory)\AppxPackages\\"
/p:AppxBundle=Never
/p:UapAppxPackageBuildMode=SideloadOnly
/p:GenerateAppInstallerFile=false
- task: PublishBuildArtifacts@1
displayName: 'Publish MSIX artifacts'
inputs:
PathtoPublish: '$(Build.ArtifactStagingDirectory)\AppxPackages'
ArtifactName: 'msix-package'
Uyarı
Paketlenmemiş derlemeler için `/p:Appx*` MSBuild bağımsız değişkenlerini kaldırın ve `VSBuild` yerine `dotnet publish` kullanın. Ayrıntılar için yukarıdaki komut satırı bölümüne bakın.
MSIX paketlerini bir işlem hattında imzalamak için sertifikanızı güvenli dosyalar Azure Pipelines depolayın ve derleme sırasında erişmek için DownloadSecureFile görevini kullanın.
Important
İmzalama sertifikalarını veya parolalarını hiçbir zaman kaynak denetiminde depolamayın. Sertifika parolası için işlem hattı gizli değişkenlerini, sertifikanın kendisi içinse Azure Pipelines Secure Files özelliğini kullanın.
Windows developer