ClickOnce とアプリケーション設定
Windows フォームのアプリケーション設定により、カスタム アプリケーションや、クライアント上のユーザー設定の作成、保存、保守が簡単になっています。 以下のドキュメントでは、ClickOnce アプリケーションでアプリケーション設定ファイルがどのように機能するかと、ユーザーが次のバージョンにアップグレードするときに、設定が ClickOnce によってどのように移行されるかを説明します。
以下の情報は、既定のアプリケーション設定プロバイダーである LocalFileSettingsProvider クラスにのみ当てはまります。 カスタム プロバイダーを提供する場合は、そのプロバイダーで、データの格納方法と、バージョン間で設定をアップグレードする方法を決定します。 アプリケーション設定プロバイダーの詳細については、「アプリケーション設定アーキテクチャ」を参照してください。
アプリケーション設定ファイル
アプリケーション設定では、<app>.exe.config と user.config の 2 つのファイルが使用されます。app には、お使いの Windows フォーム アプリケーションの名前が入ります。 user.config は、アプリケーションでユーザー スコープ設定を初めて保存するときに、クライアント上に作成されます。 一方 <app>.exe.config は、開発者が設定の既定値を定義する場合は、配置以前に存在することになります。 Visual Studio で Publish コマンドを使用すると、このファイルは自動的にインクルードされます。 Mage.exe または MageUI.exe を使用して ClickOnce アプリケーションを作成する場合は、アプリケーション マニフェストを記述するときに、このファイルがアプリケーションの他のファイルに含まれていることを確認する必要があります。
Note
.NET Core 3.1 および .NET 5 以降の ClickOnce では、Mage.exe の代わりに dotnet-mage.exe を使用します。 詳細については、.NET 用 ClickOnce に関するページを参照してください。
ClickOnce を使用して配置されたものではない Windows フォーム アプリケーションでは、アプリケーションの <app>.exe.config ファイルはアプリケーション ディレクトリに格納され、一方 user.config ファイルは、ユーザーの Documents and Settings フォルダーに格納されます。 ClickOnce アプリケーションでは、<app>.exe.config は ClickOnce アプリケーション キャッシュ内部のアプリケーション ディレクトリにあり、user.config は、そのアプリケーションの ClickOnce データ ディレクトリにあります。
アプリケーションの配置方法とは無関係に、アプリケーション設定を使用すると、<app>.exe.config への安全な読み取りアクセスと、user.config への安全な読み取り/書き込みアクセスが確保されます。
ClickOnce アプリケーションでは、アプリケーション設定によって使用される構成ファイルのサイズは、ClickOnce キャッシュのサイズによって制限されます。 詳細については、「ClickOnce キャッシュの概要」を参照してください。
.NET Core および .NET 5+
現在、発行する .NET Core アセンブリは、厳密な名前キー ファイルで署名する必要があります。 そうでない場合、ApplicationSettingsBase.Upgrade
メソッドでは新しい ClickOnce の発行後に設定が正しくコピーされません。 .NET Core プロジェクトのプロパティの [ビルド] > [厳密な名前付け] オプションで、厳密な名前の使用を指定できます。
バージョンのアップグレード
ClickOnce アプリケーションの各バージョンが他のすべてのバージョンから分離されるのと同様に、ある ClickOnce アプリケーションのためのアプリケーション設定は、他のバージョンの設定からも分離されます。 ユーザーが新しいバージョンのアプリケーションにアップグレードすると、アプリケーション設定によって、最新の (数字が最大である) バージョンの設定が、更新されたバージョンで提供される設定と比較されて、設定が新しい設定ファイルのセットにマージされます。
次の表では、どの設定をコピーするかが、アプリケーション設定によってどのように決定されるかを説明します。
変更の種類 | アップグレード アクション |
---|---|
設定が <app>.exe.config に追加された | 新しい設定は、現在のバージョンの <app>.exe.config にマージされる |
設定が <app>.exe.config から削除された | 新しい設定は、現在のバージョンの <app>.exe.config から削除される |
設定の既定値が変更されたが、ローカルの設定はまだ、user.config での元の既定値に設定されている | 設定は、値として新しい既定値がある現在のバージョンの user.config にマージされる |
設定の既定値が変更されたが、設定は user.config での既定値以外に設定されている | 設定は、現在のバージョンの user.config にマージされ、既定ではない値は保持される |
独自のアプリケーション設定ラッパークラスを作成済みで、更新ロジックをカスタマイズしたい場合は、Upgrade メソッドをオーバーライドできます。
ClickOnce とローミング設定
ClickOnce はローミング設定と一緒には機能しません。そのため、ネットワーク上の複数のコンピューターにわたって設定ファイルを移動できます。 ローミング設定が必要な場合は、ネットワーク経由で設定を保存するアプリケーション設定プロバイダーを実装するか、リモート コンピューターに設定を格納するための独自のカスタム設定クラスを作成する必要があります。 設定プロバイダーの詳細については、「アプリケーション設定アーキテクチャ」を参照してください。