WIX项目无法加载指定的预构建事件

时间:2013-05-22 15:09:50

标签: visual-studio-2010 wix

经过多次麻烦后,我有一个应该运行的heat.exe命令字符串,并将文件夹的文件放入WXS文件中。

看起来像这样

heat dir "$(var.SolutionDir)Web\obj\$(var.MyProject.Configuration)Package" -gg -g1 -cg PACKAGEFILES sreg -dr DEPLOYFOLDER -var "$(var.SolutionDir)Web\obj\$(var.MyProject.Configuration)Package" -out "$(var.SolutionDir)WebInstaller\PackageFragment.wxs"

我用它来获取它:http://weblogs.sqlteam.com/mladenp/archive/2010/02/23/WiX-3-Tutorial-Generating-filedirectory-fragments-with-Heat.exe.aspx

然而,当我尝试将它复制到VS2010中我的WIX项目的“Properties-> Build Events”下的pre-build-event框中时 - VS2010崩溃,我无法加载我的项目,直到我直接从项目文件xml代码。

我现在有两个问题:

  1. 此命令字符串是否正确?
  2. 为什么我的项目会像那样崩溃?
  3. 提前谢谢大家。

1 个答案:

答案 0 :(得分:1)

项目崩溃是因为Visual Studio尝试将$(stuff)解释为MSBuild属性并使所有人感到困惑和崩溃。

您需要通过直接编辑.wixproj文件将该命令行转换为MSBuild语法。这样你就可以绕过崩溃的Visual Studio中的解析代码。类似的东西:

<Exec Command='heat dir "..\Web\obj\$(Configuration)Package" -gg -g1 -cg PACKAGEFILES sreg -dr DEPLOYFOLDER -var "..\Web\obj\$(Configuration)Package" -out "..\WebInstaller\PackageFragment.wxs"'

注意:$(var.SolutionDir)仅在Visual Studio中构建时可用,因此我建议不要使用它(在上面的示例中,我将其设置为相对路径)。