似乎升級安裝不會用新版本替換文件,但它們實際上會卸載舊的安裝程序包並安裝新的安裝程序包。讓我們想象我已經安裝了我的應用程序,並在安裝目錄中生成了一些文件。然後用戶獲得新版本的產品並啓動安裝包。該軟件包刪除舊版本的產品(因爲新的安裝軟件包已將「刪除以前的版本」設置爲true,更高的版本號和不同的產品代碼)。由應用程序創建但不是由包創建的文件不會被刪除,而且這很好。但用戶可以將新版本安裝到其他位置,然後應用程序將找不到舊的應用程序文件。如何處理它?如果應用程序已安裝,請編寫一些自定義操作和條件以跳過文件夾選擇屏幕?或者,也許已經有一種內置的方式來升級指定目錄中的舊安裝文件?可以升級安裝替換文件嗎?
2
A
回答
1
您的應用程序不應將其設置存儲在Program Files中,它們應存儲在CommonAppDataFolder
,AppDataFolder
或LocalAppDataFolder
中。如果您使用這些文件夾中的一個來存儲您的應用程序設置/數據,則用戶可以自由將其安裝到任何其他位置,並且應用程序仍會看到其設置/數據。
據我瞭解,升級的行爲取決於你計劃安裝序列RemoveExistingProducts
行動。
編輯:既然你不能改變你的程序保存其文件,你將不得不手動跟蹤的安裝位置。執行升級操作時,更新的產品通常會安裝到相同的位置(這可能需要更改您的嚮導UI)。
如果您希望即使手動重新安裝(即用戶卸載您的應用程序,然後再次將其重新安裝到另一個位置)仍保留設置,我所看到的唯一選項是將安裝位置存儲在註冊表中。如果該值不在註冊表中,則不應運行其他操作。如果存在以前安裝位置的值,則將其保存。然後將設置/數據從舊位置移動到新位置(通過將臨時行添加到MoveFile
表中)。最後,將新的安裝位置保存到註冊表中。
請注意,在Windows Vista及更高版本下,在Program Files中存儲設置/文件可能無法正常工作,尤其是在UAC打開時;並且您的設置可能實際上存儲在虛擬存儲區而不是程序文件中。更新應用程序將比嘗試移動文件更好。
相關問題
- 1. Install4j:安裝後可以安裝可執行文件嗎?
- 2. OpenShift上的Node.JS可以升級嗎?
- 3. 可以安裝4j忽略以前的安裝重新安裝/升級默認目錄?
- 4. 我可以換裝img替代文字嗎?
- 5. 可以安裝symfony嗎?
- 6. UIWebView可以替換Safari嗎?
- 7. .net安裝項目強制重新安裝新文件替換
- 8. 螞蟻可以替換jar/ear/war文件中的文本嗎?
- 9. 可以用regex替代替換嗎?
- 10. WIX - 主要升級卸載它沒有安裝的文件
- 11. Web安裝項目從VS2008升級到VS2010後刪除文件
- 12. wix主要升級不安裝所有文件
- 13. 將Artifactory從3.2.1.1升級到5.4.6失敗(僅WAR文件安裝)
- 14. 將WiX安裝集升級到相同的文件夾
- 15. WIX升級只有版本而不是已安裝的文件
- 16. WiX主要升級拒絕替換現有的文件!
- 17. 替換WiX主要升級中的未版本化文件
- 18. 如何在MSI升級時強制進行文件替換
- 19. Windows安裝程序中的主要升級與次要升級
- 20. NullSoft安裝程序 - 升級應用程序時升級app.config
- 21. Windows安裝程序升級與以前的版本但不改變DLL文件
- 22. 安裝文件名可以從可執行文件的版本號派生嗎?
- 23. 是否可以將可移植的Python 32位安裝升級到64位安裝?
- 24. 我們可以將iphone sdk 3.1升級到更高級別嗎?
- 25. R升級到3.4安裝包
- 26. 新手:安裝和升級Python模塊
- 27. 升級或安裝自制公式
- 28. Python2.7,33的pip安裝/升級錯誤
- 29. 如何升級我的MacPorts Perl安裝?
- 30. 將Visual Studio安裝升級到WiX
這是一個好點,但我不能改變我的應用程序存儲文件的方式/方式。 – 2011-04-26 11:02:04
@ Bogdan0x400我更新了答案。 – 2011-04-26 12:21:02