チュートリアル: プライバシー プロンプトを使用してカスタム ブートストラップを作成する
新しいファイル バージョンとアセンブリ バージョンのアセンブリが使用可能になったときに、ClickOnce アプリケーションが自動的に更新されるように構成することができます。 ユーザーがこの動作に同意するかどうかを確認するには、プライバシー プロンプトを表示します。 その後、ユーザーは自動更新のアクセス許可をアプリケーションに付与するかどうかを選択できます。 アプリケーションの自動更新が許可されなかった場合、インストールは実行されません。
Note
この記事で紹介する Visual Studio ユーザー インターフェイス要素の一部は、お使いのコンピューターでは名前や場所が異なる場合があります。 Visual Studio のエディションや環境設定がお使いのものと異なる場合があります。 詳細については、「Visual Studio IDE のカスタマイズ」を参照してください。
更新への同意に関するダイアログ ボックスを作成する
プライバシー プロンプトを表示するには、アプリケーションの自動更新への同意をユーザーに求めるアプリケーションを作成します。
同意ダイアログ ボックスを作成するには
[ファイル] メニューの [新規作成] をポイントし、 [プロジェクト] をクリックします。
[新しいプロジェクト] ダイアログ ボックスで、[Windows] をクリックし、[WindowsFormsApplication] をクリックします。
[名前] に「ConsentDialog」と入力し、[OK] をクリックします。
デザイナーで、フォームをクリックします。
プロパティ ウィンドウで、Text プロパティを「更新への同意ダイアログ」に変更します。
ツールボックスで、[すべての Windows フォーム] を展開し、[Label] コントロールをフォームにドラッグします。
デザイナーで、ラベル コントロールをクリックします。
プロパティ ウィンドウで、[表示] の Text プロパティを次のように変更します。
インストールしようとしているアプリケーションでは、Web 上の最新の更新プログラムの確認が行われます。 [同意する] をクリックすると、アプリケーションで更新プログラムを自動的にチェックし、インターネットからインストールすることを承認したことになります。
ツールボックスで、Checkbox コントロールをフォームの中央にドラッグします。
プロパティ ウィンドウで、[レイアウト] の Text プロパティを「同意する」に変更します。
ツールボックスで、Button コントロールをフォームの左下にドラッグします。
プロパティ ウィンドウで、[レイアウト] の Text プロパティを「次へ」に変更します。
プロパティ ウィンドウで、[デザイン] の (Name) プロパティを「ProceedButton」に変更します。
ツールボックスで、Button コントロールをフォームの右下にドラッグします。
プロパティ ウィンドウで、[レイアウト] の Text プロパティを「キャンセル」に変更します。
プロパティ ウィンドウで、[デザイン] の (Name) プロパティを「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] を選択します。
Note
アプリケーション フレームワークを無効にすると、ビジュアル スタイル、アプリケーション イベント、スプラッシュ スクリーン、単一インスタンス アプリケーションなどの機能が無効になります。 詳細については、「[アプリケーション] ページ (プロジェクト デザイナー) (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; }
[ビルド] メニューで、[ソリューションのビルド] をクリックします。
カスタム ブートストラップ パッケージを作成する
エンド ユーザーにプライバシーに関する確認メッセージを表示するには、Update Consent Dialog アプリケーション用のカスタム ブートストラップ パッケージを作成し、すべての ClickOnce アプリケーションに必須コンポーネントとして含めます。
この手順では、次のドキュメントを作成してカスタム ブートストラップ パッケージを作成する方法を示します。
ブートストラップの内容を記述した product.xml マニフェスト ファイル。
パッケージのローカライズ関連の内容物 (文字列やソフトウェア ライセンス条項など) をリストした package.xml マニフェスト ファイル。
ソフトウェア ライセンス条項のドキュメント。
手順 1: ブートストラップ ディレクトリを作成するには
%PROGRAMFILES%\Microsoft SDKs\Windows\v7.0A\Bootstrapper\Packages に、UpdateConsentDialog という名前のディレクトリを作成します。
Note
このフォルダーを作成するには、管理特権が必要な場合があります。
UpdateConsentDialog ディレクトリで、en という名前のサブディレクトリを作成します。
Note
ロケールごとに新しいディレクトリを作成してください。 たとえば、fr や de ロケール用のサブディレクトリを追加するなどします。 これらのディレクトリには、フランス語とドイツ語の文字列と言語パックが含められます (必要な場合)。
手順 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 というドキュメントを作成します。
Note
ソフトウェア ライセンス条項には、ライセンス、保証、責任、および現地法に関する情報を含める必要があります。 これらのファイルはロケール固有のものである必要があるため、MBCS または UNICODE 文字をサポートする形式でファイルを保存するようにしてください。 ソフトウェア ライセンス条項の内容については、法務部門に問い合わせてください。
ドキュメントを、UpdateConsentDialog ブートストラップ ディレクトリの en サブディレクトリに保存します。
必要に応じて、新しい package.xml マニフェスト ファイルを作成し、各ロケールのソフトウェア ライセンス条項用の新しい eula.rtf ドキュメントを作成します。 たとえば、fr および de ロケール用のサブディレクトリを作成した場合は、それぞれ個別の package.xml マニフェスト ファイルとソフトウェア ライセンス条項を作成し、それらを fr サブディレクトリと de サブディレクトリに保存します。
Update Consent アプリケーションを必須コンポーネントとして設定する
Visual Studio では、Update Consent アプリケーションを必須コンポーネントとして設定できます。
Update Consent アプリケーションを必須コンポーネントとして設定するには
ソリューション エクスプローラーで、配置するアプリケーションの名前をクリックします。
[プロジェクト] メニューの ProjectName の [プロパティ] をクリックします。
[発行] ページをクリックし、[必須コンポーネント] をクリックします。
Update Consent Dialog を選択します。
Note
場合によっては、Visual Studio を一度閉じて再度開かないと、[必須コンポーネント] ダイアログ ボックスに Update Consent Dialog が表示されない場合があります。
[OK] をクリックします。
セットアップ プログラムを作成してテストする
Update Consent アプリケーションを必須コンポーネントとして設定したら、アプリケーションのインストーラーとブートストラップを生成することができます。
[同意する] をクリックせずにセットアップ プログラムを作成およびテストするには
ソリューション エクスプローラーで、配置するアプリケーションの名前をクリックします。
[プロジェクト] メニューの ProjectName の [プロパティ] をクリックします。
[発行] ページをクリックし、[今すぐ発行] をクリックします。
発行の出力が自動的に開かない場合は、発行の出力に移動します。
Setup.exe プログラムを実行します。
セットアップ プログラムで、Update Consent Dialog のソフトウェア使用許諾契約書が表示されます。
ソフトウェア使用許諾契約書を読み、[同意する] をクリックします。
Update Consent Dialog アプリケーションが表示され、次のテキストが表示されます: インストールしようとしているアプリケーションでは、Web 上の最新の更新プログラムの確認が行われます。 [同意する] をクリックすると、アプリケーションでインターネット上の更新プログラムを自動的にチェックすることを承認したことになります。
アプリケーションを閉じるか、[キャンセル] をクリックします。
アプリケーションで次のエラーが表示されます: <アプリケーション名> 用のシステム コンポーネントのインストール中にエラーが発生しました。 すべてのシステム コンポーネントが正常にインストールされるまで、セットアップは続行できません。
[詳細] をクリックすると、次のエラー メッセージが表示されます: コンポーネント Update Consent Dialog のインストールに失敗し、次のエラーがメッセージが生成されました: "The automatic update agreement is not accepted." 次のコンポーネントをインストールできませんでした: - Update Consent Dialog
[閉じる] をクリックします。
[同意する] をクリックしてセットアップ プログラムを作成およびテストするには
ソリューション エクスプローラーで、配置するアプリケーションの名前をクリックします。
[プロジェクト] メニューの ProjectName の [プロパティ] をクリックします。
[発行] ページをクリックし、[今すぐ発行] をクリックします。
発行の出力が自動的に開かない場合は、発行の出力に移動します。
Setup.exe プログラムを実行します。
セットアップ プログラムで、Update Consent Dialog のソフトウェア使用許諾契約書が表示されます。
ソフトウェア使用許諾契約書を読み、[同意する] をクリックします。
Update Consent Dialog アプリケーションが表示され、次のテキストが表示されます: インストールしようとしているアプリケーションでは、Web 上の最新の更新プログラムの確認が行われます。 [同意する] をクリックすると、アプリケーションでインターネット上の更新プログラムを自動的にチェックすることを承認したことになります。
[同意する] をクリックし、[次へ] をクリックします。
アプリケーションのインストールが開始されます。
[アプリケーションのインストール] ダイアログ ボックスが表示されたら、[インストール] をクリックします。