Bootstrapper GUID

时间:2014-11-04 18:54:26

标签: .net wix installer bootstrapper burn

WiX刻录引导程序会在HKLM\Software\Microsoft\Windows\CurrentVersion\Uninstall\SOMEGUIDHKLM\Software\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\SOMEGUID中安装密钥,具体取决于体系结构。我注意到每当我创建一个新版本时SOMEGUID都会发生变化。我对SOMEGUID有一些疑问,如果有人能够解释一下,以下任何一个问题的答案将会非常有用:

  1. 如何在从引导程序安装之前确定SOMEGUID将成为的内容?
  2. 是否可以硬编码SOMEGUID

2 个答案:

答案 0 :(得分:1)

  1. 根据BundleID属性确定。
  2. 没有,它的内部设定,我们无法控制它。
  3. 每次编译引导程序项目时,都会为其分配一个新标识 - 一个名为BundleId的GUID,您无法更改。在这方面,您创建的每个捆绑都是唯一的。 UpgradeCode属性允许我们链接两个bootstrappers,使它们成为相关的bundle。此关系允许一个捆绑包检测并升级另一个捆绑包的已安装包。

    但提供商密钥硬编码背后的理性是什么?就像在MSI中一样,如果两个捆绑包具有相同的产品代码,它将无法正确处理主要/次要升级。

答案 1 :(得分: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.然后使用关键字dep将Provide键定义为

<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">