チュートリアル: プライバシー プロンプトを使用してカスタム ブートストラップを作成する

新しいファイル バージョンとアセンブリ バージョンのアセンブリが使用可能になったときに、ClickOnce アプリケーションが自動的に更新されるように構成することができます。 ユーザーがこの動作に同意するかどうかを確認するには、プライバシー プロンプトを表示します。 その後、ユーザーは自動更新のアクセス許可をアプリケーションに付与するかどうかを選択できます。 アプリケーションの自動更新が許可されなかった場合、インストールは実行されません。

Note

この記事で紹介する Visual Studio ユーザー インターフェイス要素の一部は、お使いのコンピューターでは名前や場所が異なる場合があります。 Visual Studio のエディションや環境設定がお使いのものと異なる場合があります。 詳細については、「Visual Studio IDE のカスタマイズ」を参照してください。

プライバシー プロンプトを表示するには、アプリケーションの自動更新への同意をユーザーに求めるアプリケーションを作成します。

  1. [ファイル] メニューの [新規作成] をポイントし、 [プロジェクト] をクリックします。

  2. [新しいプロジェクト] ダイアログ ボックスで、[Windows] をクリックし、[WindowsFormsApplication] をクリックします。

  3. [名前] に「ConsentDialog」と入力し、[OK] をクリックします。

  4. デザイナーで、フォームをクリックします。

  5. プロパティ ウィンドウで、Text プロパティを「更新への同意ダイアログ」に変更します。

  6. ツールボックスで、[すべての Windows フォーム] を展開し、[Label] コントロールをフォームにドラッグします。

  7. デザイナーで、ラベル コントロールをクリックします。

  8. プロパティ ウィンドウで、[表示]Text プロパティを次のように変更します。

    インストールしようとしているアプリケーションでは、Web 上の最新の更新プログラムの確認が行われます。 [同意する] をクリックすると、アプリケーションで更新プログラムを自動的にチェックし、インターネットからインストールすることを承認したことになります。

  9. ツールボックスで、Checkbox コントロールをフォームの中央にドラッグします。

  10. プロパティ ウィンドウで、[レイアウト]Text プロパティを「同意する」に変更します。

  11. ツールボックスで、Button コントロールをフォームの左下にドラッグします。

  12. プロパティ ウィンドウで、[レイアウト]Text プロパティを「次へ」に変更します。

  13. プロパティ ウィンドウで、[デザイン](Name) プロパティを「ProceedButton」に変更します。

  14. ツールボックスで、Button コントロールをフォームの右下にドラッグします。

  15. プロパティ ウィンドウで、[レイアウト]Text プロパティを「キャンセル」に変更します。

  16. プロパティ ウィンドウで、[デザイン](Name) プロパティを「CancelButton」に変更します。

  17. デザイナーで、[同意する] チェック ボックスをダブルクリックして、CheckedChanged イベント ハンドラーを生成します。

  18. Form1 のコード ファイルで、CheckedChanged イベント ハンドラーに次のコードを追加します。

    private void checkBox1_CheckedChanged(object sender, EventArgs e)
    {
        ProceedButton.Enabled = !ProceedButton.Enabled;
    }
    
  19. クラス コンストラクターを更新して、[次へ] ボタンを既定で無効にします。

    public Form1()
    {
        InitializeComponent();
        ProceedButton.Enabled = false;
    }
    
  20. Form1 のコード ファイルで、ブール変数の次のコードを追加して、エンド ユーザーがオンライン更新に同意したかどうかを追跡します。

    public bool accepted = false;
    
  21. デザイナーで、[次へ] ボタンをダブルクリックして、Click イベント ハンドラーを生成します。

  22. Form1 のコード ファイルで、[次へ] ボタンの Click イベント ハンドラーに次のコードを追加します。

    private void ProceedButton_Click(object sender, EventArgs e)
    {
        if (ProceedButton.Enabled)
        {
            accepted = true;
            this.Close();
        }
    }
    
  23. デザイナーで、[キャンセル] ボタンをダブルクリックして、Click イベント ハンドラーを生成します。

  24. Form1 のコード ファイルで、[キャンセル] ボタンの Click イベント ハンドラーに次のコードを追加します。

    private void CancelButton_Click(object sender, EventArgs e)
    {
        this.Close();
    }
    
  25. アプリケーションを更新して、エンド ユーザーがオンライン更新に同意しなかった場合にエラーが返されるようにします。

    Visual Basic 開発者の場合のみ:

    1. ソリューション エクスプローラーで、ConsentDialog をクリックします。

    2. [プロジェクト] メニューで、[モジュールの追加] をクリックし、[追加] をクリックします。

    3. 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
      
    4. [プロジェクト] メニューで、[ConsentDialog のプロパティ] をクリックし、[アプリケーション] タブをクリックします。

    5. [アプリケーション フレームワークを有効にする] をオフにします。

    6. [スタートアップ オブジェクト] ドロップダウン メニューで、[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;
      }
      
  26. [ビルド] メニューで、[ソリューションのビルド] をクリックします。

カスタム ブートストラップ パッケージを作成する

エンド ユーザーにプライバシーに関する確認メッセージを表示するには、Update Consent Dialog アプリケーション用のカスタム ブートストラップ パッケージを作成し、すべての ClickOnce アプリケーションに必須コンポーネントとして含めます。

この手順では、次のドキュメントを作成してカスタム ブートストラップ パッケージを作成する方法を示します。

  • ブートストラップの内容を記述した product.xml マニフェスト ファイル。

  • パッケージのローカライズ関連の内容物 (文字列やソフトウェア ライセンス条項など) をリストした package.xml マニフェスト ファイル。

  • ソフトウェア ライセンス条項のドキュメント。

