2

我已经使用 InstallShield 2011 Basic MSI 成功创建了标准补丁。我无法检测到已安装的应用程序的早期版本。例如,我有一个名为 XYZ 的应用程序,其基本版本为 3.7.0.188,我想用 3.7.0.201 版本对其进行修补。我可以成功地将这个补丁应用到 3.7.0.188 基础上。现在,如果我安装早期版本的应用程序 XYZ (3.7.0.173) 并尝试应用我的补丁,它会失败。我希望能够检测到这一点并显示一个无法完成的对话框,还是我的想法都错了?这样做的正确方法是什么?我觉得 InstallShield 应该能够天生做到这一点。

4

2 回答 2

0

通常,当您尝试将补丁应用到与其目标不匹配的版本时,Windows Installer 应该会给您类似“Windows Installer 服务无法安装升级补丁,因为要升级的程序可能丢失,或者升级补丁可能会更新程序的不同版本...”您没有收到此消息吗?

据我所知,这是由操作系统控制的,而不是由 InstallShield 控制的。

于 2013-01-10T08:44:48.923 回答
0

要探索的一件事是,如果您使用次要升级补丁而不是上面描述的小更新补丁,您是否会看到不同的行为。由于您尚未更改 ProductVersion 的前三个部分之一,因此您正在交付一个小更新。这些更难推理,因为 Windows Installer 通常认为这些版本是等效的,并且根本不会做任何事情来防止您走“错误”的方向。

请参阅修补和升级以及有关小更新和小升级的链接文章。

于 2013-01-10T13:12:39.590 回答