2009-08-26 28 views
2

我在VS2005中有一個設置&部署項目。我正在安裝的一個文件是一個SQLite數據文件。如何告訴MSI不要在VS2005中設置和部署項目中覆蓋現有文件?

我即將發佈該軟件的新版本,但我發現如果在現有安裝上運行更新,它會覆蓋數據文件。

我在安裝項目中有一個更新的數據文件,因此它比已經安裝的更新,但我不想覆蓋它。

我試着設置該文件的永久屬性爲True,但無濟於事。

有什麼建議嗎?

回答

1

好吧,下面是我用一種變通方法:我已經改名爲從Database.db我的空白數據庫文件,以數據庫爲blank.db

  • 在我的安裝項目。
  • 在我的應用程序中,我正在檢查Database.db是否丟失,並將Database-blank.db複製到Database.db中(如果是)。
  • 然後只需加載現有Database.db

這樣我可以保證數據文件(Database.db)的本地副本沒有得到由軟件的新版本替換。

0

在MSI中,最好的方法是在Upgrade table中創建一個記錄,確定這是否是升級安裝,並設置屬性(如果是)。然後將數據文件放在component中,並在組件上放置條件。或者,在AppSearch table中輸入一個條目,檢查是否存在該文件(通過DrLocator table)。

我不知道設置&部署項目是否支持這些。因此,作爲回退,以不同的名稱安裝該文件,然後創建一個自定義操作,以便有條件地複製該文件。

0

由於VS2005安裝程序首先升級程序時,首先刪除原來安裝的實例 ,然後安裝一個新的程序,以便每次刪除該文件。

避免替換或覆蓋文件我建議如下: 1-在安裝項目中將文件標記爲只讀文件。在設置項目中將文件標記爲永久文件。

現在升級文件後,它不會被覆蓋,但是你的應用程序不能處理這個文件,因爲它是隻讀的,所以在你的應用程序啓動時檢查數據文件是否只讀取消。

+0

感謝您的輸入,Wael。 實際上,如果文件在安裝後發生更改,它不會刪除該文件。 我試過你的建議永久和只讀,但它仍然覆蓋該文件。 – Muxa 2009-08-26 09:55:25

相關問題