我在VS2005中有一個設置&部署項目。我正在安裝的一個文件是一個SQLite數據文件。如何告訴MSI不要在VS2005中設置和部署項目中覆蓋現有文件?
我即將發佈該軟件的新版本,但我發現如果在現有安裝上運行更新,它會覆蓋數據文件。
我在安裝項目中有一個更新的數據文件,因此它比已經安裝的更新,但我不想覆蓋它。
我試着設置該文件的永久屬性爲True,但無濟於事。
有什麼建議嗎?
我在VS2005中有一個設置&部署項目。我正在安裝的一個文件是一個SQLite數據文件。如何告訴MSI不要在VS2005中設置和部署項目中覆蓋現有文件?
我即將發佈該軟件的新版本,但我發現如果在現有安裝上運行更新,它會覆蓋數據文件。
我在安裝項目中有一個更新的數據文件,因此它比已經安裝的更新,但我不想覆蓋它。
我試着設置該文件的永久屬性爲True,但無濟於事。
有什麼建議嗎?
好吧,下面是我用一種變通方法:我已經改名爲從Database.db我的空白數據庫文件,以數據庫爲blank.db
這樣我可以保證數據文件(Database.db)的本地副本沒有得到由軟件的新版本替換。
在MSI中,最好的方法是在Upgrade table中創建一個記錄,確定這是否是升級安裝,並設置屬性(如果是)。然後將數據文件放在component中,並在組件上放置條件。或者,在AppSearch table中輸入一個條目,檢查是否存在該文件(通過DrLocator table)。
我不知道設置&部署項目是否支持這些。因此,作爲回退,以不同的名稱安裝該文件,然後創建一個自定義操作,以便有條件地複製該文件。
由於VS2005安裝程序首先升級程序時,首先刪除原來安裝的實例 ,然後安裝一個新的程序,以便每次刪除該文件。
避免替換或覆蓋文件我建議如下: 1-在安裝項目中將文件標記爲只讀文件。在設置項目中將文件標記爲永久文件。
現在升級文件後,它不會被覆蓋,但是你的應用程序不能處理這個文件,因爲它是隻讀的,所以在你的應用程序啓動時檢查數據文件是否只讀取消。
感謝您的輸入,Wael。 實際上,如果文件在安裝後發生更改,它不會刪除該文件。 我試過你的建議永久和只讀,但它仍然覆蓋該文件。 – Muxa 2009-08-26 09:55:25