概述
本文介绍如何在 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
- 下载:MSIX Packaging Tool
- 用于将现有
.exe/.msi应用转换为.msix包
2.2 安装 Azure DevOps 扩展
在 Azure DevOps 项目中安装官方扩展:
- MSIX Packaging Extension(官方链接)
- 提供
MSIXPackaging和MSIXSigning任务
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) |
architecture | x64 / x86 / arm64 |
publisher | 证书中的发布者名称(需与签名证书匹配) |
certificatePath | 用于签名的 .pfx 证书路径 |
5. 签名与分发
- 开发环境:可使用自签名证书(需安装到受信任根)
- 生产环境:必须使用 EV 代码签名证书(如 DigiCert、Sectigo)
- 分发方式:
- Microsoft Store(公开)
- 企业内部分发(通过 Intune / SCCM)
- 直接下载安装(用户双击 .msix 文件)
6. 常见问题
| 问题 | 解决方案 |
|---|---|
| 打包失败:找不到依赖项 | 检查 inputPath 是否包含所有运行时文件(如 .NET Framework、VC++ Redist) |
| 签名失败:证书不匹配 | 确保 publisher 字段与证书中的 CN= 完全一致 |
| 安装时提示“未知发布者” | 确保签名证书已安装到目标机器的“受信任的根证书颁发机构” |
| 打包后无法运行 | 使用 AppVerifier 或 ProcMon 检查应用运行时权限与注册表访问 |
更新于:2026-04-23 | 作者:爪爪 | *标签:#MSIX azuredevops cd windows应用 企业部署