使用WIX我似乎无法让我的变量发挥作用 - 任何想法?
我正在使用:WIX版本3.5和Visual Studio 2010
这是我得到的错误(这是visual studio的输出):
------ Build build:Project:InstallProject,Configuration:Debug x86 ------“C:\ Program Files \ Windows Installer XML v3.5 \ bin \ heat.exe” dir“c:\ publish \ _ms”-cg EMSPublishedFiles -gg -scom -sreg -sfrag -srd -dr INSTALLLOCATION -var env.EMS_PUBLISHDIR -out“C:\ Projects \ ems \ Trunk \ Code \ Installer \ InstallProject \ Fragments \ FilesFragment.wxs” Microsoft(R)Windows Installer Xml Toolset Harvester版本 3.5.2519.0版权所有(C)Microsoft Corporation。保留所有权利。
C:\ Program Files \ Windows Installer XML v3.5 \ bin \ candle.exe - dEMS_PUBLISHDIR = c:\ publish \ _ms -dDebug -d“DevEnvDir = C:\ Program Files \ Microsoft Visual Studio 10.0 \ Common7 \ IDE \” -dSolutionDir = C:\ Projects \ ems \ Trunk \ Code \ Installer \ -dSolutionExt = .sln -dSolutionFileName = InstallProject.sln -dSolutionName = InstallProject -dSolutionPath = C:\ Projects \ ems \ Trunk \ Code \ Installer \ InstallProject.sln -dConfiguration = Debug -dOutDir = Packages \ -dPlatform = x86 -dProjectDir = C:\ Projects \ ems \ Trunk \ Code \ Installer \ InstallProject \ -dProjectExt = .wixproj -dProjectFileName = InstallProject.wixproj -dProjectName = InstallProject -dProjectPath = C :\项目\ EMS \干线\代码\安装\ InstallProject \ InstallProject.wixproj -dTargetDir = C:\项目\ EMS \中继线\代码\安装\ InstallProject \软件包\ -dTargetExt = .msi -dTargetFileName = EMSSetup.msi -dTargetName = EMSSetup -dTargetPath = C:\ Projects \ ems \ Trunk \ Code \ Installer \ InstallProject \ Packages \ EMSSetup.msi -out obj \ Debug \ Fragments \ -arch x86 -ext“C:\ Program Files \ Windows Installer XML v3.5 \ bin \ WixUtilExtension.dll”-ext“C:\ Program Files \ Windows Installer XML v3.5 \ bin \ WixUIExtension.dll“-ext “C:\ Program Files \ Windows Installer XML v3.5 \ bin \ WixSqlExtension.dll” -ext“C:\ Program Files \ Windows Installer XML v3.5 \ bin \ WixIIsExtension.dll”Fragments \ FilesFragment.wxs
C:\ Projects \ ems \ Trunk \ Code \ Installer \ InstallProject \ Fragments \ FilesFragment.wxs(6,0):错误CNDL0150:未定义的预处理器变量'$(env.EMS_PUBLISHDIR)'。
值得注意的是,即使我已经在Visual Studio项目属性中定义了变量:如果我将变量名称放在项目预建事件$(EMS_PUBLISHDIR)中,则处理变量(EMS_PUBLISHDIR = c:\ publish \ ems;)一个空字符串。 我使用记事本检查了项目文件目录,调试/发布等的解析看起来都没问题。
有什么想法吗?
答案 0 :(得分:1)
您确定从Visual Studio运行吗?我看到了一个叫蜡烛的电话,我在Votive的跑步中看不到。我有一个类似的问题是在使用构建服务器构建安装程序时引起的。变量在附加层中丢失。 1)在构建服务器级别 2)在MSBuild级别 3)wixproj认可的内容。
答案 1 :(得分:1)
您正在寻找环境变量,而不是WiX变量。
$(env.EMS_PUBLISHDIR)
- 查找环境变量EMS_PUBLISHDIR
$(var.EMS_PUBLISHDIR)
- 查找通过WiX定义的变量
答案 2 :(得分:0)
如果在蜡烛调用中定义-dEMS_PUBLISHDIR = ...,它将在Wix中变为$(var.EMS_PUBLISHDIR),而不是$(env.EMS_PUBLISHDIR)。