ClickOnce の配置とセキュリティ
ClickOnce は、ユーザーとの最小限の対話によってインストールして実行できる、自己更新型の Windows ベースのアプリケーションの作成を可能にする配置テクノロジです。 Visual Basic および Visual C# を使用してプロジェクトが開発された場合、Visual Studio では、ClickOnce テクノロジを使用して配置されたアプリケーションの発行と更新を完全にサポートします。 Visual C++ アプリケーションの配置の詳細については、「Visual C++ アプリケーションの ClickOnce 配置」を参照してください。
ClickOnce 配置により、配置での 3 つの主な問題が克服されます。
アプリケーションの更新における問題。 Microsoft Windows インストーラー配置では、アプリケーションが更新されるたびに、ユーザーは更新プログラムと msp ファイルをインストールし、インストール済みの製品に適用することができます。ClickOnce 配置では、更新プログラムを自動的に提供できます。 アプリケーションの変更された部分のみがダウンロードされ、更新されたアプリケーションアプリケーション完全なアプリケーションは新しい side-by-side フォルダーから再インストールされます。
ユーザーのコンピューターへの影響。 Windows インストーラーのデプロイでは多くの場合、アプリケーションは共有コンポーネントに依存し、バージョン管理の競合が発生する可能性があります。ClickOnce デプロイ置では、各アプリケーションは自己完結型であり、他のアプリケーションに干渉することはできません。
セキュリティ アクセス許可。 Windows インストーラー配置には管理アクセス許可が必要であり、限定的なユーザー インストールのみが可能です。ClickOnce 配置により、管理者以外のユーザーが、アプリケーションに必要なコード アクセス セキュリティのアクセス許可のみをインストールして付与することができます。
これまで、これらの問題により、開発者が Windows ベースのアプリケーションではなく Web アプリケーションを作成することを決め、インストールの容易さのために機能豊富なユーザー インターフェイスを犠牲にすることがありました。 ClickOnce を使用して配置されたアプリケーションを使用することにより、両方のテクノロジを最大限に活用できます。
ClickOnce アプリケーションとは
ClickOnce アプリケーションとは、ClickOnce テクノロジを使用して発行された Windows Presentation Foundation (.xbap)、Windows フォーム (.exe)、コンソール アプリケーション (.exe)、または Office ソリューション (.dll) です。 ClickOnce アプリケーションは、3 つの異なる方法で発行できます (Web ページから、ネットワーク ファイル共有から、または CD-ROM などのレガシ メディアから)。 ClickOnce アプリケーションは、エンド ユーザーのコンピューターにインストールし、コンピューターがオフラインのときでもローカルで実行することができます。または、エンド ユーザーのコンピューターに永続的に何もインストールすることなく、オンライン専用モードで実行できます。 詳細については、「ClickOnce 配置ストラテジの選択」を参照してください。
ClickOnce アプリケーションは自己更新型にすることができます。より新しいバージョンをチェックし、利用可能になると、更新対象のファイルを自動的に置き換えることができます。 開発者は、更新動作を指定できます。また、ネットワーク管理者は、更新を必須としてマークするなど、更新方法を制御することもできます。 更新プログラムは、エンド ユーザーまたは管理者によって以前のバージョンにロールバックすることもできます。 詳細については、「ClickOnce の更新方法の選択」を参照してください。
ClickOnce アプリケーションは分離されているため、ClickOnce アプリケーションをインストールまたは実行しても、既存のアプリケーションが壊れることはありません。 ClickOnce アプリケーションは自己完結型です。各 ClickOnce アプリケーションは、セキュリティで保護されたユーザーごと、アプリケーションごとのキャッシュにインストールされて実行されます。 ClickOnce アプリケーションは、インターネットまたはイントラネットのセキュリティ ゾーンで実行されます。 必要であれば、アプリケーションから昇格されたセキュリティ アクセス許可を要求できます。 詳細については、「ClickOnce アプリケーションのセキュリティ保護」を参照してください。
ClickOnce セキュリティのしくみ
コア ClickOnce セキュリティは、証明書、コード アクセス セキュリティ ポリシー、および ClickOnce 信頼プロンプトに基づいています。
証明書
Authenticode 証明書は、アプリケーションのパブリッシャーの信頼性を検証するために使用されます。 ClickOnce は、アプリケーションの配置に Authenticode を使用することによって、有害なプログラムが確立された信頼できるソースからの正式なプログラムになりすますのを防ぎます。 必要に応じて、証明書を使用してアプリケーション マニフェストとデプロイ マニフェストに署名し、ファイルが改ざんされていないことを証明することもできます。 詳細については、「ClickOnce と Authenticode」を参照してください。 証明書を使用して、信頼された発行元の一覧を持つようにクライアント コンピューターを構成することもできます。 アプリケーションが信頼された発行元からのものである場合は、ユーザーの操作なしでインストールできます。 詳細については、「信頼されたアプリケーションの配置の概要」を参照してください。
コード アクセス セキュリティ
コード アクセス セキュリティにより、コードがアクセスする対象を保護されたリソースに制限できます。 ほとんどの場合は、インターネット ゾーンまたはローカル イントラネット ゾーンを選択して、アクセス許可を制限できます。 プロジェクト デザイナーの [セキュリティ] ページを使用して、アプリケーションに適したゾーンを要求します。 アクセス許可が制限されたアプリケーションをデバッグして、エンド ユーザー エクスペリエンスをエミュレートすることもできます。 詳細については、「ClickOnce アプリケーションのコード アクセス セキュリティ」を参照してください。
Note
.NET Core および .NET 5 以降用の ClickOnce では、この機能はサポートされていません。 詳細については、.NET 用 ClickOnce に関するページを参照してください。
ClickOnce 信頼プロンプト
アプリケーションがゾーンで許可するよりも多くのアクセス許可を要求する場合、エンド ユーザーに対して信頼の決定に関するプロンプトを表示できます。 エンド ユーザーは、Windows フォーム アプリケーション、Windows Presentation Foundation アプリケーション、コンソール アプリケーション、XAML ブラウザー アプリケーション、Office ソリューションなどの ClickOnce アプリケーションが実行に関して信頼されるかどうかを決定できます。 詳細については、「方法: ClickOnce 信頼プロンプトの動作を構成する」を参照してください。
ClickOnce 配置のしくみ
コア ClickOnce 配置アーキテクチャは、アプリケーション マニフェストと配置マニフェストの 2 つの XML マニフェスト ファイルに基づいています。 これらのファイルは、ClickOnce アプリケーションのインストール元、更新方法、更新のタイミングを記述するために使用されます。
ClickOnce アプリケーションの発行
アプリケーション マニフェストでは、アプリケーション自体について記述します。 これには、アセンブリ、アプリケーションを構成する依存関係とファイル、必要なアクセス許可、および更新プログラムが利用可能になる場所が含まれます。 アプリケーション開発者は、Visual Studio の発行ウィザード (.NET Core および .NET 5 以降用の発行ツール) または Windows Software Development Kit (SDK) 内のマニフェスト生成および編集ツール (Mage.exe) を使用して、アプリケーション マニフェストを作成します。 詳細については、次をご覧ください。
配置マニフェストでは、アプリケーションの配置方法を示します。 これには、アプリケーション マニフェストの場所と、クライアントが実行する必要があるアプリケーションのバージョンが含まれます。
Note
.NET Core 3.1 および .NET 5 以降の ClickOnce では、Mage.exe の代わりに dotnet-mage.exe を使用します。 詳細については、.NET 用 ClickOnce に関するページを参照してください。
ClickOnce アプリケーションの配置
配置マニフェストを作成したら、それを配置場所にコピーします。 それは Web サーバー、ネットワーク ファイル共有、CD などのレガシ メディアのいずれでもかまいません。 アプリケーション マニフェストとすべてのアプリケーション ファイルは、配置マニフェストで指定される配置場所にもコピーされます。 これは、配置場所と同じ場所でも、別の場所でもかまいません。 Visual Studio で発行ウィザードを使用する場合、コピー操作は自動的に実行されます。
ClickOnce アプリケーションのインストール
配置場所に配置されたら、エンド ユーザーは Web ページ上またはフォルダー内の配置マニフェスト ファイルを表すアイコンをクリックすることで、アプリケーションをダウンロードしてインストールできます。 ほとんどの場合、エンド ユーザーには、インストールの確認をユーザーに求めるシンプルなダイアログ ボックスが表示されます。確認後、追加の介入なしで、インストールが進行し、アプリケーションが起動されます。 アプリケーションに管理者特権のアクセス許可が必要な場合、またはアプリケーションが信頼された証明書によって署名されていない場合は、インストールを続行する前に、ダイアログ ボックスでユーザーにアクセス許可を付与するように求められます。 ClickOnce のインストールはユーザー単位ですが、管理者特権を必要とする前提条件がある場合は、アクセス許可の昇格が必要になることがあります。 アクセス許可の昇格の詳細については、「ClickOnce アプリケーションのセキュリティ」を参照してください。
証明書はコンピューター レベルまたはエンタープライズ レベルで信頼できます。これにより、信頼された証明書で署名された ClickOnce アプリケーションをサイレント インストールできます。 信頼された証明書の詳細については、「信頼されたアプリケーションの配置の概要」を参照してください。
アプリケーションは、ユーザーの [スタート] メニュー、およびコントロール パネルの [プログラムの追加と削除] グループに追加できます。 他の配置テクノロジとは異なり、Program Files フォルダーまたはレジストリには何も追加されず、インストールのために管理者権限は必要ありません。
Note
アプリケーションが [スタート] メニューと [プログラムの追加と削除] グループに追加されないようにして、実質的に Web アプリケーションのように動作させることもできます。 詳細については、「ClickOnce 配置ストラテジの選択」を参照してください。
ClickOnce アプリケーションの更新
アプリケーション開発者は、アプリケーションの更新されたバージョンを作成するとき、新しいアプリケーション マニフェストを生成し、ファイルを配置場所 (通常は、元のアプリケーション配置フォルダーの兄弟フォルダー) にコピーします。 管理者は、アプリケーションの新しいバージョンの場所を示すために配置マニフェストを更新します。
Note
Visual Studio の発行ウィザードを使用して、これらの手順を実行できます。 .NET Core および .NET 5 以降の場合、発行ツールによってこれらの手順が提供されます。
配置マニフェストには、配置場所だけでなく、アプリケーションで最新バージョンをチェックする更新場所 (Web ページまたはネットワーク ファイル共有) も含まれます。 ClickOnce [発行] プロパティは、アプリケーションが更新プログラムを確認するタイミングと頻度を指定するために使用されます。 更新動作は、配置マニフェストで指定することができます。または、ClickOnce API を介してアプリケーションのユーザー インターフェイスにユーザーの選択肢として提示できます。 さらに、[発行] プロパティを使用して、更新を必須にしたり、以前のバージョンにロールバックしたりすることもできます。 詳細については、「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 |
Chrome | 3.5 |
Microsoft Edge | 3.5 |