2013-12-10 29 views
0

我正在爲將替換舊的Visual Studio安裝程序的產品創建WiX安裝程序,並將提供新的構建版本(從1.0.5升級到1.0.6) 。我知道我需要讓安裝程序計算產品的GUID,並且我需要使產品的升級代碼與之前產品中的代碼相同。從VS安裝程序轉換後的WiX組件Guid

我需要知道的是如何確定我的組件的GUID。我發現以下聲明:

組件GUID = - 這是應該從上一代產品複製的產品/組件代碼。如果這不可行或不可行,那麼必須通知客戶在安裝新版本之前應該卸載以前的版本。否則,可能會出現產品代碼擁有PC上的哪個文件的衝突。

我認爲Guid會來自我在組件中包含的程序集的程序集信息。那是對的嗎?

謝謝!

回答

0

不知道你從哪裏得到這些信息,但這不是很正確。組件GUID與組件信息根本沒有關係。

組件GUID只是安裝程序中每個資源的唯一標識符(它可以是文件,註冊表項或甚至只是一批sql腳本)。如果您有2個安裝程序並排安裝,並且可以共享某些文件,則可以爲共享組件使用相同的GUID。 Windows安裝程序將自動處理依賴關係。它可能與現實世界的例子更容易:

  • 產品A具有ComponentA,以componentB和ComponentC
  • 產品B具有ComponentC,ComponentD和ComponentE

如果同時安裝如果ComponentC只安裝一次GUID是一樣的。如果InstallerB未安裝,則ComponentC保留,因爲ProductA仍依賴於它,反之亦然,如果ProductA未安裝且ProductB保留。只有在兩者都被刪除後,ComponentC纔會被刪除。

如果在ProductB中更改ComponentC(不更改GUID),則會出現併發症,這意味着它將與ProductA不兼容。如果發生這種情況並且升級了產品B,則會中斷ProductA的安裝。請參閱http://msdn.microsoft.com/en-us/library/aa372795(v=vs.85).aspx以獲取有關組件規則和其他會破壞安裝的場景的更多信息。

處理它們的最簡單和最安全的方法就是使用「*」,因爲wix會自動爲該組件生成GUID。

+0

非常好,謝謝!我試圖通過一些教程工作,但他們中沒有一個人似乎深入探討了從另一種安裝程序轉換的主題。這是我從該網站獲得的信息,供參考:[http://www.merlinia.com/mdt/WiXTutorial1.msl](http://www.merlinia.com/mdt/WiXTutorial1.msl) – Neverforget115

+2

對於升級從以前的安裝程序,即vbdproj,你真正需要做的就是確保UpdgradeCode guid匹配,Product guid不同,版本號高於以前的版本並使用MajorUpgrade元素(http://wixtoolset.org /documentation/manual/v3/xsd/wix/majorupgrade.html)。這樣它將完全卸載舊msi並安裝新的msi。 –