2012-06-06 61 views
0

這應該很簡單,但我似乎無法得到它。我有一個安裝項目(VS2010),它打包幾十個圖像文件(以及我的SQLite文件),並在程序安裝時將它們複製到用戶的計算機上。由於這些圖像本質上是「庫存」圖像,因此如果用戶刪除它們(在程序內部有功能可以這樣做)。然而,在刪除了一個或多個這些圖像之後,下一次程序啓動時,它會給出一個「Windows安裝程序」對話框,並刪除所有剩餘的數據文件!安裝文件被刪除後,VS安裝項目會破壞自我

我認爲發生的事情是程序看到丟失的文件,假定安裝已損壞,並嘗試進入某種恢復/卸載模式。我想知道如何在安裝項目中指出需要安裝的文件,但可以隨時由用戶刪除。

我已經嘗試過幾種文件屬性的組合,而且似乎沒有什麼能夠完成我想要的功能,這是我的安裝程序將它們放在我說的地方,並且再也不用考慮它們。我是否必須重新發明輪子並通過自定義操作來完成此操作?

編輯:傳遞和重要都被設置爲True。將它們設置爲False會導致程序在重新啓動後重新添加刪除的圖像!如果我沒有得到答案,我可能會採用自定義操作。

回答

2

當使用文件關聯或公佈的快捷方式時,Windows安裝程序會自動檢查component key paths是否丟失。如果找不到鍵路徑,則會觸發修復以重新安裝組件。

您的安裝程序修復過程很可能會刪除其他文件。

解決方案是不向Windows Installer註冊組件。這是通過使用空組件GUID完成的,並且它不受Visual Studio安裝項目支持(但它受到大多數其他安裝工具的支持)。

另一種解決方案是確保圖像文件不是其組件中的關鍵路徑。這也不受Visual Studio支持。

如果要使用安裝創作工具,它提供了更多的控制,你可以在這個列表看看:http://en.wikipedia.org/wiki/List_of_installation_software

+0

感謝您的答覆!我知道Visual Studio安裝項目並不理想(甚至在VS2012中也不會支持),但我承諾在這一點上。這種看起來最適合我的需求是讓安裝程序將這些文件放在安裝目錄中,然後編寫一個自定義操作將它們複製到用戶數據目錄中,這樣Windows安裝程序就不會知道數據中的那些DIR。 再一次,我真的很感謝你的迴應,我不確定我會得到一個很好的答案! –

相關問題