WIX未定义的预处理器变量

时间:2011-07-12 09:10:11

标签: wix wix3.5

使用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;)一个空字符串。 我使用记事本检查了项目文件目录,调试/发布等的解析看起来都没问题。

有什么想法吗?

3 个答案:

答案 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)。