如何在 Azure Pipeline (Windows) 中安装 .msi 程序
Posted
技术标签:
【中文标题】如何在 Azure Pipeline (Windows) 中安装 .msi 程序【英文标题】:How to install an .msi program in Azure Pipeline (Windows) 【发布时间】:2021-10-25 14:03:02 【问题描述】:我的目标是在 Azure Pipelines 中的 Microsoft 托管映像中安装 CppCheck。 我已经为一个 Ubuntu 映像做了这个,但是 Ubuntu 的 CppCheck 已经过时了。我的管道:
trigger:
- master
pool:
vmImage: 'ubuntu-latest'
jobs:
- job: MisraCheck
displayName: Check for Misra Compliance
steps:
- script: |
sudo apt-get install cppcheck
displayName: 'Install cppcheck'
- script: |
cppcheck --error-exitcode=1 --addon=misra.json .
displayName: 'Run cppcheck'
由于我熟悉 Linux(和 apt-get),因此设置此管道非常容易。但现在我必须“翻译”这个管道以在 Windows 映像上使用。
CppCheck for Windows 是一个可在this 页面上下载的 .msi 文件。下载链接很容易获得。
我知道我需要在管道中使用 Windows 映像,例如“windows-2019”或“vs2017-win2016”。主要问题是如何替换 apt-get 命令以从链接获取 .msi 文件并安装它?
谢谢!
【问题讨论】:
【参考方案1】:如何在 Azure Pipeline (Windows) 中安装 .msi 程序
您可以使用 Powershell 任务来安装 .msi 文件:
Start-Process $(System.DefaultWorkingDirectory)\cppcheck-2.6-x64-Setup.msi -ArgumentList "/quiet"
Start-Sleep 180 #waiting for installing complete
您需要将.msi
上传到您的存储库。或者您可以使用 PowerShell 脚本从 URL 下载.msi
:
更新:
Invoke-WebRequest https://github.com/danmar/cppcheck/releases/download/2.6/cppcheck-2.6-x64-Setup.msi -OutFile $(System.DefaultWorkingDirectory)\cppcheck-2.6-x64-Setup.msi
Start-Sleep 90 #waiting for downloadig complete
【讨论】:
"或者您可以使用 PowerShell 脚本从 URL 下载 .msi" 您能否提供更多信息? 下载和安装命令都在工作。谢谢您的帮助!剩下的唯一部分是运行 cppcheck(找不到 cppcheck 可执行文件)。一旦它工作,我会发布最终解决方案。 有这方面的文档吗?下面的命令给了我错误“cppcheck 不被识别为内部或外部命令、可运行程序或批处理文件。” - 脚本:|设置 PATH=%PATH%;C:\Program Files\Cppcheck\ cppcheck --error-exitcode=1 --addon=misra.json --inline-suppr 。 displayName: 'MISRA 检查' @RafaelNicolay,没有这样的文件。这是作为开发人员的基本技能。这个新的错误很明显是系统路径中没有添加Cppcheck。你只需要google一下如何在系统路径中添加文件路径。【参考方案2】:发布最终解决方案。此管道是我在打开问题时发布的管道的“翻译”。
# This pipeline uses a Windows image as host to install cppcheck to verify MISRA guidelines.
trigger:
- master
pool:
vmImage: 'windows-2019'
jobs:
- job: MisraCheck
displayName: Check for Misra Compliance
steps:
# Download and Install CppCheck(full install since we need the MISRA plugin)
- powershell: |
Invoke-WebRequest https://github.com/danmar/cppcheck/releases/download/2.6/cppcheck-2.6-x64-Setup.msi -OutFile $(System.DefaultWorkingDirectory)\cppcheck-2.6-x64-Setup.msi
Start-Process $(System.DefaultWorkingDirectory)\cppcheck-2.6-x64-Setup.msi -ArgumentList "/quiet ADDLOCAL=CppcheckCore,CLI,Translations,ConfigFiles,PlatformFiles,PythonAddons,CRT" -Wait
displayName: 'Download and Install Cppcheck'
# Adds Cppcheck to PATH and runs it
- script: |
PATH=C:\Program Files\Cppcheck\;%PATH%
cppcheck --error-exitcode=1 --addon=misra.json --inline-suppr .
displayName: 'MISRA Check'
PS:这不是一个好的解决方案,因为完成管道需要几分钟。 Ubuntu 管道大约需要 30 秒才能完成,而 Windows 可能需要 4 分钟。也许正确的做法是为此构建一个代理。
感谢 Leo Liu-MSFT 的帮助!
【讨论】:
以上是关于如何在 Azure Pipeline (Windows) 中安装 .msi 程序的主要内容,如果未能解决你的问题,请参考以下文章
如何从 Azure DevOps Pipeline 读取 Azure 文件共享文件
如何在 Azure Pipeline 中为 iOS 版本使用自动预配
如何向 Azure 存储授予对 Azure Pipeline 的 Azure 文件副本的访问权限?