2014-11-04 94 views
1

WiX刻錄引導程序根據體系結構在HKLM\Software\Microsoft\Windows\CurrentVersion\Uninstall\SOMEGUIDHKLM\Software\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\SOMEGUID中安裝密鑰。我注意到,SOMEGUID每當我創建一個新版本時都會更改。我對SOMEGUID一些問題,並回答下列任何將極大地有幫助的情況下,任何人可以向一些啓發:從我的引導程序安裝引導程序GUID

  1. 我怎麼能確定是什麼SOMEGUID前?
  2. 是否可能對硬編碼SOMEGUID

回答

1
  1. 它由BundleID屬性確定。
  2. 不是,它的集合是intermally,我們沒有控制它。

每次編譯引導程序項目時,都會分配一個新標識 - 一個名爲BundleId的GUID,您無法更改該標識。在這方面,您創建的每個包都是唯一的。 UpgradeCode屬性允許我們鏈接兩個引導程序,使它們相關的包。這種關係允許一個包檢測並升級另一個包的安裝包。

但是硬編碼提供者密鑰的理由是什麼?就像在MSI中,如果兩個捆綁包具有相同的產品代碼,它將無法正確處理主要/次要升級。

+0

賽,這是行不通的。我努力了。行爲如下:在我的'Bundle'元素上設置'ProviderKey'只設置'HKLM \ Software \ Microsoft \ Windows \ CurrentVersion \ Uninstall \ SOMEGUID \ @ BundleProviderKey'值,但'SOMEGUID'將總是會有不同如果設置了'ProviderKey',那麼它的值。如果沒有設置,BundleProviderKey和SOMEGUID是一樣的,但就像我上面提到的那樣,我永遠不會知道安裝時會發生什麼。 – Alexandru 2014-11-04 21:00:02

+0

這個問題提到了設置ProviderKey的相同問題,即沒有實現'SOMEGUID'的相同值:http://stackoverflow.com/questions/26675457/how-to-find-guid-of-wix-burn -executable-for-programmatically-uninstall – Alexandru 2014-11-04 21:02:21

+0

理性解釋很複雜,但我會盡力把它寫成單詞,盡我所能。當我向QA發佈新版本時,Burn允許同一版本的自身並排安裝,這使我感到頭痛,因爲對於我的引導程序的相同版本,ARP條目可能會從1增加到很多。所以,我所做的是我隱藏了我的引導程序,使其不能在ARP中可見,只顯示它安裝爲可見的MSI程序包。我試圖保持引導程序與MSI和MSI與引導程序的關係... – Alexandru 2014-11-04 21:07:48

1

我使用的是Wix 3.11版本,並使用以下步驟將Bundle的自定義ProviderKey包括在內 1.將WixDependancy.dll的引用添加到Project。 2.添加額外的標記的dll文件添加爲

<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi" xmlns:util="http://schemas.microsoft.com/wix/UtilExtension" xmlns:bal="http://schemas.microsoft.com/wix/BalExtension" xmlns:dep="http://schemas.microsoft.com/wix/DependencyExtension"> 

3.Then使用關鍵字DEP定義提供關鍵的

<Bundle Name="ABC" ParentName="ParentName" Version="x.x.x." Manufacturer="ABC Company" UpgradeCode="A-a-a-a-a" dep:ProviderKey="b-b-b-b-b">