2012-11-20 23 views
3

我的程序包含一個sql lite數據庫文件,我的程序在首次運行後創建,然後將數據存儲在updon應用程序使用情況中。數據庫建立一段時間。 db文件是在程序的安裝目錄下創建的哪裏存儲Windows程序數據文件?

我有定期更新應用程序,當有bug修復時,基本上我發佈了一個新的msi安裝程序,安裝程序刪除了除db之外的舊安裝文件文件並安裝新的程序文件。

某些用戶不會將其安裝到默認位置,因此在其選定位置db文件不存在。

我想知道是否可以將數據文件存儲到安裝目錄之外的某些程序數據文件夾中?以便我的程序的每個新更新都可以訪問該程序數據文件夾中的數據。

在windows xp,vista和7中是否有任何程序數據目錄?以及如何訪問在C#

感謝,

+1

這不是一種正常的部署,您沒有對安裝EXE的目錄的寫訪問權限。 UAC制止了這一點。文件必須存儲在AppData目錄中。這也解決了這個問題。 –

+0

謝謝:),它幫助 – Ahmed

回答

7

將用戶數據存儲在應用程序文件夾中是非常危險的。如果用戶更新或卸載應用程序,數據不僅會被破壞,而且標準用戶甚至無法寫入應用程序目錄。

我通常在應用程序中包含種子數據庫,並在應用程序啓動時將其複製到Environment.SpecialFolder.ApplicationData文件夾中的文件夾中。所有用戶數據都存儲在副本中;如果用戶卸載應用程序,則種子數據庫將被刪除,但用戶數據將保留。例如,請參閱此SO answer

+0

謝謝你的幫助 – Ahmed

+0

什麼是IsolatedStorage? – Kiquenet

1

你不應該存儲在安裝文件夾中的數據。 Try this。專用文件夾專爲您設計,可以存儲此類數據。還有應用程序設置,它們可以訪問並提供一種簡單的方法來存儲用戶鍵值對Information

7

看看here來決定你的數據的正確位置。

我會投票支持eighter

  • 的ApplicationData(當前用戶roming配置文件)
  • CommonApplicationData(本地計算機上的所有用戶)
  • LocalApplicationData(本地計算機上當前用戶)

獲取您選擇的文件夾

Environment.GetFolderPath(Environment.SpecialFolder.xxx))