在安装过程中使用 Inno Setup 删除另一个未随 Inno Setup 安装的应用程序
Posted
技术标签:
【中文标题】在安装过程中使用 Inno Setup 删除另一个未随 Inno Setup 安装的应用程序【英文标题】:Use Inno Setup to delete another application not installed with Inno Setup during installation 【发布时间】:2011-01-29 00:43:56 【问题描述】:我有一个使用非常旧的 16 位版本的 InstallShield 部署的旧 VB6 应用程序。我使用 Inno Setup 创建了一个新的安装程序,以便对我的 VB6 应用程序进行 64 位友好的更新。
我的所有用户都已经安装了现有的 InstallShield 版本。目前,我有 Inno Setup 工作。问题是,我不想覆盖旧的 InstallShield 安装文件,所以我的 Inno Setup 安装到另一个目录。这会导致问题,因为现在我安装了两个版本,带有两个单独的图标。
当我安装新的 Inno Setup 版本时,我需要一种方法来调用旧 InstallShield 应用程序的卸载程序。如何通过 Inno Setup 从 Windows 添加/删除程序中调用卸载程序?如果我重用 InstallShield 版本的 app id 与 Inno Setup 相同,然后手动删除旧文件,这样可以吗?
【问题讨论】:
不知道你是否发现了,但这是一个很好的解决方案***.com/a/2466537/541038 【参考方案1】:您必须找到位于HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\
或HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\
下的InstallShield 卸载注册表项,然后执行其UninstallString
值。完成后,删除注册表项:无法在 Inno Setup 中重复使用相同的项,因为它总是将 _is1
附加到您的 AppId
以生成卸载注册表项名称。此外,在较旧的 Windows 版本上,由于长度限制,它还可能截断此密钥名称并附加校验和。
通过PrepareToInstall
事件函数执行所有这些操作。
【讨论】:
以上是关于在安装过程中使用 Inno Setup 删除另一个未随 Inno Setup 安装的应用程序的主要内容,如果未能解决你的问题,请参考以下文章
我可以告诉 Inno Setup *not* 创建 unins000 文件吗