2013-12-23 61 views
7

我是使用WiX的新手,所以這是一個愚蠢的問題。我正在嘗試保留收集工具(heat.exe)生成的GUID與我正在打包的文件保持一致。似乎每個人都會說,只要文件路徑和子路徑保持不變,heat.exe就會爲文件生成相同的GUID。不幸的是,我沒有看到這種行爲。我的工作流程如下。如何使用wix收割工具生成一致的GUID

在構建過程中,將所有可交付文件複製到暫存目錄。然後在staging目錄中運行heat.exe以生成組件片段wxs文件。在將文件複製到暫存目錄之前,我清除所有舊文件。

我想將生成的wxs文件添加到我的源代碼控制中,以便實現次要升級。如果我的理解對我來說是正確的,那麼我需要在我的構建中保持一致的GUID,以便我可以跟蹤它們。

我使用用於生成WXS文件的命令行如下所示: -

c:\foobar\build\>C:\win32\wix-3.7.1224.0\heat.exe dir . -cg MyCG -dr INSTALLDIR -g1 -gg -nologo -sreg -suid -t C:\foobar\src\support\packaging\wix\foo.xslt -var var.foobarSource -out c:\foobar\src\support\packaging\wix\foo.wxs 

我看到,所產生的GUID各自運行期間不同。有沒有辦法讓我保持GUID一致。

回答

8

您應該指定-ag標誌。

-ag 
Auto generate component guids at compile time, e.g. set Guid="*". 

只要你的文件路徑相同,生成的GUID對文件來說就是一樣的。

+0

這是否意味着我應該刪除-gg選項,這意味着現在生成guid並使用-ag代替。 – tuxalot

+0

如果我使用-ag標誌,我可以列出生成的GUID在編譯時的內容,以驗證它們保持不變。 – tuxalot

+0

是的。如果您想進行次要升級,則使用-ag標誌。如果您以前使用過-gg標誌,那麼切換到-ag標誌不會再幫助您(如果是這種情況;您可以編寫自定義工具來處理您的wx以保持GUIDS一致 - 您可以從MSI文件中讀取所有內容)。請注意,組件上的Guid =「*」不會隨機生成Guid - 它是從路徑計算的。如果你想驗證的東西,你應該設置測試環境,看看小升級如何工作。 –