新しいファイル バージョンとアセンブリ バージョンを持つアセンブリが使用可能になったときに、ClickOnce アプリケーションを自動的に更新するように構成できます。 顧客がこの動作に同意していることを確認するには、プライバシー に関するプロンプトを表示します。 次に、自動的に更新するアクセス許可をアプリケーションに付与するかどうかを選択できます。 アプリケーションが自動的に更新できない場合、アプリケーションはインストールされません。
注
この記事の手順では、Visual Studio で使用できる対話型開発エクスペリエンス (IDE) の最新バージョンについて説明します。 コンピューターには、一部のユーザー インターフェイス要素に対して異なる名前または場所が表示される場合があります。 別のバージョンの Visual Studio または異なる環境設定を使用している可能性があります。 詳細については、「IDEのカスタマイズ」を参照してください。
[アップデートの同意] ダイアログ ボックスを作成する
プライバシー プロンプトを表示するには、アプリケーションの自動更新に同意するように閲覧者に求めるアプリケーションを作成します。
同意ダイアログ ボックスを作成するには
[ファイル] メニューの [新規作成] をポイントし、 [プロジェクト] をクリックします。
[ 新しいプロジェクト ] ダイアログ ボックスで、[ Windows] をクリックし、[ WindowsFormsApplication] をクリックします。
[名前] に「ConsentDialog」と入力し、[OK] をクリックします。
デザイナーで、フォームをクリックします。
[ プロパティ ] ウィンドウで、 Text プロパティを [ 同意の更新] ダイアログに変更します。
ツールボックスで、[すべての Windows フォーム] を展開し、ラベル コントロールをフォームにドラッグします。
デザイナーで、ラベル コントロールをクリックします。
[プロパティ] ウィンドウで、[外観] の [テキスト] プロパティを次のように変更します。
インストールしようとしているアプリケーションは、Web 上の最新の更新プログラムを確認します。 [同意する] をクリックすると、アプリケーションがインターネットから自動的に更新プログラムを確認してインストールすることを承認します。
ツールボックスで、チェック ボックス コントロールをフォームの中央にドラッグします。
[プロパティ] ウィンドウで、[レイアウト] の [テキスト] プロパティを [同意する] に変更します。
ツールボックスで、Button コントロールをフォームの左下にドラッグします。
[プロパティ] ウィンドウで、[レイアウト] の [テキスト] プロパティを [続行] に変更します。
[プロパティ] ウィンドウで、[デザイン] の [名前] プロパティを ProceedButton に変更します。
ツールボックスで、ボタン コントロールをフォームの右下にドラッグします。
[プロパティ] ウィンドウで、[レイアウト] の [テキスト] プロパティを [キャンセル] に変更します。
[プロパティ] ウィンドウで、[デザイン] の [名前] プロパティを CancelButton に変更します。
デザイナーで、[ 同意 する] チェック ボックスをダブルクリックして CheckedChanged イベント ハンドラーを生成します。
Form1 コード ファイルで、CheckedChanged イベント ハンドラーの次のコードを追加します。
クラス コンストラクターを更新して、既定で [続行 ] ボタンを無効にします。
Form1 コード ファイルで、ブール変数の次のコードを追加して、エンド ユーザーがオンライン更新に同意したかどうかを追跡します。
デザイナーで、[ 続行 ] ボタンをダブルクリックして Click イベント ハンドラーを生成します。
Form1 コード ファイルで、[ 続行 ] ボタンの Click イベント ハンドラーに次のコードを追加します。
デザイナーで、[ キャンセル ] ボタンをダブルクリックして Click イベント ハンドラーを生成します。
Form1 コード ファイルで、[ キャンセル ] ボタンの Click イベント ハンドラーに次のコードを追加します。
エンド ユーザーがオンライン更新プログラムに同意しない場合は、アプリケーションを更新してエラーを返します。
Visual Basic 開発者の場合のみ:
ソリューション エクスプローラーで、[ConsentDialog] をクリックします。
[ プロジェクト ] メニューの [ モジュールの追加] をクリックし、[ 追加] をクリックします。
Module1.vb コード ファイルに、次のコードを追加します。
Module Module1 Function Main() As Integer Application.EnableVisualStyles() Application.SetCompatibleTextRenderingDefault(False) Dim f As New Form1() Application.Run(f) If (Not f.accepted) Then Return -1 Else Return 0 End If End Function End Module[ プロジェクト ] メニューの [ ConsentDialog プロパティ] をクリックし、[ アプリケーション ] タブをクリックします。
アプリケーション フレームワークを有効にするのチェックを外します。
[スタートアップ オブジェクト] ドロップダウン メニューで、[Module1] を選択します。
注
アプリケーション フレームワークを無効にすると、ビジュアル スタイル、アプリケーション イベント、スプラッシュスクリーン、単一インスタンス アプリケーションなどの機能が無効になります。 詳細については、 アプリケーション ページ、プロジェクト デザイナー (Visual Basic)を参照してください。
Visual C# 開発者の場合のみ:
Program.cs コード ファイルを開き、次のコードを追加します。
static int Main() { Application.EnableVisualStyles(); Application.SetCompatibleTextRenderingDefault(false); Form1 f = new Form1(); Application.Run(f); if (!f.accepted) return -1; else return 0; }
[ ビルド ] メニューの [ BuildSolution] をクリックします。
カスタム ブートストラップ パッケージを作成する
エンド ユーザーにプライバシー プロンプトを表示するには、Update Consent Dialog アプリケーション用のカスタム ブートストラップ パッケージを作成し、それをすべての ClickOnce アプリケーションの前提条件として含めることができます。
この手順では、次のドキュメントを作成してカスタム ブートストラップ パッケージを作成する方法を示します。
ブートストラップの内容を記述するproduct.xml マニフェスト ファイル。
文字列やソフトウェア ライセンス条項など、パッケージのローカライズ固有の側面を一覧表示する package.xml マニフェスト ファイル。
ソフトウェア ライセンス条項のドキュメント。
手順 1: ブートストラップ ディレクトリを作成するには
%PROGRAMFILES%\Microsoft SDKs\Windows\v7.0A\Bootstrapper\Packages に UpdateConsentDialog という名前のディレクトリを作成します。
注
このフォルダーを作成するには、管理者特権が必要な場合があります。
UpdateConsentDialog ディレクトリで、en という名前のサブディレクトリを作成します。
注
ロケールごとに新しいディレクトリを作成します。 たとえば、fr および de locales のサブディレクトリを追加できます。 これらのディレクトリには、必要に応じて、フランス語とドイツ語の文字列と言語パックが含まれます。
手順 2: product.xml マニフェスト ファイルを作成するには
product.xmlというテキスト ファイルを作成します。
product.xml ファイルに、次の XML コードを追加します。 既存の XML コードを上書きしないようにしてください。
<Product xmlns="http://schemas.microsoft.com/developer/2004/01/bootstrapper" ProductCode="Microsoft.Sample.EULA"> <!-- Defines the list of files to be copied on build. --> <PackageFiles CopyAllPackageFiles="false"> <PackageFile Name="ConsentDialog.exe"/> </PackageFiles> <!-- Defines how to run the Setup package.--> <Commands > <Command PackageFile = "ConsentDialog.exe" Arguments=''> <ExitCodes> <ExitCode Value="0" Result="Success" /> <ExitCode Value="-1" Result="Fail" String="AU_Unaccepted" /> <DefaultExitCode Result="Fail" FormatMessageFromSystem="true" String="GeneralFailure" /> </ExitCodes> </Command> </Commands> </Product>ファイルを UpdateConsentDialog ブートストラップ ディレクトリに保存します。
手順 3: package.xml マニフェスト ファイルとソフトウェア ライセンス条項を作成するには
package.xmlというテキスト ファイルを作成します。
package.xml ファイルに、次の XML コードを追加してロケールを定義し、ソフトウェア ライセンス条項を含めます。 既存の XML コードを上書きしないようにしてください。
<Package xmlns="http://schemas.microsoft.com/developer/2004/01/bootstrapper" Name="DisplayName" Culture="Culture" LicenseAgreement="eula.rtf"> <PackageFiles> <PackageFile Name="eula.rtf"/> </PackageFiles> <!-- Defines a localizable string table for error messages. --> <Strings> <String Name="DisplayName">Update Consent Dialog</String> <String Name="Culture">en</String> <String Name="AU_Unaccepted">The automatic update agreement is not accepted.</String> <String Name="GeneralFailure">A failure occurred attempting to launch the setup.</String> </Strings> </Package>UpdateConsentDialog ブートストラップ ディレクトリの en サブディレクトリにファイルを保存します。
ソフトウェア ライセンス条項 のeula.rtf というドキュメントを作成します。
注
ソフトウェア ライセンス条項には、ライセンス、保証、負債、および現地の法律に関する情報が含まれている必要があります。 これらのファイルはロケール固有である必要があるため、ファイルが MBCS または UNICODE 文字をサポートする形式で保存されていることを確認してください。 ソフトウェア ライセンス条項の内容については、法務部門に問い合わせてください。
ドキュメントを UpdateConsentDialog ブートストラップ ディレクトリの en サブディレクトリに保存します。
必要に応じて、新しい package.xml マニフェスト ファイルと、各ロケールのソフトウェア ライセンス条項用の新しい eula.rtf ドキュメントを作成します。 たとえば、fr および de ロケールのサブディレクトリを作成した場合は、マニフェスト ファイルとソフトウェア ライセンス条項 package.xml 個別に作成し、fr サブディレクトリと de サブディレクトリに保存します。
Update Consent Application を前提条件として設定する
Visual Studio では、Update Consent アプリケーションを前提条件として設定できます。
Update Consent Application を前提条件として設定するには
ソリューション エクスプローラーで、デプロイするアプリケーションの名前をクリックします。
[ プロジェクト ] メニューの [ ProjectNameプロパティ] をクリックします。
[ 発行 ] ページをクリックし、[ 前提条件] をクリックします。
[ 同意の更新] ダイアログを選択します。
注
[前提条件] ダイアログ ボックスに [更新プログラムの同意] ダイアログを表示するには、Visual Studio を閉じてから再度開く必要がある場合があります。
OK をクリックします。
セットアップ プログラムを作成してテストする
Update Consent アプリケーションを前提条件として設定した後、アプリケーションのインストーラーとブートストラップを生成できます。
[同意する] をクリックしないことでセットアップ プログラムを作成してテストするには
ソリューション エクスプローラーで、デプロイするアプリケーションの名前をクリックします。
[ プロジェクト ] メニューの [ ProjectNameプロパティ] をクリックします。
[ 発行 ] ページをクリックし、[ 今すぐ発行] をクリックします。
発行出力が自動的に開かない場合は、発行出力に移動します。
Setup.exe プログラムを実行します。
セットアップ プログラムには、更新プログラムの同意ダイアログ ソフトウェア使用許諾契約書が表示されます。
ソフトウェア使用許諾契約書を読み、[ 同意する] をクリックします。
Update Consent Dialog アプリケーションが表示され、次のテキストが表示されます。インストールしようとしているアプリケーションは、Web 上の最新の更新プログラムを確認します。 [同意する] をクリックすると、アプリケーションがインターネット上で自動的に更新プログラムを確認することを承認します。
アプリケーションを閉じるか、[キャンセル] をクリックします。
アプリケーションにエラーが表示されます。 ApplicationName のシステム コンポーネントのインストール中にエラーが発生しました。 すべてのシステム コンポーネントが正常にインストールされるまで、セットアップは続行できません。
[詳細] をクリックすると、次のエラー メッセージが表示されます。コンポーネント更新プログラムの同意ダイアログがインストールに失敗し、"自動更新契約は受け入れられなかった" というエラー メッセージが表示されます。次のコンポーネントのインストールに失敗しました: - [同意の更新] ダイアログ
をクリックしてを閉じます。
[同意する] をクリックしてセットアップ プログラムを作成してテストするには
ソリューション エクスプローラーで、デプロイするアプリケーションの名前をクリックします。
[ プロジェクト ] メニューの [ ProjectNameプロパティ] をクリックします。
[ 発行 ] ページをクリックし、[ 今すぐ発行] をクリックします。
発行出力が自動的に開かない場合は、発行出力に移動します。
Setup.exe プログラムを実行します。
セットアップ プログラムには、更新プログラムの同意ダイアログ ソフトウェア使用許諾契約書が表示されます。
ソフトウェア使用許諾契約書を読み、[ 同意する] をクリックします。
Update Consent Dialog アプリケーションが表示され、次のテキストが表示されます。インストールしようとしているアプリケーションは、Web 上の最新の更新プログラムを確認します。 [同意する] をクリックすると、アプリケーションがインターネット上で自動的に更新プログラムを確認することを承認します。
[ 同意する] をクリックし、[ 続行] をクリックします。
アプリケーションのインストールが開始されます。
[アプリケーションのインストール] ダイアログ ボックスが表示されたら、[ インストール] をクリックします。