0

我正在通過Visual Studio安裝項目創建Windows安裝程序(.msi)文件。 當運行.msi文件時,如果目標文件夾已經存在並且有一些文件和子文件夾,那麼在安裝我的應用程序之前如何刪除它們? 我已經搜索,但沒有找到解決方案。Visual Studio安裝項目:如何在安裝我的應用程序之前刪除目標文件夾中的所有傳統文件和文件夾?

+0

他們在什麼意義上是「遺產」?你是否說已經有一個產品安裝在該文件夾中的文件上?您是否將產品升級到相同位置,並且希望卸載舊版本? – PhilDW

+0

@PhilDW:是的。我將我的產品升級到同一位置,我想卸載舊版本(包括在運行時生成的臨時文件和文件夾)? – tuanpm

回答

0

對於升級這應該幫助:

https://www.red-gate.com/simple-talk/dotnet/visual-studio/updates-to-setup-projects/?_ga=2.123102924.696294303.1504290215-1234024276.1504290215

基本上更新安裝項目的版本,接受改變,建築升級MSI時設置RemovePreviousVersions爲true。另外(不是在文章中),您必須遞增正在升級的二進制文件的文件版本。這會在安裝新版本時卸載舊產品。

該帖子並未說明臨時文件在哪裏,但是如果它們是數據文件或臨時文件,應用程序不應該在Program Files文件夾中創建它們,因爲它不是推薦位置(有爲臨時文件(如臨時文件夾)定義好的文件夾),並且它需要提升才能在Program Files中寫入/更新文件,因此該應用僅限於管理員用戶。

卸載不會刪除應用程序創建的文件(您不希望卸載Word以刪除所有文檔文件),因此應用程序可能更容易在第一時間不創建它們,或者在首次啓動時將其刪除。卸載的普通代碼解決方案將是您的舊產品中的卸載自定義操作,將其刪除,但如果舊版本已發貨,則爲時已晚。

此外,在全新安裝(即使是升級)時,如果您顯示瀏覽對話框以選擇應用程序文件夾,則用戶可以選擇安裝到另一個位置,這意味着文件留在一些孤兒中例如,Program Files文件夾。

相關問題