我已经使用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安装程序服务安装升级修补程序,或者升级补丁程序可能会更新该程序的不同版本......“您是否收到此消息?
这是由我的知识,而不是由InstallShield操作系统控制。
我没有收到该消息。当我比较产品代码和升级代码时看到日志时,它说两者都是有效的,但是当它再次查找产品代码时(在注册表中),它无法在数据库中找到它。我不确定它指的是哪个数据库。我试图在Flexera论坛上获得帮助,但获得答复需要很长时间。 – user1893305
是的,在注册表中查找所有信息。数据库是MSI包,它实际上包含表,就像数据库一样。你能附上这个安装的详细日志吗? –
日志很漂亮,我可以在这里粘贴或者有附加方法吗? – user1893305
有一点需要研究的是,如果您使用次要升级补丁而不是上述小型更新补丁,您会看到不同的行为。由于您尚未更改ProductVersion的前三个部分之一,因此您正在提供一个小更新。这些很难推理,因为Windows安装程序经常认为版本是等同的,并且根本不会做任何事情来阻止您进入“错误”的方向。
请参阅Patching and Upgrades以及关于小更新和小升级的链接文章。
- 1. 如何使用补丁更新我的Drupal本地版本(BZR)
- 2. 如何安装qemu补丁版本?
- 3. Maven工件补丁版本
- 4. 如何告诉jruby-jar使用JRuby的补丁版本?
- 5. 是否可以通过次要和补丁级别检测ANDROID NDK_TOOLCHAIN版本?
- 6. 试图检查前面的颜色补丁,并根据前面补丁的补丁颜色做出决定
- 7. maven版本:准备无法发布带有补丁版本的pom.xml
- 8. 更新补丁程序的新版本
- 9. 检测OpenJDK的修补版本
- 10. 如何将未来版本的git补丁应用到过去的版本?
- 11. 在已安装的以前的快速补丁上应用补丁(通过补丁设计视图创建)
- 12. 使用旧版perforce创建补丁
- 13. 如何将补丁应用于以前的修订?
- 14. NetLogo:可以一次选择多个标准的补丁吗?
- 15. 如何测试以前版本的apk
- 16. JIRA/Greenhopper处理补丁版本?
- 17. 如何使用PHP检测当前的IIS版本?
- 18. 使用Wix Burn检测以前的捆绑版本
- 19. 如何使用svn的capistrano补丁?
- 20. 作曲家版本约束:补丁的稳定性如何?
- 21. 如何迁移到最新的Ruby补丁版本
- 22. 如何重建补丁版本的宝石?
- 23. Git使用补丁
- 24. git格式的补丁可以用于补丁程序吗?
- 25. 如何使用C#检测IIS版本?
- 26. 如何使用php检测iOS版本?
- 27. 如何使用hunk来应用补丁?
- 28. 如何以编程方式找到当前的Oracle补丁集?
- 29. 如何应用补丁
- 30. 如何应用github补丁?
顺便说一句,“它失败”是非常不具描述性的。提供任何您看到的错误消息(它仅仅是“安装程序中断”对话框?)以及在详细日志中看到的任何相关错误代码会更加清楚。 –
这是我得到的错误: 错误1328.错误应用修补程序到文件C:\ Config.Msi \ PTC90A.tmp。它可能已通过其他方式更新,并且不能再由此修补程序修改。有关更多信息,请联系您的补丁供应商系统错误:-1072807676 – user1893305