You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过Azure DevOps Pipeline自动化转换MSI/Exe为MSIX包?

实现Azure DevOps Pipeline自动化MSI/EXE转MSIX并部署至Azure虚拟桌面

一、核心工具准备

自动化转换依赖MSIX Packaging Tool的命令行版本,它支持无UI模式完成MSI/EXE到MSIX的转换,这是流水线实现的基础。

二、Azure DevOps Pipeline配置步骤

1. 配置自托管代理池

必须使用Windows自托管代理,且满足以下条件:

  • 预装MSIX Packaging Tool(命令行工具随GUI版默认安装,路径通常为C:\Program Files (x86)\Windows Kits\10\MSIX Packaging Tool\Mspackagingtool.exe)
  • 开启Hyper-V功能(转换过程需要虚拟机环境捕获安装状态,可通过Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Hyper-V -All启用)
  • 拥有管理员权限(捕获安装、创建VHDX均需该权限)
  • 若转换EXE,需提前确认EXE支持静默安装(测试/quiet、/silent等参数是否有效)

2. 流水线核心阶段设计

分为三个关键阶段:MSI/EXE转MSIX、生成MSIX VHDX、部署至Azure虚拟桌面(MSIX App Attach)

阶段1:转换MSI/EXE到MSIX

添加PowerShell任务,执行命令行转换:

# MSIX转换示例(以MSI为例)
& "C:\Program Files (x86)\Windows Kits\10\MSIX Packaging Tool\Mspackagingtool.exe" `
  create-package `
  --installer "$(Build.ArtifactStagingDirectory)\YourApp.msi" `
  --installer-arguments "/quiet" `
  --output "$(Build.ArtifactStagingDirectory)\YourApp.msix" `
  --package-name "YourApp" `
  --publisher "CN=YourCompanyName" `
  --version "$(Build.BuildNumber)"
  • 关键参数说明:
    • --installer-arguments:替换为对应安装包的静默参数,EXE需根据实际情况调整(如/silent /norestart)
    • --version:可绑定流水线构建号,自动同步版本避免冲突
    • 如需自定义转换规则(比如排除特定文件),可提前录制捕获模板并通过--template参数指定

阶段2:生成MSIX VHDX

使用msixmgr.exe(随MSIX Packaging Tool安装)将MSIX打包为VHDX:

# 创建VHDX并挂载写入
& "C:\Program Files (x86)\Windows Kits\10\MSIX Packaging Tool\msixmgr.exe" `
  -create `
  -packagePath "$(Build.ArtifactStagingDirectory)\YourApp.msix" `
  -destination "$(Build.ArtifactStagingDirectory)\YourApp.vhdx" `
  -vhdSize 3000 ` # 单位MB,根据包大小预留足够空间
  -fileType VHDX

# 卸载VHDX
& "C:\Program Files (x86)\Windows Kits\10\MSIX Packaging Tool\msixmgr.exe" `
  -unmount `
  -packagePath "$(Build.ArtifactStagingDirectory)\YourApp.vhdx"

阶段3:部署至Azure虚拟桌面

  1. 上传VHDX至Azure存储Blob容器
    添加Azure CLI任务完成上传:
    az storage blob upload `
      --account-name <你的存储账户名> `
      --container-name <Blob容器名> `
      --name "YourApp.vhdx" `
      --file "$(Build.ArtifactStagingDirectory)\YourApp.vhdx" `
      --auth-mode login
    
  2. 配置MSIX App Attach
    添加Azure PowerShell任务完成包注册:
    # 生成存储Blob的SAS URL(有效期按需设置)
    $sasUrl = New-AzStorageBlobSASToken `
      -Container <Blob容器名> `
      -Blob "YourApp.vhdx" `
      -Permission r `
      -ExpiryTime (Get-Date).AddDays(365) `
      -FullUri
    
    # 将MSIX包注册到AVD主机池
    New-AzWvdMsixPackage `
      -HostPoolName <你的AVD主机池名> `
      -ResourceGroupName <资源组名> `
      -PackageAlias "YourApp" `
      -ImagePath $sasUrl `
      -DisplayName "Your Application" `
      -IsActive $true
    
    完成后,AVD会话主机将自动挂载该VHDX,用户可在开始菜单访问应用。

三、关键注意事项

  • 流水线任务需以管理员身份运行,否则会出现捕获失败或VHDX创建失败的问题
  • 提前在代理机器上手动执行一遍转换命令,确认流程正常后再移入流水线
  • 若转换EXE,必须确保安装过程无交互式弹窗,否则流水线会卡住
  • 存储Blob需配置合适的权限,确保AVD主机池能访问VHDX文件

内容的提问来源于stack exchange,提问作者Nitin

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.10 00:25:31