2014-11-04 46 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">