使用Inno Setup删除安装期间未安装Inno Setup的其他应用程序

时间:2010-03-18 13:26:33

标签: installshield inno-setup uninstall uninstaller

我有一个旧的VB6应用程序,使用非常旧的16位版本的InstallShield进行部署。我已经创建了一个新的安装程序,Inno Setup对我的VB6应用程序有64位友好性,并且有更新。

我的所有用户都已安装现有的InstallShield版本。目前,我有Inno安装工作。问题是,我不想覆盖旧的InstallShield安装文件,所以我的Inno安装程序安装到另一个目录。这会导致问题,因为现在我安装了两个版本,带有两个单独的图标。

当我安装新的Inno Setup版本时,我需要一种方法来调用旧的InstallShield应用程序的卸载程序。如何通过Inno Setup从Windows添加/删除程序中调用卸载程序?如果我重用InstallShield版本的app id与Inno Setup相同,然后手动删除旧文件,那会有用吗?

1 个答案:

答案 0 :(得分:6)

您必须找到InstallShield卸载注册表项,该注册表项将位于HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\下,然后执行其UninstallString值。完成后,删除注册表项:无法在Inno安装程序中重复使用相同的密钥,因为它始终会将_is1附加到AppId以生成卸载注册表项名称。此外,在较旧的Windows版本上,由于长度限制,它也可能会截断此密钥名称并附加校验和。

PrepareToInstall事件函数执行所有操作。