7

私の WinRT アプリケーションでは、(セッション データではなく) ユーザー データをローカル ファイルに保存します。ファイルは、ApplicationData.Current.LocalFolder を介して保存およびロードされます。

アプリマニフェストに小さな変更を加えるたびに、これらの保存されたファイルとアプリの設定が無効になり、アプリの起動時に削除されます。これは開発環境でのみ発生するのでしょうか、それともパッケージがアプリ ストアで公開されたときにも発生するのでしょうか?

システムがこれを行うのを防ぐにはどうすればよいですか? バージョンの変更によりデータが失われると、ユーザーは非常に不幸になります。

更新 1:
Hans Passant のおかげで、データ ファイルにも Version があることを知りました。データ ファイルのバージョンを設定すると、バージョンの変更 (インクリメントのみ) の問題は修正されましたが、残りのマニフェストの変更については修正されませんでした。

更新 2:
それまでの間、アプリ マニフェストのプロパティを変更するだけでなく、この効果があることも確認しました。新しい言語 (ローカリゼーション) 用の新しいリソース ファイルを追加すると、データも削除されます。この奇妙な動作が、ショップを介して公開されたインストール済みアプリにも存在するかどうかを知ることは本当に素晴らしいことです.

4

2 に答える 2

2

私の質問への答えはそう簡単ではないようです。最終的に、おそらく 2 つの異なる問題で構成されていることがわかりました。Web で見つけた情報はごくわずかです。したがって、ここに書くのは、私が行ったいくつかの簡単なテストに基づいて、少し憶測に基づくものです。

バージョンの変更
Hans Passant のおかげで、データ ファイルにはバージョンがある可能性があることを知りました。ドキュメントが不足しているため、次のようにバージョン テストとバージョン設定を行います。

await ApplicationData.Current.SetVersionAsync((uint)1, (setVersionRequest) => { });

コードは、データ ファイルをロードする前にいつでも実行されます。現在、ファイル形式に変更がないため、変更コールバックを空のままにします{}
上記のコードを挿入した後、バージョンのプロパティを変更しても、バージョンの変更によってアプリのデータが削除されることはありませんでした。ただし、後でコードを削除したテストとして、予想外に、バージョンの変更によってアプリのデータファイルが削除されなくなりました。おそらく、それらは現在バージョン管理されているためです。(補足として: バージョンを減らすと、常にデータ ファイルが失われます)。

一般的なマニフェストの変更 マニフェスト
のプロパティ (バージョン プロパティを除く) を変更してもデータが削除されるという影響はなくなりません。たとえばアプリの説明を変更すると、すべてのデータが削除されます。これは店舗では発生しないと推測する投稿をいくつか見つけましたが、証拠は見つかりませんでした.

言語の追加
私が観察したもう 1 つの効果は、アプリに新しい言語を追加すると (リソース ファイルを追加すると)、同じことが行われることです。

注意: 上記の説明はすべて、私の開発環境の観察に基づいています。具体的なドキュメントが見つからないため、クライアントを非常に不幸にしないために、関係するユースケースをよくテストすることをお勧めします. おそらく数か月以内に、より具体的なドキュメントが利用可能になるでしょう。

于 2012-09-08T09:47:40.017 に答える
0

これは開発環境でのみ発生します。アプリを公開すると、マニフェストは固定され、変更されません*。

* 次の状況を除きます。1) 変更して再アップロードする場合、および 2) マニフェストは認定プロセスによって変更される可能性が高く、これは予期されることです。

于 2012-09-07T12:31:51.450 に答える