什麼時候應該更改或不更改WIX中的組件GUID?The Microsoft SDK information is confusing。在wix中更改我的組件GUID?
Glytzhkof編輯:爲了澄清,該問題涉及何時應更改組件GUID組件的GUID。組件可以改變方面,如:更改的目標路徑,添加或刪除文件到/從相同的組件,添加註冊表數據等...這會導致所謂的組件引用問題,即MSI中的best practice for creating components 。
什麼時候應該更改或不更改WIX中的組件GUID?The Microsoft SDK information is confusing。在wix中更改我的組件GUID?
Glytzhkof編輯:爲了澄清,該問題涉及何時應更改組件GUID組件的GUID。組件可以改變方面,如:更改的目標路徑,添加或刪除文件到/從相同的組件,添加註冊表數據等...這會導致所謂的組件引用問題,即MSI中的best practice for creating components 。
MSI的整體概念是,有一個1:一個組件GUID(唯一標識符)和一個絕對路徑(安裝位置/關鍵路徑)之間1映射。完整路徑,包括文件名(如果有的話)。請參閱下面的更新以獲取新的Wix功能,以便自動處理這個問題。
我使用一些簡單的規則應對過於複雜和無意義的組件規則:
一些樣本:
UPDATE:WIX現在有一個新的auto-generate component GUID功能,calculates a GUID只要目標路徑保持不變。我沒有嘗試過這個說實話,但很多似乎沒有問題,並Rob Mensching (Wix author) states it is safe for normal use。作爲一個概念,我強烈推薦這個,因爲它具有一些自動魔法,並且保護你不受某些複雜因素的影響。
另請注意,you can leave out a lot of source attributes from your Wix xml file並依賴於Wix默認值而不是硬編碼值。
有史以來最偉大的迴應。你搖滾! – Rohit 2009-09-18 14:36:24
關於「絕對路徑」的部分並不完全正確。您可以將相同的組件(相同的GUID)安裝到不同的目錄,並且引用計數可以正常工作。目錄簡化了上述說明。 – 2009-09-26 06:57:04
在文件成本計算並解析目錄表及其目錄屬性並且用戶具有(可能)選擇安裝目錄之後,組件GUID將指向絕對關鍵路徑? 我認爲最簡單的方法是關注你的源文件夾 - 如果你移動你的源文件夾中的文件,你改變了GUID。據我所知,實際的安裝位置是一個「移動目標」,直到解決目錄爲止,但你總是以絕對路徑作爲每個安裝組件的關鍵路徑? – 2009-09-26 18:28:23
查看WiX Tutorial, The Files Inside,瞭解組件規則的詳細說明。基本上,它說你永遠不會改變組件的GUID,因爲這意味着孤立舊組件並創建一個新組件。
該鏈接很有用,但答案對決定要閱讀的內容並不是很有幫助(並非所有人都有很多時間)。我建議至少從文章中添加一個引用,像*'[...],一個組件應該只包含強大的屬性,以便始終需要一起安裝或刪除它們。如果這意味着一個文件,那麼你的組件將包含一個單獨的文件。這不僅是正常的,而且正是你所期望的。不要害怕,如果需要,Windows安裝程序可以有效地處理數千個或更多的組件。* * – Wolf 2016-10-25 10:06:18
您永遠不會更改組件/ @ Guid。您也不會更改組件中的資源(文件,註冊表鍵,快捷鍵,類型庫等)。當你有一個新的資源時,你必須用一個新的@Guid創建一個新的組件。真正棘手的部分是新組件可能與舊組件沒有重疊(認爲文件路徑或註冊表鍵路徑或typelib等)。
這些基本上是組件規則,請查看:http://robmensching.com/blog/posts/2003/10/18/Component-Rules-101。
將組件安裝的位置作爲任何效果執行嗎? – Rohit 2009-09-10 15:02:47
是和不是。 :)如果您更改Component/@目錄,那麼您不必*更改組件/ @ Guid,但如果您想要......只要組件中沒有其他資源(如註冊表項)即可。如果組件中有其他資源,並且您將其更改爲Guid,則所有資源都需要一個新的名稱或路徑。當然,新的位置會照顧文件。 不,組件規則並不簡單。 – 2009-09-11 10:49:28
@RobMensching。如果我們在Heat中使用-ag選項會怎樣?正如我們所知,它在鏈接時根據Glytzhkof在上面的響應中定義的場景生成ComponentIds。在所有這些註釋之後添加了 – 2014-02-18 04:04:24
你能否在你的問題中增加更多細節?我不確定你在問什麼。 – 2009-09-10 12:53:25