经过多次麻烦后,我有一个应该运行的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"
然而,当我尝试将它复制到VS2010中我的WIX项目的“Properties-> Build Events”下的pre-build-event框中时 - VS2010崩溃,我无法加载我的项目,直到我直接从项目文件xml代码。
我现在有两个问题:
提前谢谢大家。
答案 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中构建时可用,因此我建议不要使用它(在上面的示例中,我将其设置为相对路径)。