5

Visual Studio 2012 RC でアプリをコンパイルすると、bin\予想どおり、プロジェクト ソース フォルダーに生成されたフォルダーが表示されます。そこには foo.exe があり、アプリのエントリのように見えます。アプリのデバッグを開始すると、そのアイコンがスタート画面に表示され、次の場所に作成された新しいフォルダーを見つけることができます

C:\Users\someone\AppData\Local\Packages\xxxxx_xxxxxx

しかし、ディスク全体を検索しても、このフォルダーに foo.exe が見つかりません。win8 アプリケーションには、古い Windows プログラムとは異なるインストール/展開メカニズムがあるようです。私の質問は次のとおりです。

(1) win8 アプリはどのように/どこに展開/インストールされますか?

\AppData\Local\Packages\xxxxx_xxxxxx\LocalState(2)ローカル データ フォルダー (コードでは に相当) として使用したいのですApplicationData.Current.LocalFolderが、スタート画面のアイコンを右クリックして [アンインストール] を押すと、警告も表示されずにフォルダー全体が削除されます。ローカル データを保存するのに適した場所はありますか? それとも SQLite が必要ですか? たとえば、私のアプリはすべてのクラッシュ メッセージを に書き込みますerror.txt。明らかに、この場合は sqlite を使用できません。またerror.txt、LocalState フォルダーに入れると、ユーザーがアプリをアンインストールしている可能性がありますerror.txt。もう 1 つのシナリオは、ユーザーがアプリをアンインストールしたいが、ローカル データ (ファイル) を保持したい場合です。明らかに ApplicationData.Current.LocalFolder は良い選択ではありません。

4

2 に答える 2

4

1) Windows 8 パッケージは c:\Program Files\windowsapps\ に展開されますが、既定ではそのフォルダーの所有権がないため、アクセスできません。ただし、それはほとんど無関係です。設計上、このフォルダーにアクセスすることはできません。

2) 繰り返しますが、アンインストール時にアプリのローカル データ フォルダーを削除することは、予期された動作です。そうしないと、ストア経由でアプリを展開したときにアプリが誤動作し始め、使用可能なストレージをすべて占有してしまった場合、ユーザーがそのデータを簡単に削除する方法はありません。ただし、警告がないというあなたの主張は真実ではありません。アンインストールのポップアップに「このアプリとその関連情報はこの PC から削除されます」と明確に表示されます。

場合によっては、ローミング フォルダーにデータを保存することもできますが、このフォルダーは大量のデータを格納するためのものではなく、デバイス間でローミングするためのアプリケーション設定/構成オプションを保持するために存在します。おそらく開発中にクラッシュログをそこに置くことができますが (十分に小さい場合)、アプリがアンインストールされる前にクラウドに同期されるという保証はありません。おそらく最善の策は、Live SDK を使用してデータをクラウドに同期することですが、繰り返しますが、データが即座にクラウドに書き込まれるという保証はありません。

于 2012-08-13T15:02:01.993 に答える
1

Windows 8 Metro アプリのファイル システムにデータを永続化するには、分離ストレージを使用する必要があります。次を使用して場所を見つけることができます。

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

各プラットフォームのアーキテクチャが変化するため、データがどこに保存されるかを確実に知ることはできませんが、この定数により、すべてのアプリケーションで機能することが保証されます. このフォルダは、アプリケーションがインストールされ、アップグレードされている間も「安全」に保たれるため、使用中にデータが失われることはありません。

SQLLite-net を使用した例は、このページの下部にあります: http://timheuer.com/blog/archive/2012/05/20/using-sqlite-in-metro-style-app.aspx

于 2012-08-13T07:32:49.397 に答える