azure - Wix 工具集 Candle 变量在 Azure Pipelines 中未定义

标签 azure azure-devops wix

鉴于:
Visual Studio 2019 Web API .Net Core 3.1
Wix 工具集 3.1.1
Windows 2016 Azure DevOps 2019

我想做的就是使用 Wix Toolset 为一个非常简单的 WebAPI 项目创建一个 .msi 文件。

如果我运行SetupProject,它会完美运行:

2>      C:\Program Files (x86)\WiX Toolset v3.11\bin\candle.exe -d"DevEnvDir=C:\Program Files (x86)\Microsoft Visual Studio\2019\Professional\Common7\IDE\\" -dSolutionDir=C:\apps\Solution1\ -dSolutionExt=.sln -dSolutionFileName=Solution1.sln -dSolutionName=Solution1 -dSolutionPath=C:\apps\Solution1\Solution1.sln -dConfiguration=Release -dOutDir=bin\Release\ -dPlatform=x86 -dProjectDir=C:\apps\Solution1\SetupProject1\ -dProjectExt=.wixproj -dProjectFileName=SetupProject1.wixproj -dProjectName=SetupProject1 -dProjectPath=C:\apps\Solution1\SetupProject1\SetupProject1.wixproj -dTargetDir=C:\apps\Solution1\SetupProject1\bin\Release\ -dTargetExt=.msi -dTargetFileName=SetupProject1.msi -dTargetName=SetupProject1 -dTargetPath=C:\apps\Solution1\SetupProject1\bin\Release\SetupProject1.msi -dWebApplication1.Configuration=Release -d"WebApplication1.FullConfiguration=Release|AnyCPU" -dWebApplication1.Platform=AnyCPU -dWebApplication1.ProjectDir=C:\apps\Solution1\WebApplication1\ -dWebApplication1.ProjectExt=.csproj -dWebApplication1.ProjectFileName=WebApplication1.csproj -dWebApplication1.ProjectName=WebApplication1 -dWebApplication1.ProjectPath=C:\apps\Solution1\WebApplication1\WebApplication1.csproj -dWebApplication1.TargetDir=C:\apps\Solution1\WebApplication1\bin\Release\netcoreapp3.1\ -dWebApplication1.TargetExt=.dll -dWebApplication1.TargetFileName=WebApplication1.dll -dWebApplication1.TargetName=WebApplication1 -dWebApplication1.TargetPath=C:\apps\Solution1\WebApplication1\bin\Release\netcoreapp3.1\WebApplication1.dll -out obj\Release\ -arch x86 Product.wxs
2>      C:\Program Files (x86)\WiX Toolset v3.11\bin\Light.exe -out C:\apps\Solution1\SetupProject1\bin\Release\SetupProject1.msi -pdbout C:\apps\Solution1\SetupProject1\bin\Release\SetupProject1.wixpdb -cultures:null -contentsfile obj\Release\SetupProject1.wixproj.BindContentsFileListnull.txt -outputsfile obj\Release\SetupProject1.wixproj.BindOutputsFileListnull.txt -builtoutputsfile obj\Release\SetupProject1.wixproj.BindBuiltOutputsFileListnull.txt -wixprojectfile C:\apps\Solution1\SetupProject1\SetupProject1.wixproj obj\Release\Product.wixobj
2>      SetupProject1 -> C:\apps\Solution1\SetupProject1\bin\Release\SetupProject1.msi

但是,如果我在 Azure DevOps 中运行它,则 DeEnvDir 未定义,导致构建挂起(我猜测)。为了确保安全,我让它运行了 12 分钟。

d"DevEnvDir=Undefined if not building from within Visual Studio"

Compile:
  C:\Program Files (x86)\WiX Toolset v3.11\bin\candle.exe -d"DevEnvDir=*Undefined if not building from within Visual Studio*" -dSolutionDir=C:\agent2\_work\4\s\ -dSolutionExt=.sln -dSolutionFileName=Solution1.sln -dSolutionName=Solution1 -dSolutionPath=C:\agent2\_work\4\s\Solution1.sln -dConfiguration=Release -dOutDir=bin\Release\ -dPlatform=x86 -dProjectDir=C:\agent2\_work\4\s\SetupProject1\ -dProjectExt=.wixproj -dProjectFileName=SetupProject1.wixproj -dProjectName=SetupProject1 -dProjectPath=C:\agent2\_work\4\s\SetupProject1\SetupProject1.wixproj -dTargetDir=C:\agent2\_work\4\s\SetupProject1\bin\Release\ -dTargetExt=.msi -dTargetFileName=SetupProject1.msi -dTargetName=SetupProject1 -dTargetPath=C:\agent2\_work\4\s\SetupProject1\bin\Release\SetupProject1.msi -dWebApplication1.Configuration=Release -d"WebApplication1.FullConfiguration=Release|AnyCPU" -dWebApplication1.Platform=AnyCPU -dWebApplication1.ProjectDir=C:\agent2\_work\4\s\WebApplication1\ -dWebApplication1.ProjectExt=.csproj -dWebApplication1.Proje...
  Windows Installer XML Toolset Compiler version 3.11.2.4516
  Copyright (c) .NET Foundation and contributors. All rights reserved.

最佳答案

这是因为当您在 azure devops 中构建解决方案时,没有 $(DevEnvDir) 的环境变量。您可以尝试在构建服务器上定义 DevEnvDir 环境变量或将其添加到构建定义的变量中。

关于定义变量,请查看这个document 。这是ticket有类似问题的可以引用一下。

关于azure - Wix 工具集 Candle 变量在 Azure Pipelines 中未定义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62270724/

相关文章:

c# - 从azure存储异步下载blob并将其保存在DataTable中

azure - 限制Azure DevOps Pipeline YAML中的并行作业数量

powershell - 如何使用 REST API 销毁 TFVC 中的分支?

visual-studio - Wix MajorUpgrade 不会检测产品版本的最后位置

windows - 无法使用 WiX 启动 Windows 服务

azure - 从 Azure DevOps 发布管道获取文件

azure - 设置 SQL Azure 规则 "WINDOWS AZURE SERVICES"=YES 是否意味着 azure 上的任何人都可以连接到我的服务器?

连接到 AAD 的 Azure B2C openid

windows - Maven 多平台依赖包

azure-devops - 本地构建代理无法使用.net 4.7.1上的项目构建解决方案