我有一个版本号的应用程序:1.0.0.1,它是升级到旧版本1.0.0.0。

当我尝试安装新版本时 1.0.0.1,当我的系统已经安装了旧版本时,我是 获得错误2869。

但如果我手动卸载旧版本,而不是尝试安装较新版本,那么它成功安装。

我更改了新版本的产品代码。但没有改变升级代码。

有人可以让我知道这个原因并解决这个问题吗?

有帮助吗?

解决方案

In the MSI ProductVersion property only the first 3 fields are significant when comparing versions using the major upgrade logic. So in your case MSI will consider 1.0.0.1 and 1.0.0.0 to both be 1.0.0. FindRelatedProducts will therefore not detect this situation as an upgrade.

The way I approach this is to create a 'packed' version where the 3rd and 4th fields are combined into one using, say (4096*f3 + f4), but this will behove you never to have a 4th field (build number) greater than 4096, and a 3rd field no bigger than 15, since 0xFFFF is the maximum for a version field.

This allows us to perform major upgrades between individual nightly builds, not just service packs, without requiring a bootstrapper to achieve a minor upgrade, and we can have a new productcode for every build so there's no need to have to remember to update it manually when the need arises.

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top