0

过去,我使用 InstallAnywhere 构建我的设置。我现在已切换到 InnoSetup 作为我的新设置提供程序。

在安装新安装之前,我需要删除整个旧安装。Innosetup 识别旧安装程序并首先执行“旧”卸载程序,但旧安装程序无法识别 Innosetup 的卸载程序。由于旧设置已经存在,我无法更改这些配置。

如何让 InstallAnywhere 识别 Innosetup 卸载程序,而不能更改 InstallAnywhere 配置?

Windows 是否有某种“标准方式”来检查是否已安装相同的应用程序?

我已经尝试在 Innosetup 中创建 InstallAnywhere 注册表项以“模拟”以前的 InstallAnywhere 卸载程序 - 但没有成功。

4

1 回答 1

1

我找到了 InstallAnywhere 存储自己的自定义“注册表”的位置。似乎所有 Flexera 产品都使用这种机制。

有一个 XML 文件C:\Program Files (x86)\Zero G Registry\.com.zerog.registry.xml,其中包含有关所有已安装组件的信息。不幸的是,文件格式没有记录,也没有包含对模式定义的任何引用。

我基本上找到了一种解决方法:我正在创建一个“虚拟”InstallAnywhere 安装程序,它在 InnoSetup 安装过程中被静默安装。它只用于做一件事情:被 IA 安装程序检测到,并在卸载期间调用 InnoSetup 卸载程序。

于 2016-02-29T07:03:49.607 回答