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.
Aşağıdaki tabloda, derleme işlem hattınızı ayarlamak için tanımlayabileceğiniz farklı MSBuild bağımsız değişkenleri listelenmiştir.
| MSBuild bağımsız değişkeni | Değer | Açıklama |
|---|---|---|
| AppxPackageDir | $(Build.ArtifactStagingDirectory)\AppxPackages | Oluşturulan yapıtları depolamak için klasörü tanımlar. |
| AppxBundlePlatforms | $(Build.BuildPlatform) | Pakete eklenecek platformları tanımlamanızı sağlar. |
| AppxBundle | Her zaman | Belirtilen platform için .msix/.appx dosyalarıyla bir .msixbundle/.appxbundle oluşturur. |
| UapAppxPaketİnşaModu | StoreUpload | Dışarıdan yükleme için .msixupload/.appxupload dosyasını ve _Test klasörünü oluşturur. |
| UapAppxPaketİnşaModu | CI | Yalnızca .msixupload/.appxupload dosyasını oluşturur. |
| UapAppxPaketİnşaModu | SideloadOnly | Yalnızca dışarıdan yükleme için _Test klasörünü oluşturur. |
| AppxPackageSigningEnabled | doğru | Paket imzalamayı etkinleştirir. |
| PaketSertifikasıParmakİzi | Sertifika Parmak İzi | Bu değer, imzalama sertifikasındaki parmak iziyle eşleşmeli veya boş bir dize olmalıdır. |
| Paket Sertifikası Anahtar Dosyası | Yol | Kullanılacak sertifikanın yolu. Bu, güvenli dosya meta verilerinden alınır. |
| Paket Sertifika Şifresi | Şifre | Sertifikadaki özel anahtarın parolası. Parolanızı Azure Key Vault'ta depolamanızı ve parolayı değişken grubuna bağlamanızı öneririz. Değişkeni bu bağımsız değişkene aktarabilirsiniz. |
Paketleme projesini Visual Studio'daki sihirbazın MSBuild komut satırını kullandığı gibi derlemeden önce, derleme işlemi Package.appxmanifest dosyasındaki Package öğesinin Version özniteliğini düzenleyerek oluşturulan MSIX paketini sürüme alabilir. Azure Pipelines'da bu, her derleme için artırılan bir sayaç değişkenini belirlemek amacıyla bir ifade ve .NET'te System.Xml.Linq.XDocument sınıfını kullanarak özniteliğin değerini değiştiren bir PowerShell betiği yardımıyla elde edilebilir.
MSIX Derleme İşlem Hattı'nı tanımlayan örnek YAML Dosyası
pool:
vmImage: windows-2019
variables:
buildPlatform: 'x86'
buildConfiguration: 'release'
major: 1
minor: 0
build: 0
revision: $[counter('rev', 0)]
steps:
- powershell: |
# Update appxmanifest. This must be done before the build.
[xml]$manifest= get-content ".\Msix\Package.appxmanifest"
$manifest.Package.Identity.Version = "$(major).$(minor).$(build).$(revision)"
$manifest.save("Msix/Package.appxmanifest")
displayName: 'Version Package Manifest'
- task: MSBuild@1
inputs:
solution: Msix/Msix.wapproj
platform: $(buildPlatform)
configuration: $(buildConfiguration)
msbuildArguments: '/p:OutputPath=NonPackagedApp
/p:UapAppxPackageBuildMode=SideLoadOnly /p:AppxBundle=Never /p:AppxPackageOutput=$(Build.ArtifactStagingDirectory)\MsixDesktopApp.msix /p:AppxPackageSigningEnabled=false'
displayName: 'Package the App'
- task: DownloadSecureFile@1
inputs:
secureFile: 'certificate.pfx'
displayName: 'Download Secure PFX File'
- script: '"C:\Program Files (x86)\Windows Kits\10\bin\10.0.17763.0\x86\signtool"
sign /fd SHA256 /f $(Agent.TempDirectory)/certificate.pfx /p secret $(
Build.ArtifactStagingDirectory)/MsixDesktopApp.msix'
displayName: 'Sign MSIX Package'
- task: PublishBuildArtifacts@1
displayName: 'Publish Artifact: drop'
YAMl dosyasında tanımlanan farklı Derleme görevlerinin dökümleri aşağıdadır:
Paket oluşturma özelliklerini yapılandırma
Aşağıdaki tanım, Build bileşenlerinin ve platformun dizinini ayarlar ve bir paket oluşturulup oluşturulmayacağını tanımlar.
/p:AppxPackageDir="$(Build.ArtifactStagingDirectory)\AppxPackages\"
/p:UapAppxPackageBuildMode=SideLoadOnly
/p:AppxBundlePlatforms="$(Build.BuildPlatform)"
/p:AppxBundle=Never
Paket imzalamayı yapılandırma
MSIX (veya APPX) paketini imzalamak için işlem hattının imzalama sertifikasını alması gerekir. Bunu yapmak için, VSBuild görevinden önce bir DownloadSecureFile görevi ekleyin.
Bu, signingCert aracılığıyla imzalama sertifikasına erişmenizi sağlayacaktır.
- task: DownloadSecureFile@1
name: signingCert
displayName: 'Download CA certificate'
inputs:
secureFile: '[Your_Pfx].pfx'
Ardından, MSBuild görevini imzalama sertifikasına başvuracak şekilde güncelleştirin:
- task: MSBuild@1
inputs:
platform: 'x86'
solution: '$(solution)'
configuration: '$(buildConfiguration)'
msbuildArgs: '/p:AppxBundlePlatforms="$(buildPlatform)"
/p:AppxPackageDir="$(appxPackageDir)"
/p:AppxBundle=Never
p:UapAppxPackageBuildMode=SideLoadOnly
/p:AppxPackageSigningEnabled=true
/p:PackageCertificateThumbprint=""
/p:PackageCertificateKeyFile="$(signingCert.secureFilePath)"'
Uyarı
PackageCertificateThumbprint bağımsız değişkeni, önlem olarak kasıtlı olarak boş bir dizeye ayarlanır. Parmak izi projede ayarlanmışsa ancak imzalama sertifikasıyla eşleşmiyorsa, derleme şu hatayla başarısız olur: Certificate does not match supplied signing thumbprint.
Parametreleri gözden geçirme
Söz dizimi ile $() tanımlanan parametreler, derleme tanımında tanımlanan değişkenlerdir ve diğer derleme sistemlerinde değişir.
Önceden tanımlanmış tüm değişkenleri görüntülemek için bkz. Önceden tanımlanmış derleme değişkenleri.
Derleme Yapıtlarını Yayımla görevini yapılandırma
Varsayılan MSIX işlem hattı, oluşturulan yapıtları kaydetmez. YAML tanımınıza yayımlama özelliklerini eklemek için aşağıdaki görevleri ekleyin.
- task: CopyFiles@2
displayName: 'Copy Files to: $(build.artifactstagingdirectory)'
inputs:
SourceFolder: '$(system.defaultworkingdirectory)'
Contents: '**\bin\$(BuildConfiguration)\**'
TargetFolder: '$(build.artifactstagingdirectory)'
- task: PublishBuildArtifacts@1
displayName: 'Publish Artifact: drop'
inputs:
PathtoPublish: '$(build.artifactstagingdirectory)'
Oluşturulan yapıtları derleme sonuçları sayfasının Yapıtlar seçeneğinde görebilirsiniz.
Mağaza dışı dağıtım için AppInstaller dosyası
Uygulamanızı Mağaza dışında dağıtıyorsanız, paket yüklemeniz ve güncelleştirmeleriniz için AppInstaller dosyasından yararlanabilirsiniz
\server\foo üzerinde Güncelleştirilmiş Dosyaları Arayabilecek Bir .appinstaller Dosyası
<?xml version="1.0" encoding="utf-8"?>
<AppInstaller xmlns="http://schemas.microsoft.com/appx/appinstaller/2018"
Version="1.0.0.0"
Uri="\\server\foo\MsixDesktopApp.appinstaller">
<MainPackage Name="MyCompany.MySampleApp"
Publisher="CN=MyCompany, O=MyCompany, L=Stockholm, S=N/A, C=Sweden"
Version="1.0.0.0"
Uri="\\server\foo\MsixDesktopApp.msix"
ProcessorArchitecture="x86"/>
<UpdateSettings>
<OnLaunch HoursBetweenUpdateChecks="0" />
</UpdateSettings>
</AppInstaller>
UpdateSettings öğesi, sisteme güncelleştirmelerin ne zaman denetlenip denetlenmeyeceğini ve kullanıcının güncelleştirmeye zorlanıp zorlanmayacağını bildirmek için kullanılır. Windows 10'un her sürümü için desteklenen ad alanları da dahil olmak üzere tam şema başvurusu bit.ly/2TGWnCR belgelerde bulunabilir.
.appinstaller dosyasını paketleme projesine ekler ve Paket Eylemi özelliğini İçerik ve Çıktı Dizinine Kopyala özelliğini Daha yeniyse Kopyala olarak ayarlarsanız, YAML dosyasına kök ve MainPackage öğelerinin Sürüm özniteliklerini güncelleştiren ve güncelleştirilmiş dosyayı hazırlama dizinine kaydeden başka bir PowerShell görevi ekleyebilirsiniz:
- powershell: |
[Reflection.Assembly]::LoadWithPartialName("System.Xml.Linq")
$doc = [System.Xml.Linq.XDocument]::Load(
"$(Build.SourcesDirectory)/Msix/Package.appinstaller")
$version = "$(major).$(minor).$(build).$(revision)"
$doc.Root.Attribute("Version").Value = $version;
$xName =
[System.Xml.Linq.XName]
"{http://schemas.microsoft.com/appx/appinstaller/2018}MainPackage"
$doc.Root.Element($xName).Attribute("Version").Value = $version;
$doc.Save("$(Build.ArtifactStagingDirectory)/MsixDesktopApp.appinstaller")
displayName: 'Version App Installer File'
Ardından .appinstaller dosyasını son kullanıcılarınıza dağıtır ve paketlenmiş uygulamayı yüklemek için .msix dosyası yerine bu dosyaya çift tıklamalarına izin verirsiniz.
Sürekli Dağıtım
Uygulama yükleyici dosyasının kendisi, gerekirse derlemeden sonra düzenlenebilen derlenmemiş bir XML dosyasıdır. Bu, yazılımınızı birden çok ortam için dağıtırken ve derleme işlem hattını yayın işleminden ayırmak istediğinizde kullanımı kolaylaştırır.
Azure Portal'da "Boş iş" şablonunu kullanarak bir yayın işlem hattı oluşturur ve yakın zamanda ayarlanan derleme işlem hattını dağıtılacak yapıtın kaynağı olarak kullanırsanız, .appinstaller dosyasındaki iki Uri özniteliğinin değerlerini uygulamanın yayımlandığı konumu yansıtacak şekilde dinamik olarak değiştirmek için PowerShell görevini yayın aşamasına ekleyebilirsiniz.
.appinstaller Dosyasındaki Uris'i Değiştiren Bir Yayın İşlem Hattı Görevi
- powershell: |
[Reflection.Assembly]::LoadWithPartialName("System.Xml.Linq")
$fileShare = "\\filesharestorageccount.file.core.windows.net\myfileshare\"
$localFilePath =
"$(System.DefaultWorkingDirectory)\_MsixDesktopApp\drop\MsixDesktopApp.appinstaller"
$doc = [System.Xml.Linq.XDocument]::Load("$localFilePath")
$doc.Root.Attribute("Uri").Value = [string]::Format('{0}{1}', $fileShare,
'MsixDesktopApp.appinstaller')
$xName =
[System.Xml.Linq.XName]"{http://schemas.microsoft.com/appx/appinstaller/2018}MainPackage"
$doc.Root.Element($xName).Attribute("Uri").Value = [string]::Format('{0}{1}',
$fileShare, 'MsixDesktopApp.appx')
$doc.Save("$localFilePath")
displayName: 'Modify URIs in App Installer File'
Yukarıdaki görevde, URI bir Azure dosya paylaşımının UNC yoluna ayarlanır. Uygulamayı yükleyip güncelleştirdiğinizde işletim sisteminin MSIX paketini arayacağı yer burası olduğundan, yayın işlem hattına ilk olarak buluttaki dosya paylaşımını yerel Z:\ drive on the build agent before it uses the xcopy command to copy the .appinstaller and .msix dosyalarıyla eşleyen başka bir komut satırı betiği ekledim:
- script: |
net use Z: \\filesharestorageccount.file.core.windows.net\myfileshare
/u:AZURE\filesharestorageccount
3PTYC+ociHIwNgCnyg7zsWoKBxRmkEc4Aew4FMzbpUl/
dydo/3HVnl71XPe0uWxQcLddEUuq0fN8Ltcpc0LYeg==
xcopy $(System.DefaultWorkingDirectory)\_MsixDesktopApp\drop Z:\ /Y
displayName: 'Publish App Installer File and MSIX package'
Kendi şirket içi Azure DevOps Server'ınızı barındırıyorsanız, elbette dosyaları kendi iç ağ paylaşımınızda yayımlayabilirsiniz.
Bir Web sunucusunda yayımlamayı seçerseniz, YAML dosyasında birkaç ek bağımsız değişken sağlayarak MSBuild'e sürümlenmiş bir .appinstaller dosyası ve indirme bağlantısı ve paketlenmiş uygulama hakkında bazı bilgiler içeren bir HTML sayfası oluşturmasını söyleyebilirsiniz:
- task: MSBuild@1
inputs:
solution: Msix/Msix.wapproj
platform: $(buildPlatform)
configuration: $(buildConfiguration)
msbuildArguments: '/p:OutputPath=NonPackagedApp /p:UapAppxPackageBuildMode=SideLoadOnly /p:AppxBundle=Never /p:GenerateAppInstallerFile=True
/p:AppInstallerUri=http://yourwebsite.com/packages/ /p:AppInstallerCheckForUpdateFrequency=OnApplicationRun /p:AppInstallerUpdateFrequency=1 /p:AppxPackageDir=$(Build.ArtifactStagingDirectory)/'
displayName: 'Package the App'
Oluşturulan HTML dosyası, tarayıcıdan bağımsız ms-appinstaller protokolü etkinleştirme şeması ile öne çıkan bir köprü içerir.
<a href="ms-appinstaller:?source=
http://yourwebsite.com/packages/Msix_x86.appinstaller ">Install App</a>
Bırakma klasörünün içeriğini intranetinizde veya başka bir Web sitesinde yayımlayan bir yayın işlem hattı ayarlarsanız ve Web sunucusu bayt aralığı isteklerini destekler ve düzgün yapılandırılırsa, son kullanıcılarınız önce MSIX paketini indirmeden uygulamayı doğrudan yüklemek için bu bağlantıyı kullanabilir.
Uyarı
ms-appinstaller URI'sini (Tekdüzen Kaynak Tanımlayıcısı) şemasını (protokol) kullanma özelliği bir BT uzmanı (yönetici) tarafından denetlenebilir. Ağınızda ms-appinstaller'ı etkinleştirmek için Grup İlkesi EnableMSAppInstallerProtocol (/windows/client-management/mdm/policy-csp-desktopappinstaller) ayarını etkin olarak ayarlayın (bkz. İlke CSP - DesktopAppInstaller). Daha fazla bilgi için bkz . Web sayfasından Windows 10 uygulamalarını yükleme.