手順 1: ブートストラップ ディレクトリを作成するには

  1. %PROGRAMFILES%\Microsoft SDKs\Windows\v7.0A\Bootstrapper\Packages に、UpdateConsentDialog という名前のディレクトリを作成します。

    Note

    このフォルダーを作成するには、管理特権が必要な場合があります。

  2. UpdateConsentDialog ディレクトリで、en という名前のサブディレクトリを作成します。

    Note

    ロケールごとに新しいディレクトリを作成してください。 たとえば、fr や de ロケール用のサブディレクトリを追加するなどします。 これらのディレクトリには、フランス語とドイツ語の文字列と言語パックが含められます (必要な場合)。

手順 2: product.xml マニフェスト ファイルを作成するには

  1. product.xml というテキスト ファイルを作成します。

  2. 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>
    
  3. ファイルを UpdateConsentDialog ブートストラップ ディレクトリに保存します。

手順 3: package.xml マニフェスト ファイルとソフトウェア ライセンス条項を作成するには

  1. package.xml というテキスト ファイルを作成します。

  2. 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>
    
  3. ファイルを、UpdateConsentDialog ブートストラップ ディレクトリの en サブディレクトリに保存します。

  4. ソフトウェア ライセンス条項用に、eula.rtf というドキュメントを作成します。

    Note

    ソフトウェア ライセンス条項には、ライセンス、保証、責任、および現地法に関する情報を含める必要があります。 これらのファイルはロケール固有のものである必要があるため、MBCS または UNICODE 文字をサポートする形式でファイルを保存するようにしてください。 ソフトウェア ライセンス条項の内容については、法務部門に問い合わせてください。

  5. ドキュメントを、UpdateConsentDialog ブートストラップ ディレクトリの en サブディレクトリに保存します。

  6. 必要に応じて、新しい package.xml マニフェスト ファイルを作成し、各ロケールのソフトウェア ライセンス条項用の新しい eula.rtf ドキュメントを作成します。 たとえば、fr および de ロケール用のサブディレクトリを作成した場合は、それぞれ個別の package.xml マニフェスト ファイルとソフトウェア ライセンス条項を作成し、それらを fr サブディレクトリと de サブディレクトリに保存します。

Visual Studio では、Update Consent アプリケーションを必須コンポーネントとして設定できます。

  1. ソリューション エクスプローラーで、配置するアプリケーションの名前をクリックします。

  2. [プロジェクト] メニューの ProjectName[プロパティ] をクリックします。

  3. [発行] ページをクリックし、[必須コンポーネント] をクリックします。

  4. Update Consent Dialog を選択します。

    Note

    場合によっては、Visual Studio を一度閉じて再度開かないと、[必須コンポーネント] ダイアログ ボックスに Update Consent Dialog が表示されない場合があります。

  5. [OK] をクリックします。

セットアップ プログラムを作成してテストする

Update Consent アプリケーションを必須コンポーネントとして設定したら、アプリケーションのインストーラーとブートストラップを生成することができます。

[同意する] をクリックせずにセットアップ プログラムを作成およびテストするには

  1. ソリューション エクスプローラーで、配置するアプリケーションの名前をクリックします。

  2. [プロジェクト] メニューの ProjectName[プロパティ] をクリックします。

  3. [発行] ページをクリックし、[今すぐ発行] をクリックします。

  4. 発行の出力が自動的に開かない場合は、発行の出力に移動します。

  5. Setup.exe プログラムを実行します。

    セットアップ プログラムで、Update Consent Dialog のソフトウェア使用許諾契約書が表示されます。

  6. ソフトウェア使用許諾契約書を読み、[同意する] をクリックします。

    Update Consent Dialog アプリケーションが表示され、次のテキストが表示されます: インストールしようとしているアプリケーションでは、Web 上の最新の更新プログラムの確認が行われます。 [同意する] をクリックすると、アプリケーションでインターネット上の更新プログラムを自動的にチェックすることを承認したことになります。

  7. アプリケーションを閉じるか、[キャンセル] をクリックします。

    アプリケーションで次のエラーが表示されます: <アプリケーション名> 用のシステム コンポーネントのインストール中にエラーが発生しました。 すべてのシステム コンポーネントが正常にインストールされるまで、セットアップは続行できません。

  8. [詳細] をクリックすると、次のエラー メッセージが表示されます: コンポーネント Update Consent Dialog のインストールに失敗し、次のエラーがメッセージが生成されました: "The automatic update agreement is not accepted." 次のコンポーネントをインストールできませんでした: - Update Consent Dialog

  9. [閉じる] をクリックします。

[同意する] をクリックしてセットアップ プログラムを作成およびテストするには

  1. ソリューション エクスプローラーで、配置するアプリケーションの名前をクリックします。

  2. [プロジェクト] メニューの ProjectName[プロパティ] をクリックします。

  3. [発行] ページをクリックし、[今すぐ発行] をクリックします。

  4. 発行の出力が自動的に開かない場合は、発行の出力に移動します。

  5. Setup.exe プログラムを実行します。

    セットアップ プログラムで、Update Consent Dialog のソフトウェア使用許諾契約書が表示されます。

  6. ソフトウェア使用許諾契約書を読み、[同意する] をクリックします。

    Update Consent Dialog アプリケーションが表示され、次のテキストが表示されます: インストールしようとしているアプリケーションでは、Web 上の最新の更新プログラムの確認が行われます。 [同意する] をクリックすると、アプリケーションでインターネット上の更新プログラムを自動的にチェックすることを承認したことになります。

  7. [同意する] をクリックし、[次へ] をクリックします。

    アプリケーションのインストールが開始されます。

  8. [アプリケーションのインストール] ダイアログ ボックスが表示されたら、[インストール] をクリックします。