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

能否通过Azure CI/CD将.msi包部署至本地虚拟机?求部署方案

Azure CI/CD部署MSI到本地虚拟机的可行方案

方案1:通过PowerShell远程执行任务部署

  • 前置条件:本地虚拟机已开启WinRM服务,Azure代理可访问虚拟机的5985(HTTP)或5986(HTTPS)端口,且拥有具备足够权限的虚拟机登录账号
  • 操作步骤:
    1. 在发布流水线中添加PowerShell on Target Machines任务
    2. 配置目标机器信息:填入虚拟机IP/主机名,选择对应WinRM协议,输入有权限的账号密码
    3. 在脚本内容中完成文件复制与静默安装:
      # 将MSI从流水线工件目录复制到虚拟机临时路径
      Copy-Item -Path "$(System.ArtifactsDirectory)\YourApp.msi" -Destination "C:\Temp\YourApp.msi"
      # 静默安装并生成日志,替换为你的MSI文件名与参数
      msiexec /i "C:\Temp\YourApp.msi" /qn /norestart /L*V "C:\Temp\install.log"
      
      其中/L*V参数会生成详细安装日志,便于排查失败原因

方案2:使用自托管代理直接部署

  • 前置条件:在本地虚拟机上安装Azure DevOps自托管代理,并将代理加入你的Azure DevOps项目代理池
  • 操作步骤:
    1. 在发布流水线的阶段设置中,选择使用本地虚拟机对应的自托管代理池
    2. 添加Copy Files任务,将MSI制品从Artifacts复制到虚拟机的指定部署路径
    3. 添加Command Line任务,执行静默安装命令:
      msiexec /i "C:\Deploy\YourApp.msi" /qn /norestart /L*V "C:\Deploy\install.log"
      
      该方式无需配置WinRM,代理直接在本地虚拟机执行操作,稳定性更高

方案3:排查原Windows机器文件复制任务失败问题

如果想复用原任务,优先排查以下常见问题:

  • 权限不足:确认使用的账号具备虚拟机文件写入权限及共享文件夹访问权限
  • 网络连通性:检查Azure代理与本地虚拟机之间的网络是否通畅,445(SMB)端口是否开放
  • 路径错误:源路径需指向流水线中MSI的正确位置(如$(System.ArtifactsDirectory)\**\*.msi),目标路径需为虚拟机的有效共享路径(如\\192.168.1.100\DeployFolder)
  • 防火墙限制:本地虚拟机防火墙需允许SMB服务的入站规则

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.07 13:50:47