2016-07-14 101 views
1

我有一個工作正常的WiX安裝程序,但它已經過了幾個月,所以我並不試圖構建安裝程序(在重新配置的計算機上)以及現在它無法每次構建。我試圖簡化一切,以確定它失敗的地方,但我仍然無法弄清楚爲什麼。從本質上講,它看起來在預構建過程中失敗了。我有一個預先構建的事件命令的長度,但我簡化了它的基本要素。這是我的命令:WiX熱預編譯錯誤

call 「$(WIX)bin\heat.exe」 dir "$(SolutionDir)MyProj\bin\Release" -out 「$(ProjectDir)MyFiles.wxs」 

我得到的錯誤是:

call 「C:\Program Files (x86)\WiX Toolset v3.10\bin\heat.exe」 dir "C:\Users\MyName\Documents\GitHub\MyProj\bin\Release" -out 「C:\Users\MyName\Documents\GitHub\MyProj\Installer\MyFiles.wxs」 
The filename, directory name, or volume label syntax is incorrect. 

的代碼將出現與代碼1,這似乎表明,它未能找到一個文件名或路徑退出..但是,我已經檢查了輸出日誌中打印的路徑,並且C:\ Program Files(x86)目錄下存在heat.exe應用程序。正在嘗試收集的目錄(目錄)是正確定義的,並且輸出位置也是如此。那麼,有沒有人知道爲什麼這是失敗?

更新

什麼是令人難以置信的奇怪的是,在預生成事件命令似乎當我簡化命令來嘗試簡單地調用heat.exe應用程序(沒有其他參數),甚至失敗。我試圖改變我的預生成事件下面:

call 「C:\Program Files (x86)\WiX Toolset v3.10\bin\heat.exe」 

你可以從所附的圖像看到,heat.exe應用確實是坐落在構建命令中指定的目錄。然而,我仍然得到一個錯誤,說MSBuild失敗並退出代碼1.如果我檢查輸出日誌,它說,「文件名,目錄名稱或卷標語法不正確」。然而,我可以說這個安裝程序在幾個月前正常工作,沒有修改生成事件...所以我真的不知道爲什麼它現在不工作,除了我不得不重新配置我的機器並重新安裝Windows 10最近。我下載並安裝了最新的WiX工具集,並假設這將是所需的一切。但是,這個錯誤仍然存​​在。有任何想法嗎?

enter image description here

回答

2

這是很愚蠢的,但我相信你需要把\你DIR IIRC結束。我想我曾經遇到過同樣的問題。該錯誤不是特別有用。

call 「$(WIX)bin\heat.exe」 dir "$(SolutionDir)MyProj\bin\Release\" -out 「$(ProjectDir)MyFiles.wxs」 

(我想我是向後記住,你需要沒有在目錄尾隨\ ..對不起)


萬一你不能得到預建事件的工作,你也可以這樣調用熱(需要編輯wixproj文件)

<Target Name="BeforeBuild" /> 
    <Exec Command="&quot;$(WIX)bin\heat.exe&quot; dir &quot;$(SolutionDir)MyProj\bin\Release&quot; -out &quot;$(ProjectDir)MyFiles.wxs&quot;"/> 
</Target> 

這是我稱之爲熱一些,我撰寫的安裝程序的。如果這也行不通,我不知道爲什麼這不適合你。

+0

不幸的是,似乎仍然不能解決我的機器上的問題。 – andyopayne

+0

奇怪的是,如果我簡化命令以僅嘗試啓動heat.exe應用程序,則預生成事件將失敗。例如,如果我只是使用:調用「$(WIX)bin \ heat.exe」,那麼我仍然會得到與上面相同的錯誤。 – andyopayne

+0

根據http://stackoverflow.com/questions/6755654/build-events-not-honoring-multiple-command-line-arguments你應該嘗試調用$(WIX)bin \ heat.exe「dir」$(解決方法1)MyProj \ bin \ Release \「-out」$(ProjectDir)MyFiles.wxs「'(釋放\」之後的空格,因爲\正在轉義「)看看是否有效 –

0

我知道它的一個老問題,但我已經遇到了這個問題,並花了幾個小時注意到這裏有不同的qoutes:「$(WIX)bin\heat.exe」。直接替換"$(WIX)bin\heat.exe"並享受。