问题描述
我已经安装了一个应用程序,并且正在做一个小更新(带有新程序包代码但版本,产品代码和升级代码相同的新msi)。该更新工作正常,但我注意到我以后无法卸载该软件(它发出错误消息,提示找不到源文件并要求我找到它。如果我指向原始MSI文件(而不是新MSI文件),卸载就可以了。
我认为这是由于新msi的软件包代码未替换注册表中的旧软件包代码值(HCR \ Installer \ Products \ GUID)。
如何强制安装新的msi更新注册表?我已经尝试过将REINSTALL = ALL与REINSTALLMODE = vomus(vamus和其他几种组合)一起使用。
进行次要升级时会遇到相同的问题(新软件包代码,新版本但产品代码和升级代码相同)。
使用Installshield创建的我的msi文件。
解决方法
在尝试了几次之后,我放弃了小升级,而通过installshield.setup.exe使用了大升级(新项目代码,新软件包代码,相同的升级代码)。
但是,作为额外的信息,我认为小升级所面临的问题与installshield创建的setup.exe在某种程度上有关。我可以使用.msi文件进行小型升级,并且卸载工作正常(第二个msi文件必须通过cmd行“ msiexec.exe / i \ product.msi REINSTALLMODE = vomus REINSTALL = ALL 安装” ”)。如果您只是尝试通过双击msi Windows来安装更新,则会显示一条消息,表明该产品已安装。
@SteinÅsmul表示,只需进行主要升级即可。
以下是与该问题相关的一些链接:
https://community.flexera.com/t5/InstallShield-Forum/Minor-Upgrade-breaks-Uninstall/td-p/115568
https://community.flexera.com/t5/InstallShield-Forum/Reinstallmode-is-defaulting-to-vomus/td-p/24565
http://www.msigeek.com/1256/how-do-you-create-a-minor-upgrade-for-an-application-using-installshield https://vincechan.me/2016/05/17/reinstallmode-vs-reinstallmodetext/