ClickOnce の配置とセキュリティ
ClickOnce は、最小限のユーザー操作でインストールして実行できる自己更新型の Windows ベースのアプリケーションを作成できる配置テクノロジです。 Visual Studio では、Visual Basic と Visual C# を使用してプロジェクトを開発した場合、ClickOnce テクノロジを使用して配置されたアプリケーションの発行と更新が完全にサポートされます。 Visual C++ アプリケーションの配置の詳細については、「Visual C++ アプリケーションの ClickOnce 配置」を参照してください。
ClickOnce 配置は、配置の 3 つの主要な問題を克服します。
アプリケーションの更新に関する問題。 Microsoft Windows インストーラーの展開では、アプリケーションが更新されるたびに、ユーザーは更新プログラム、msp ファイルをインストールし、インストールされている製品に適用できます。ClickOnce 配置では、更新プログラムを自動的に提供できます。 変更されたアプリケーションの部分のみがダウンロードされ、更新されたアプリケーション全体が新しいサイド バイ サイド フォルダーから再インストールされます。
ユーザーのコンピューターへの影響。 Windows インストーラーの展開では、多くの場合、アプリケーションは共有コンポーネントに依存し、バージョン管理の競合が発生する可能性があります。ClickOnce 配置では、各アプリケーションは自己完結型であり、他のアプリケーションに干渉することはできません。
セキュリティ権限 Windows インストーラーの展開には管理アクセス許可が必要であり、制限付きのユーザー インストールのみが許可されます。ClickOnce 配置を使用すると、管理者以外のユーザーは、アプリケーションに必要なコード アクセス セキュリティのアクセス許可のみをインストールして付与できます。
以前は、これらの問題により、開発者は Windows ベースのアプリケーションではなく Web アプリケーションを作成することを決定し、インストールを容易にするために豊富なユーザー インターフェイスを犠牲にすることもありました。 ClickOnce を使用して配置されたアプリケーションを使用すると、両方のテクノロジを最大限に活用できます。
ClickOnce アプリケーションとは
ClickOnce アプリケーションは、ClickOnce テクノロジを使用して発行された任意の Windows Presentation Foundation (.xbap)、Windows フォーム (.exe)、コンソール アプリケーション (.exe)、または Office ソリューション (.dll) です。 ClickOnce アプリケーションは、Web ページ、ネットワーク ファイル共有、CD-ROM などのレガシ メディアから、3 つの方法で発行できます。 ClickOnce アプリケーションは、エンド ユーザーのコンピューターにインストールして、コンピューターがオフラインの場合でもローカルで実行できます。また、エンド ユーザーのコンピューターに何も永続的にインストールしなくても、オンライン専用モードで実行できます。 詳細については、「ClickOnce 配置戦略を選択する」を参照してください。
ClickOnce アプリケーションは自己更新できます。新しいバージョンが利用可能になると、新しいバージョンを確認し、更新されたファイルを自動的に置き換えることができます。 開発者は更新動作を指定できます。ネットワーク管理者は、更新プログラムを必須としてマークするなど、更新戦略を制御することもできます。 更新プログラムは、エンド ユーザーまたは管理者が以前のバージョンにロールバックすることもできます。 詳細については、「ClickOnce 更新戦略を選択する」を参照してください。
ClickOnce アプリケーションは分離されているため、ClickOnce アプリケーションをインストールまたは実行すると、既存のアプリケーションを中断することはできません。 ClickOnce アプリケーションは自己完結型です。各 ClickOnce アプリケーションは、セキュリティで保護されたユーザーごとのアプリケーションごとのキャッシュにインストールされ、実行されます。 ClickOnce アプリケーションは、インターネットまたはイントラネットのセキュリティ ゾーンで実行されます。 必要に応じて、アプリケーションは昇格されたセキュリティアクセス許可を要求できます。 詳細については、「Secure ClickOnce アプリケーションの」を参照してください。
ClickOnce セキュリティのしくみ
ClickOnce のコア セキュリティは、証明書、コード アクセス セキュリティ ポリシー、および ClickOnce 信頼プロンプトに基づいています。
証明 書
Authenticode 証明書は、アプリケーションの発行元の信頼性を確認するために使用されます。 アプリケーションの配置に Authenticode を使用することで、ClickOnce は、確立された信頼できるソースからの正当なプログラムとして有害なプログラムが自身を描写するのを防ぐのに役立ちます。 必要に応じて、証明書を使用してアプリケーション マニフェストと配置マニフェストに署名し、ファイルが改ざんされていないことを証明することもできます。 詳細については、「ClickOnce と Authenticode」を参照してください。 証明書を使用して、信頼された発行元の一覧を持つクライアント コンピューターを構成することもできます。 信頼できる発行元から取得したアプリケーションは、ユーザーの操作なしでインストールできます。 詳細については、「信頼されたアプリケーションの展開の概要 」を参照してください。
コード アクセス セキュリティ
コード アクセス セキュリティは、コードが保護されたリソースに対して持つアクセスを制限するのに役立ちます。 ほとんどの場合、インターネットまたはローカル イントラネット ゾーンを選択してアクセス許可を制限できます。 プロジェクト デザイナー の [セキュリティ] ページを使用して、アプリケーションに適したゾーンを要求します。 アクセス許可が制限されたアプリケーションをデバッグして、エンド ユーザー エクスペリエンスをエミュレートすることもできます。 詳細については、「ClickOnce アプリケーションのコード アクセス セキュリティ」を参照してください。
手記
ClickOnce for .NET Core および .NET 5 以降では、この機能はサポートされていません。 詳細については、.NET 用 ClickOnce に関するページを参照してください。
ClickOnce 信頼プロンプト
アプリケーションがゾーンで許可されているよりも多くのアクセス許可を要求する場合は、エンド ユーザーに信頼の決定を求めることができます。 エンド ユーザーは、Windows フォーム アプリケーション、Windows Presentation Foundation アプリケーション、コンソール アプリケーション、XAML ブラウザー アプリケーション、Office ソリューションなどの ClickOnce アプリケーションの実行が信頼されているかどうかを判断できます。 詳細については、「方法: ClickOnce 信頼プロンプトの動作を構成する」を参照してください。
ClickOnce 配置のしくみ
主要な ClickOnce 配置アーキテクチャは、アプリケーション マニフェストと配置マニフェストという 2 つの XML マニフェスト ファイルに基づいています。 ファイルは、ClickOnce アプリケーションのインストール場所、更新方法、および更新日時を記述するために使用されます。
ClickOnce アプリケーションの発行
アプリケーション マニフェストは、アプリケーション自体を記述します。 これには、アセンブリ、アプリケーションを構成する依存関係とファイル、必要なアクセス許可、更新プログラムを使用できる場所が含まれます。 アプリケーション開発者は、Visual Studio の発行ウィザード (.NET Core および .NET 5 以降の発行ツール) または Windows ソフトウェア開発キット (SDK) のマニフェスト生成および編集ツール (Mage.exe) を使用して、アプリケーション マニフェストを作成します。 詳細については、以下を参照してください。
配置マニフェストでは、アプリケーションの展開方法について説明します。 これには、アプリケーション マニフェストの場所と、クライアントが実行する必要があるアプリケーションのバージョンが含まれます。
手記
ClickOnce for .NET Core 3.1 および .NET 5 以降では、Mage.exeの代わりに dotnet-mage.exe を使用します。 詳細については、.NET 用 ClickOnce に関するページを参照してください。
ClickOnce アプリケーションの配置
作成後、配置マニフェストが配置場所にコピーされます。 Web サーバー、ネットワーク ファイル共有、CD などのレガシ メディアを指定できます。 アプリケーション マニフェストとすべてのアプリケーション ファイルも、配置マニフェストで指定された配置場所にコピーされます。 これは、デプロイの場所と同じにすることも、別の場所にすることもできます。 Visual Studio で 発行ウィザード を使用すると、コピー操作が自動的に実行されます。
ClickOnce アプリケーションをインストールする
配置場所に配置した後、エンド ユーザーは、Web ページまたはフォルダー内の配置マニフェスト ファイルを表すアイコンをクリックして、アプリケーションをダウンロードしてインストールできます。 ほとんどの場合、エンド ユーザーには、インストールの確認を求める簡単なダイアログ ボックスが表示されます。その後、インストールが続行され、追加の介入なしでアプリケーションが開始されます。 アプリケーションで管理者特権のアクセス許可が必要な場合、またはアプリケーションが信頼された証明書によって署名されていない場合、ダイアログ ボックスでは、インストールを続行する前にアクセス許可の付与も求められます。 ClickOnce のインストールはユーザーごとに行われますが、管理者特権を必要とする前提条件がある場合は、アクセス許可の昇格が必要になる場合があります。 昇格されたアクセス許可の詳細については、「ClickOnce アプリケーションのセキュリティ保護」を参照してください。
証明書はコンピューターまたはエンタープライズ レベルで信頼できるため、信頼された証明書で署名された ClickOnce アプリケーションをサイレント インストールできます。 信頼された証明書の詳細については、「信頼されたアプリケーション 展開の概要」を参照してください。
アプリケーションは、ユーザーの [スタート] メニューと、[コントロール パネル]の [プログラムの追加と削除] グループに追加できます。 他の展開テクノロジとは異なり、Program Files フォルダーまたはレジストリには何も追加されません。インストールに管理者権限は必要ありません
手記
アプリケーションが [スタート] メニューや [プログラムの追加と削除] のグループに追加されないようにすることも可能で、その結果、Webアプリケーションのように動作させることができます。 詳細については、「ClickOnce 配置戦略を選択する」を参照してください。
ClickOnce アプリケーションを更新する
アプリケーション開発者は、アプリケーションの更新バージョンを作成すると、新しいアプリケーション マニフェストを生成し、ファイルを配置場所 (通常は兄弟フォルダー) に元のアプリケーション配置フォルダーにコピーします。 管理者は、アプリケーションの新しいバージョンの場所を指す配置マニフェストを更新します。
手記
Visual Studio の 発行ウィザード を使用して、次の手順を実行できます。 .NET Core と .NET 5 以降の場合、発行ツールには次の手順が用意されています。
配置マニフェストには、配置場所に加えて、更新されたバージョンがアプリケーションによってチェックされる更新場所 (Web ページまたはネットワーク ファイル共有) も含まれます。 ClickOnce Publish プロパティは、アプリケーションが更新プログラムを確認するタイミングと頻度を指定するために使用されます。 更新動作は、配置マニフェストで指定することも、ClickOnce API を使用してアプリケーションのユーザー インターフェイスでユーザーの選択として表示することもできます。 また、Publish プロパティを使用して、更新を必須にしたり、以前のバージョンにロールバックしたりできます。 詳細については、「ClickOnce 更新戦略の選択」を参照してください。
サード パーティのインストーラー
ClickOnce インストーラーをカスタマイズして、アプリケーションと共にサード パーティ製コンポーネントをインストールできます。 再頒布可能パッケージ (.exe または .msi ファイル) を用意し、言語に依存しない製品マニフェストと言語固有のパッケージ マニフェストでパッケージを記述する必要があります。 詳細については、「ブートストラップ パッケージの作成」を参照してください。
ClickOnce ツール
次の表に、アプリケーション マニフェストと配置マニフェストの生成、編集、署名、および再署名に使用できるツールを示します。 .NET Core および .NET 5 以降の場合、MSBuild 属性と同様のオプションは発行プロファイルを使用して設定されます。
ツール | 説明 |
---|---|
[セキュリティ] ページ (プロジェクト デザイナー) | アプリケーション マニフェストと配置マニフェストに署名します。 .NET Core および .NET 5 以降の場合、これらの設定は発行プロファイルにあります。 |
[発行] ページ (プロジェクト デザイナー) | Visual Basic および Visual C# アプリケーションのアプリケーション マニフェストと配置マニフェストを生成および編集します。 .NET Core および .NET 5 以降の場合、これらの設定は発行プロファイルにあります。 |
Mage.exe (マニフェスト生成および編集ツール) | Visual Basic、Visual C#、および Visual C++ アプリケーションのアプリケーション マニフェストと配置マニフェストを生成します。 アプリケーション マニフェストと配置マニフェストに署名して再署名します。 バッチ スクリプトとコマンド プロンプトから実行できます。 |
dotnetmage.exe (マニフェスト生成および編集ツール) | .NET 5 以降の C# および Visual Basic アプリケーションのアプリケーション マニフェストと配置マニフェストを生成します。 使用法は、Mage.exeに相当します。 アプリケーション マニフェストと配置マニフェストに署名して再署名します。 バッチ スクリプトとコマンド プロンプトから実行できます。 |
MageUI.exe (マニフェスト生成および編集ツール、グラフィカル クライアント) | アプリケーション マニフェストと配置マニフェストを生成して編集します。 アプリケーション マニフェストと配置マニフェストに署名して再署名します。 |
GenerateApplicationManifest タスク | アプリケーション マニフェストを生成します。 MSBuild から実行できます。 詳細については、MSBuild リファレンスを参照してください。 |
GenerateDeploymentManifest タスク | 配置マニフェストを生成します。 MSBuild から実行できます。 詳細については、MSBuild リファレンスを参照してください。 |
SignFile タスク | アプリケーション マニフェストと配置マニフェストに署名します。 MSBuild から実行できます。 詳細については、MSBuild リファレンスを参照してください。 |
Microsoft.Build.Tasks.Deployment.ManifestUtilities | 独自のアプリケーションを開発して、アプリケーション マニフェストと配置マニフェストを生成します。 |
次の表に、これらのブラウザーで ClickOnce アプリケーションをサポートするために必要な .NET Framework のバージョンを示します。
ブラウザー | .NET Framework のバージョン |
---|---|
Firefox | 2.0 SP1、3.5 SP1、4 |
クロム | 3.5 |
Microsoft Edge | 3.5 |
関連コンテンツ
- ClickOnce アプリケーションの発行
- ClickOnce アプリケーションをセキュリティで保護する
- ClickOnce を使用して COM コンポーネントを配置する
- コマンド ラインから ClickOnce アプリケーションをビルド
- System.Deployment.Application を使用する ClickOnce アプリケーションをデバッグする
- 以前のバージョンの Windows での ClickOnce 展開