在安装过程中使用 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打包的安装文件更换位置后图标改变了

在 Inno Setup 安装中运行另一个安装程序

我可以告诉 Inno Setup *not* 创建 unins000 文件吗

用inno setup如何让程序在安装后删除安装文件夹中无用的文件?

Inno Setup:如何在安装过程中中止/终止设置?

Inno Setup安装前删除旧文件和文件夹