Windows installer 使用标准修补程序时如何检测以前的版本

Windows installer 使用标准修补程序时如何检测以前的版本,windows-installer,installshield,patch,installshield-2011,Windows Installer,Installshield,Patch,Installshield 2011,我已经使用InstallShield 2011 Basic MSI成功创建了一个标准修补程序。我在检测已安装的应用程序的早期版本时遇到问题。例如,我有一个名为XYZ的应用程序,其基本版本为3.7.0.188,我想用版本3.7.0.201对其进行修补。我可以成功地将此修补程序应用于3.7.0.188基座。现在,如果我安装了应用程序XYZ的早期版本(3.7.0.173)并尝试应用我的修补程序,它将失败。我希望能够检测到这一点,并显示一个对话框,这是无法做到的,或者是我的想法都错了?正确的方法是什么?

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

通常,当您尝试将修补程序应用到与其目标不匹配的版本时,Windows Installer会给您一条类似于“Windows Installer服务无法安装升级修补程序,因为要升级的程序可能丢失,或者升级修补程序可能更新程序的其他版本…”的消息你没有收到这个消息吗


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

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


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

我没有收到这条消息。当我在比较产品代码和升级代码时查看日志,它说两者都有效,但当它再次查找产品代码(在注册表中?)时,它在数据库中找不到它。我不确定它指的是什么数据库。我曾试图在Flexera论坛上获得这方面的帮助,但需要很长时间才能得到回复。是的,它会在注册表中查找所有信息。数据库是MSI包,它实际上包含表,与数据库完全相同。你能附上这个安装的完整详细日志吗?这个日志是非常详细的日志,我可以粘贴在这里吗?或者有没有办法附加它?顺便说一句,“它失败了”是非常非描述性的。提供您看到的任何错误消息(只是安装中断对话框?)以及详细日志中看到的任何相关错误代码会更清楚。这是我得到的错误:错误1328。将修补程序应用到文件C:\Config.Msi\PTC90A.tmp时出错。它可能已通过其他方式进行了更新,并且无法再通过此修补程序进行修改。有关详细信息,请与修补程序供应商联系。系统错误:-1072807676