检测到Inno Setup时停止InstallShield安装

蓝宝石

我正在尝试从InstallShield迁移到Inno Setup。我已经完成了所有设置,但是当用户可能从Inno Setup降级到InstallShield时,我遇到了一个单一的问题。我需要InstallShield来使安装失败或至少警告用户首先手动卸载Inno Setup版本(否则,我安装了两个版本,事情变得一团糟)。

我当然不能以任何方式更改现有的InstallShield安装程序,因为它们已经发布。解决方案必须来自Inno Setup。任何想法如何做到这一点?我知道这可能对我来说是不可能的。

蓝宝石

好,我解决了。(有点儿)

有一个简单的技巧可以使InstallShield认为它已经安装(即使尚未安装)也可以做。

首先,您需要找到通常由InstallShield创建的带有UpgradeCode和ProductCode的所有注册表项(对于UC应该是3个条目,对于PC应该是5个条目)。还要注意,两个GUIDS都以相反的形式存储在注册表中(前8个字符是向后的!!-其余我不确定,但是可以用谷歌搜索)。

现在,您需要使InnoSetup重新创建此注册表项。当InstallShield启动时,它将在注册表中查找现有版本,如果找到该版本,则尝试使用原始安装程序的副本将其卸载-副本的路径存储在注册表中,网址为

[HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ Windows \ CurrentVersion \ Installer \ UserData \ S-1-5-18 \ Products {产品代码的反向向导} \ InstallProperties]

“ LocalPackage” =“ C:\ Windows \ Installer \ [随机字符串] .msi”

如果InstallShield找不到此文件,它将失败。您也可以创建自己的MSI文件,该文件将从InnoSetup中调用uninstall.exe文件。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

在Inno Setup中检测到安装被中止/取消

来自分类Dev

Inno Setup,检测Java版本

来自分类Dev

在Inno Setup中重新安装和卸载时停止Windows服务

来自分类Dev

Inno Setup:尝试卸载时检测安装程序是否正在运行

来自分类Dev

检测到重复值的烧瓶SQLAlchemy时停止插入表

来自分类Dev

未检测到Python 3.8安装

来自分类Dev

(USB)设备检测到输出安装点

来自分类Dev

Windows 7安装无法检测到硬盘

来自分类Dev

安装debian buster时未检测到其他固件

来自分类Dev

Inno Setup:仅在非常安静时安装

来自分类Dev

Inno Setup:仅在不静音时安装

来自分类Dev

Inno Setup检测处理器数量

来自分类Dev

Inno Setup,检测参数文件是否存在?

来自分类Dev

从通道读取时未检测到“死锁”

来自分类Dev

检测到MotionShake时GPUImage不更新

来自分类Dev

在Unity中检测到applicationDidBecomeActive时?

来自分类Dev

检测到颜色时单击的Javascript命令

来自分类Dev

检测到生锈时的按键按下?

来自分类Dev

等待资源时检测到死锁

来自分类Dev

释放 QPushbutton 时未检测到插槽

来自分类Dev

检测到字时启动功能命令

来自分类Dev

Windows(7或8)在安装过程中未检测到SSD,Linux会检测到

来自分类Dev

有时检测到SATA硬盘/有时未检测到

来自分类Dev

QAudioRecorder检测到用户不说话并停止

来自分类Dev

检测到特定颜色后停止网络摄像头

来自分类Dev

与Windows 10一起安装时未检测到Windows 7安装可启动USB

来自分类Dev

java4安装检测到java8

来自分类Dev

Ubuntu安装程序无法检测到Windows 7

来自分类Dev

Python:未检测到已安装的硒包