2012-08-13 83 views
5

當我編譯我在Visual Studio 2012 RC應用程序,我可以看到如預期的項目源文件夾,在其中有一個foo.exe的產生bin\文件夾,看起來像的入口應用程序。當我開始調試應用程序,它的圖標放置在開始屏幕上,我可以找到部署窗口8應用

的C創建一個新的文件夾:\用戶\人\應用程序數據\本地\包\ xxxxx_xxxxxx

但是我在這個文件夾中找不到foo.exe,即使我搜索了整個磁盤。看起來,win8應用程序具有與舊windows程序不同的安裝/部署機制。我的問題是:

(1)如何/在win8的應用程序部署/安裝?

(2)我想使用\AppData\Local\Packages\xxxxx_xxxxxx\LocalState作爲本地數據文件夾(相當於代碼中的ApplicationData.Current.LocalFolder),但是當右鍵單擊開始屏幕圖標並按下「卸載」時沒有任何警告,刪除整個文件夾。任何更好的地方來存儲本地數據?或者我需要SQLite?例如,我的應用程序寫入所有墜毀的消息在error.txt,很明顯,我不能在這種情況下使用SQLite,如果我在LocalState文件夾放error.txt,用戶可能已經卸載應用程序之前,我去給他看什麼在error.txt。另一種情況是:用戶想要卸載應用程序,但保留其本地數據(文件)。顯然ApplicationData.Current.LocalFolder不是一個好的選擇。

回答

4

1)Windows 8的包被部署到c:

此使用SQLLite網的例子可以在這個頁面的底部找到\ Program Files文件\ windowsapps \,但默認情況下你不沒有該文件夾的所有權,因此無法訪問它。雖然這在很大程度上是無關緊要的。您應該永遠不能通過設計訪問此文件夾。

2)同樣,刪除所述局部數據文件夾爲上卸載的應用程式是預期行爲。否則,如果您通過商店部署了應用程序,並且開始行爲不當並佔用了所有可用存儲空間,則用戶無法簡單地刪除該數據。然而,你沒有警告的說法並不正確。卸載彈出窗口清楚地顯示「此應用程序及其相關信息將從此PC中刪除」

在某些情況下,將數據存儲在漫遊文件夾中可能是一個選項,但該文件夾不適用於大量數據 - 它在那裏保存應用程序設置/配置選項以在設備之間漫遊。您可以在開發期間(如果足夠小)將您的崩潰日誌放在那裏,但不能保證它會在應用程序卸載之前同步到雲中。您最好的選擇可能是使用Live SDK將數據同步到雲中,但您不能保證數據會立即寫入雲中。

1

您應該使用獨立存儲將數據保存到Windows 8 Metro應用程序上的文件系統。您可以使用下列找到的位置:

Windows.Storage.ApplicationData.Current.LocalFolder.Path;

由於你永遠不會知道肯定,你的數據將被存儲在每個平臺的變化架構,但這種不斷將確保它可以跨所有應用程序。該文件夾在安裝應用程序時也保持「安全」,並進行升級,以免數據丟失。 http://timheuer.com/blog/archive/2012/05/20/using-sqlite-in-metro-style-app.aspx

+0

但我的問題是:'Windows.Storage.ApplicationData.Current。當用戶右鍵單擊應用程序圖標並選擇卸載時,LocalFolder會被刪除而不會出現警告。它不適合我的應用程序。我想要一個更安全的地方。 – 2012-08-13 07:34:55

+1

Metro設計的Metro應用不支持這種情況。獨立存儲是您在不實施文件瀏覽器的情況下獲得文件系統的唯一寫入訪問權限。如果您想要保存這些數據,即使安裝後必須考慮將其同步到「雲服務」,並在重新安裝時更新應用程序。 – LewisBenge 2012-08-13 07:37:50