我有两个程序(A和B(具有相同的升级代码-当一个程序正在安装时,另一个程序将被卸载。现在我必须在同一台机器上安装两个程序,为了做到这一点,我更改了一个程序的升级代码(A(我的问题是,如果我的电脑上已经安装了旧版本的A,MSI不会识别新的升级代码,而是进行新的安装。如何卸载旧版本?有没有办法从installShield做到这一点?我试着制作一个自定义脚本:
LAAW_SHELLEXECUTEVERB = "runas";
MessageBox("result incercam uninstall",INFORMATION);
command_e = "wmic product where "description='IP Office Admin Lite'" uninstall";
LaunchApplication( "cmd.exe",
"/C " + command_e,
"",
SW_MINIMIZE, 0, LAAW_OPTION_WAIT );
但不知何故,它并不是每次都有效,我认为这与时间有关。你觉得怎么样?
升级表 :如果这是MSI——既然你提到了升级代码,它应该是MSI——你通常可以卸载任何通过编写您正在安装的MSI。
事实上,这是你应该做的,不要依赖任何自定义的动作构造,因为它们往往会引起问题。这是MSI的内置";"重大升级";旨在为您自己的产品提供升级的功能
请参阅此处的技术说明:
- 在安装时删除其他软件
- 将条目添加到MSI UpgradeTable以删除相关产品
在Installshield中,您应该在Upgrades视图(Installshield help file
(中添加旧的升级代码,但我目前没有Installshield可以尝试。与WiX结构相关的答案应显示整个过程。