1

Clickonceアプリケーションの更新によって接続文字列が混乱するという現在の問題があります。これは主に、バックアップボックスを更新してから、(バックアップボックスのテスト後に)本番ボックスで初めて実行したときに発生します。私のclickonceアプリは、バックアップサーバーからホストされている更新を確認してプルダウンし、その過程で適切なIPを上書きします。

ユーザーにとっては、すべてがまだ機能していますが、実際にはテストデータベースを見ています。

読んでいたところ、接続文字列を「ユーザー」設定に移動すると、既存の値を維持できるようになりました。これは、既存の値が明らかにデフォルト以外の場合にのみ機能します。

したがって、既存のユーザー接続文字列を維持するには、クライアントマシンで使用できないプロジェクト設定のデフォルトを設定する必要があります。これにより、アプリが最初にデプロイされた後に変更する必要がありますか?

そうすることで、更新プロセスが行うチェックに合格し、ユーザー構成値を保持できるようになりますか?

4

1 に答える 1

1

ユーザー アプリケーション データ フォルダー内の構成ファイルに接続文字列を設定することで、この問題を解決できると思います。アプリケーションが起動したら、リソースが存在するかどうかを確認します。そうでない場合は、デフォルト値で作成し、アプリケーションから変更を設定します。変更を適用した後、それをリソースに保存すると、ユーザーがアプリケーションを起動するたびに、同じリソースがロードされます。

1 回クリックしても安全なユーザー固有のアプリケーション データ フォルダーを取得するには、次のフォルダー パスを取得して、構成リソース ファイルを保存します。

string appDataPath = 
    Path.Combine(
        Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData,
        "[Company or App Name]"));

これにより、エンド ユーザーのマシンでデータの読み取りと書き込みに使用できるパスが得られます。このフォルダー内のデータは、展開ごとに上書きされることはなく、フォルダーの場所もアプリケーションの展開フォルダーのように難読化されません。

これで質問が解決しない場合は、コメントでさらに質問してください。この回答を更新して、お客様のニーズの性質を反映させます。

于 2012-05-08T17:42:21.033 に答える