2013-05-22 23 views
0

經過很多麻煩,我有一個heat.exe命令字符串應該運行並將文件夾的文件放入WXS文件中。WIX項目無法加載指定的預構建事件

它看起來像這樣

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項目 - VS2010崩潰,我無法加載我的項目,直到我直接從項目文件xml代碼中刪除命令。

我現在有兩個問題:

  1. 這是命令字符串是否正確?
  2. 爲什麼我的項目會崩潰?

謝謝大家提前。

回答

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"' 

注:喜歡的東西,在Visual Studio中建立,所以我建議不要使用它時,$(var.SolutionDir)僅可(在上面的例子中,我做了一個相對路徑)。

+0

將一個Heat命令屬性添加到fragment元素是否有意義,因此它會在編譯時創建它自己? –

+0

否,因爲編譯階段今天不接觸磁盤。 –