11

Visual Studio 2010 の発行機能を使用してこのアプリケーションをデプロイしました。いくつかのユーザー設定 (データベース接続情報など) を保存する必要があり、この特定のコンピューターが何らかの形でアプリケーションの設定をリセットし続けます。私を最も困惑させている部分は、これがどのような状況で、またはなぜ起こるのかを理解できなかったことです. アプリケーションは他の 6 台または 7 台のコンピューターで問題なく動作しているため、設定が適切に設定されていることはわかっています。

アプリケーションの設定を消去する原因は何ですか? または、これらの設定を保存するために何を使用することをお勧めしますか? 暗号化されたファイル?

編集: デフォルトのアプリケーション設定を使用しています。これらは app.config ファイルで定義されています。を使用してアクセスできますProperties.Settings.Default.propertyName

4

4 に答える 4

7

ユーザー レベルの設定がある場合、ClickOnce は、ユーザーが更新プログラムを取得したときにそれらを次のバージョンのキャッシュにコピーする必要があります。証明書を変更する場合など、ファイルが転送されない場合がいくつかあります。

アプリケーション レベルの設定は保持されず、次のバージョンに引き継がれます。

このメカニズムを使用してそれに依存することはお勧めしません。ClickOnceの更新からデータを保護する方法については、こちらの記事をご覧ください。独自の構成マネージャーを展開し、データを XML として保存し、その記事で説明したように保存します。このようにして、データに何が起こるかを制御します。

唯一の欠点は、ユーザーがアプリをアンインストールすると、このデータが残ることです。一方、ユーザーがアプリをアンインストールすると、データが残ります。そのため、問題が発生したためにアンインストールする場合、または問題が発生したために ClickOnce キャッシュをクリアした場合、新しいバージョンをインストールすると、彼のデータはまだそこにあります。

于 2012-08-25T07:00:49.320 に答える
2

アプリケーションを更新するときに、以前の設定をアップグレードするのはあなたの仕事です。

Settings.Default.GetPreviousVersion()これにSettings.Default.Upgrade()役立ちます。

于 2012-08-21T19:53:48.723 に答える
1

この問題に遭遇した人のために: 無条件の

Properties.Settings.Default.Upgrade();

あなたのコードで。複数のバージョンを持つ ClickOnce インストールでは、このステートメントは、以前のバージョンからユーザー設定をコピーし、最後のセッションで保存されたすべての設定を上書きします。正しいパターンは次のとおりです。

if (Properties.Settings.Default.UpgradeRequired)
{
    Properties.Settings.Default.Upgrade();
    Properties.Settings.Default.UpgradeRequired = false;
    Properties.Settings.Default.Save();
}

ここUpgradeRequiredで、デフォルトで true に設定されています。

于 2019-08-24T15:02:48.000 に答える