使用Inno Setup在安装过程中删除另一个未使用Inno Setup安装的应用程序

4
我有一个旧的VB6应用程序,使用非常老的16位版本的InstallShield进行部署。我已经使用Inno Setup创建了一个新的安装程序,以便为我的VB6应用程序带来64位友好的更新。
我的所有用户都已经安装了现有的InstallShield版本。目前,我的Inno Setup可以正常工作。问题是,我不想覆盖旧的InstallShield安装文件,因此我的Inno Setup会安装到另一个目录中。这会导致问题,因为现在我有两个版本安装,带有两个单独的图标。
我需要一种方法,在安装新的Inno Setup版本时调用旧的InstallShield应用程序的卸载程序。我该如何通过Inno Setup从Windows“添加/删除程序”中调用卸载程序?如果我重复使用InstallShield版本的应用程序ID与Inno Setup相同,然后手动删除旧文件,那么是否有效?

不知道你是否已经解决了,但这里有一个很好的解决方案https://dev59.com/hEzSa4cB1Zd3GeqPoKCy#2466537。 - Joran Beasley
1个回答

6
您需要定位InstallShield卸载注册表键,该键将驻留在HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\下,然后执行其UninstallString值。完成此操作后,删除注册表键:由于Inno Setup始终将_is1附加到您的AppId以生成卸载注册表键名称,因此无法重复使用相同的键。另外,在旧版本的Windows上,它可能会截断此键名并追加校验和,因为长度限制。请在PrepareToInstall事件函数中执行所有这些操作。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接