1

我们使用托管引导程序。

我们的捆绑包中有两种产品(我们称之为BundleName) -ProductAProductB. 我们安装了这两种产品,它工作正常。

接下来我们更改 from to 的版本和from toBundleName1.0.0.0MSI2.0.0.0版本。ProductA1.0.0.02.0.0.0

执行升级。BundleName 1.0.0.0它成功完成,但在(应卸载的以前版本的捆绑包)的日志中,我们有:

Will not uninstall package: ProductA, found dependents: 1
Found dependent: {ffe63ad2-5155-4958-91cc-b0aac330cdb6}, name: BundleName
Will not uninstall package: ProductB, found dependents: 1
Found dependent: {ffe63ad2-5155-4958-91cc-b0aac330cdb6}, name: BundleName

尽管如此,它工作正常。

当我们删除升级的2.0.0.0 BundleName. 捆绑包成功删除它并且日志很清晰,但它不会删除ProductA.

我们在日志中注意到的另一件事2.0.0.0也有点奇怪:

Planned package: ProductA, state: Present, default requested: Present, ba requested: Present, execute: **MinorUpgrade**, rollback: None, cache: Yes, uncache: Yes, dependency: Register

我们更改了第一个版本号,所以应该MajorUpgrade不是MinorUpgrade.

这是我们的配置:

<Product
   Id="$(var.ProductCode)"
   UpgradeCode="$(var.UpgradeCode)"
   Name="$(var.ProductName)"
   Language="1033"
   Version="$(var.ProductVersion)"
   Manufacturer="$(var.Manufacturer)">

<Upgrade Id="$(var.UpgradeCode)" />
<MajorUpgrade DowngradeErrorMessage="A newer version of $(var.ProductName) is already installed." 
              Schedule="afterInstallInitialize"
              AllowSameVersionUpgrades="yes" />
...

有人可以解释一下我们错过了什么吗?

4

1 回答 1

1

发现了问题。 ProductCodeinProduct元素是固定的,而不是*.

如何:在您的安装程序中实施重大升级

如何:生成 GUID

于 2016-10-18T12:32:13.590 回答