为什么在小更新或小升级后没有在注册表中更新 packagecode? [英] Why packagecode is not being updated in registry after a small update or minor upgrade?
问题描述
我安装了一个应用程序,我正在做一个小的更新(新的 msi 带有新的包代码,但相同的版本、产品代码和升级代码).更新工作正常,但我注意到我以后无法卸载该软件(它给出一个错误,说找不到源文件并要求我找到它.如果我指向原始 MSI 文件 - 而不是新文件 - 那卸载正常).
I have an application installed and I am doing a small update (new msi with new package code but same version, product code and upgrade code). The update works fine but I noticed that I am not able to uninstall the software later (it gives an error saying that cannot find the source file and ask me to locate it. If I point the original MSI file - not the new one - that the uninstall occurs fine).
我认为这是由于新 msi 的包代码没有替换注册表中以前的包代码值 (HCR\Installer\Products\GUID).
I think that is due to the package code of the new msi not replacing the former package code value in the registry (HCR\Installer\Products\GUID).
如何强制安装新的 msi 更新该注册表?我已经尝试使用 REINSTALL=ALL 和 REINSTALLMODE=vomus(vamus 和其他几种组合).
How can I force the installation of the new msi update that registry? I already tried using REINSTALL=ALL with REINSTALLMODE=vomus (vamus, and several other combinations).
我在进行小规模升级时遇到了同样的问题(新包代码、新版本但相同的产品代码和相同的升级代码).
I see the same issue when doing a minor upgrade (new package code, new version but same product code and same upgrade code).
我使用 Installshield 创建的 msi 文件.
My msi file as created using Installshield.
推荐答案
经过几次尝试后,我放弃了使用小升级,而是使用与安装程序一起进行的大升级(新项目代码、新包代码、相同升级代码).来自 installshield 的 exe.
After several tentatives, I gave up using small upgrades and I am using major upgrades (new project code, new package code, same upgrade code) with the setup.exe from installshield.
但作为一个额外的信息,我认为我在小升级时遇到的问题与 installshield 创建的 setup.exe 有某种关系.我能够使用 .msi 文件进行小型升级并且卸载工作正常(必须通过 cmd 行安装第二个 msi 文件msiexec.exe/i \product.msi REINSTALLMODE=vomus REINSTALL=ALL").如果您只是尝试通过双击 msi Windows 来安装更新,您将收到一条消息,表明该产品已安装).
But just as an extra info, I think the issue I was facing with the small upgrade is somehow related with the setup.exe created by installshield. I was able to do small upgrade using .msi files and the uninstall worked fine (the 2nd msi file must be installed via cmd line "msiexec.exe /i \product.msi REINSTALLMODE=vomus REINSTALL=ALL"). If you just try to install update via double click on the msi Windows you will give you a message that the product is already installed).
正如@Stein Åsmul 所建议的那样,只需进行重大升级即可.
As sugested by @Stein Åsmul, just go with the major upgrade.
以下是我发现的与该问题相关的一些链接:
Here are some links that I found related to that issue:
https://community.flexera.com/t5/InstallShield-Forum/Minor-Upgrade-breaks-Uninstall/td-p/115568
http://www.msigeek.com/1256/how-do-you-create-a-minor-upgrade-for-an-application-using-installshieldhttps://vincechan.me/2016/05/17/reinstallmode-vs-reinstallmodetext/
这篇关于为什么在小更新或小升级后没有在注册表中更新 packagecode?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!