我已經使用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