概述

本文介绍如何在 Azure DevOps 中配置 CI/CD 流水线,自动化构建、修改和打包 Windows 应用为 MSIX 格式,适用于企业级应用分发与签名。

相关说明

原文参考:使用 Azure DevOps 进行构建、修改和打包 - XPN 信息安全博客(链接已失效)。本文内容基于 Microsoft Learn 官方文档与行业实践重构,确保技术准确性。

[toc]

1. 什么是 MSIX?

MSIX 是微软推出的现代化 Windows 应用打包格式,统一了 Win32、UWP、PWA 应用的安装与更新机制,优势包括:

  • 沙盒化:应用隔离,提升系统安全性
  • 原子化安装/卸载:失败可回滚
  • 自动更新:通过 Microsoft Store 或企业内部分发
  • 无残留:卸载后完全清理注册表与文件
  • 签名支持:支持代码签名与证书验证

2. 准备工作

2.1 安装 MSIX Packaging Tool

2.2 安装 Azure DevOps 扩展

在 Azure DevOps 项目中安装官方扩展:

  • MSIX Packaging Extension官方链接
  • 提供 MSIXPackagingMSIXSigning 任务

3. 构建流水线配置(YAML)

azure-pipelines.yml 中添加以下任务:

trigger:
- main
 
pool:
  vmImage: 'windows-latest'
 
steps:
- task: MSIXPackaging@1
  inputs:
    inputPath: 'src/MyApp/Output'
    outputPath: '$(Build.ArtifactStagingDirectory)/MyApp.msix'
    packageIdentityName: 'MyCompany.MyApp'
    packageDisplayName: 'My Application'
    packageVersion: '1.0.0.0'
    architecture: 'x64'
    publisher: 'CN=MyCompany'
 
- task: MSIXSigning@1
  inputs:
    inputPath: '$(Build.ArtifactStagingDirectory)/MyApp.msix'
    outputPath: '$(Build.ArtifactStagingDirectory)/MyApp.signed.msix'
    certificatePath: '$(System.DefaultWorkingDirectory)/certs/mycert.pfx'
    certificatePassword: '$(CertificatePassword)'
 
- task: PublishBuildArtifacts@1
  inputs:
    PathtoPublish: '$(Build.ArtifactStagingDirectory)'
    ArtifactName: 'msix-package'
    publishLocation: 'Container'

4. 关键配置项说明

参数说明
inputPath源应用文件夹(含 .exe、.dll、资源等)
packageIdentityName唯一包名,格式:CompanyName.AppName
packageVersion必须为 4 位数字(如 1.0.0.1)
architecturex64 / x86 / arm64
publisher证书中的发布者名称(需与签名证书匹配)
certificatePath用于签名的 .pfx 证书路径

5. 签名与分发

  • 开发环境:可使用自签名证书(需安装到受信任根)
  • 生产环境:必须使用 EV 代码签名证书(如 DigiCert、Sectigo)
  • 分发方式
    • Microsoft Store(公开)
    • 企业内部分发(通过 Intune / SCCM)
    • 直接下载安装(用户双击 .msix 文件)

6. 常见问题

问题解决方案
打包失败:找不到依赖项检查 inputPath 是否包含所有运行时文件(如 .NET Framework、VC++ Redist)
签名失败:证书不匹配确保 publisher 字段与证书中的 CN= 完全一致
安装时提示“未知发布者”确保签名证书已安装到目标机器的“受信任的根证书颁发机构”
打包后无法运行使用 AppVerifierProcMon 检查应用运行时权限与注册表访问

更新于:2026-04-23 | 作者:爪爪 | *标签:#MSIX azuredevops cd windows应用 企业部署