MSIX 打包扩展

MSIX 打包扩展是一种 Azure DevOps 扩展,可帮助使用 MSIX 包格式生成、打包和签名 Windows 应用

CI/CD 工作流已成为开发过程中必不可少的一部分,可提高效率和质量,同时降低成本和缩短上市时间。 Microsoft 的 CI/CD 解决方案 Azure DevOps 管道已广泛采用且很受欢迎,但将需要打包为 MSIX 的应用的生成和部署工作流集成到 Azure Pipelines 则是一件枯燥的工作,尤其是对于不是 Azure Pipelines 或 MSIX 专家的用户来说。 此 Azure DevOps 扩展提供了一个简单直观的解决方案,使你可以更轻松地自动执行打包为 MSIX 的应用的生成和部署过程,并使具有现有 CI/CD 工作流的应用可以移动到 MSIX,而不会中断其生成和部署机制。

MSIX 打包扩展包含以下任务,可根据要求用于自定义生成管道

  1. MSIX 生成和打包 - 使用 MSIX 包格式生成和打包 Windows 应用
  2. MSIX 包签名 - 使用受信任的证书对 MSIX 包进行签名
  3. MSIX 的应用安装程序文件 - 为 MSIX 应用创建或更新 .appinstaller 文件
  4. 为 MSIX 应用附加创建包 - 为 MSIX 应用附加创建 VHDX 包

安装扩展

浏览 Azure DevOps 商城,并查找名为 MSIX 打包扩展的扩展

Browse the marketplace

创建管道

创建 Azure DevOps 项目的新管道。

select pipeline

New pipeline

将该选项选择为“使用经典编辑器创建无 YAML 的管道”

Use the classic editor

选择版本控制系统,并提供存储库和默认分支的详细信息。

Configure source vcs

当要求选择模板时,单击“从空作业开始”

Start with an empty job

将“代理规范”选择更改为 “windows-2019”,因为 MSIX 扩展仅在 Windows 代理上运行

Agent specification windows

默认情况下,你可在管道中看到“代理作业 1”。 单击加号符号以向代理作业 1 添加任务

在“添加任务”搜索栏中搜索”MSIX”,你可在 MSIX 打包扩展中看到之前提到的任务。 可根据要求添加所需的任务以自定义生成管道。 但我们将演示如何在此页上配置所有四项任务。ADO Extension Image1

MSIX 生成和打包

注意:如果想使用此任务生成打包应用,需要包含 Windows 应用程序打包项目,因为该任务需要 Package.appxmanifest.xml 文件。 系统不会自动添加该任务。

以下示例演示如何在 yaml 文件中配置生成和包任务:

steps:
- task: MSIX.msix-ci-automation-task-dev.msix-packaging.MsixPackaging@1
  displayName: 'MSIX build and package'
  inputs:
    outputPath: '$(Build.ArtifactStagingDirectory)\MyApp.msix'
    solution: MyUWPApp.sln
    buildPlatform: x64
    updateAppVersion: true
    manifestFile: MyUWPApp/Package.appxmanifest
    appVersion: 2.0.0.0
    appPackageDistributionMode: SideloadOnly
    msbuildArchitecture: x64

MSIX 包签名

签名任务允许使用证书签名。 证书可来自安全文件库,还可编码为字符串,就如同使用 Azure Key Vault 任务提取的一样。

以下示例演示如何在 yaml 文件中配置包签名任务:

steps:
- task: MSIX.msix-ci-automation-task-dev.msix-signing.MsixSigning@1
  displayName: 'Sign MSIX package'
  inputs:
    certificateType: base64
    encodedCertificate: '$(kvtestcert)'

用于 MSIX 的应用安装程序文件

以下示例演示如何在 yaml 文件中配置 AppInstaller 文件任务:

steps:
- task: MSIX.msix-ci-automation-task-dev.app-installer-file.AppInstallerFile@1
  displayName: 'Create App Installer file'
  inputs:
    package: '$(Build.ArtifactStagingDirectory)\MyApp.msix'
    outputPath: '$(Build.ArtifactStagingDirectory)\MyApp.appinstaller'
    uri: 'https://myuwpapp-demo.azurewebsites.net/MyApp.appinstaller'
    mainItemUri: 'https://myuwpapp-demo.azurewebsites.net/MyApp.msix'
    showPromptWhenUpdating: true
    updateBlocksActivation: true

为 MSIX 应用附加创建包

以下示例演示如何在 yaml 文件中配置任务以创建用于应用附加的 VHDX 文件:

steps:
- task: MSIX.msix-ci-automation-task-dev.msix-app-attach.MsixAppAttach@1
  displayName: 'Create package for MSIX app attach'
  inputs:
    package: '$(Build.ArtifactStagingDirectory)\MyApp.msix'
    vhdxOutputPath: '$(Build.ArtifactStagingDirectory)\MyApp.vhdx'

向 AVD 发布 MSIX 应用附加包

以下示例演示如何在 yaml 文件中配置 avd 应用附加任务:

steps:
- task: MSIX.msix-ci-automation-task-dev.avd-app-attach-publish.AVDAppAttachPublish@0
  displayName: 'Publish MSIX app attach package to AVD'
  inputs:
    vhdxPath: '$(Build.ArtifactStagingDirectory)/App.vhdx' 
    connectedServiceNameARM: 'ed1db943-1e1c-4eac-8683-ead2abc281b5' 
    resourceGroupName: 'appattach-test-rg' 
    storageAccount: 'appattachteststorage' 
    fileShare: 'appattach-test-fs' 
    hostPool: 'appattach-hostpool' 
    workSpace: 'appattach-test-ws' 
    applicationGroup: 'appattach-test-ag-rail' 

提供反馈的方法

欢迎提供有关 MSIX 打包扩展的反馈。 请通过以下渠道联系我们: