皆さん、こんにちは。砂漠の果ての狼です。
.NET は無料、クロスプラットフォーム、オープンソースの、あらゆるアプリケーションを構築するための開発者プラットフォームです。
今回は ClickOnce を使ってソフトウェアインストールパッケージを作成する方法をご紹介します。まず、ClickOne とは何かを理解しましょう。
1. ClickOnce とは
以下の段落は Microsoft ドキュメントからの引用です:https://learn.microsoft.com/ja-jp/visualstudio/deployment/clickonce-security-and-deployment?view=vs-2022。
ClickOnce は、自己更新可能な Windows ベースのアプリケーションを作成できる配置テクノロジです。これらのアプリケーションは、最小限のユーザー操作でインストールおよび実行できます。
ClickOnce 配置は、配置に固有の3つの主要な問題を解決します:
- アプリケーション更新の難しさ
Microsoft Windows インストーラー配置を使用すると、アプリケーションが更新されるたびにユーザーはアプリケーション全体を再インストールする必要があります。ClickOnce 配置を使用すると、更新が自動的に提供されます。変更されたアプリケーション部分のみがダウンロードされ、新しい並行フォルダーから完全な更新済みアプリケーションが再インストールされます。
- ユーザーのコンピューターへの影響
Windows インストーラー配置では、アプリケーションは通常、共有コンポーネントに依存するため、バージョンの競合が発生する可能性があります。一方、ClickOnce 配置では、各アプリケーションは独立しており、他のアプリケーションに干渉しません。
- セキュリティ権限
Windows インストーラー配置は管理者権限を必要とし、制限付きユーザーのインストールのみを許可します。一方、ClickOnce 配置では、管理者以外のユーザーがアプリケーションをインストールでき、アプリケーションに必要なコードアクセスセキュリティ権限のみを付与します。
以前は、これらの問題により、開発者は Windows ベースのアプリケーションではなく Web アプリケーションを作成せざるを得ず、インストールの容易さと引き換えに Windows フォームの豊富なユーザーインターフェイスと応答性を犠牲にしていました。ClickOnce 配置を使用するアプリケーションでは、両方のテクノロジの利点を組み合わせることができます。
2. ClickOnce を使用したインストールパッケージの作成
2.1 サーバーが必要
まず、ソフトウェア更新ファイルをホストするためのオンライン Web サイトが必要です。たとえば、Dotnet9 のルートディレクトリに WPFBlazorChat というディレクトリを作成すると、オンラインホストアドレスは https://dotnet9.com/WPFBlazorChat になります。ディレクトリは次のようになります:

2.2 インストールパッケージの作成を開始
上記のオンラインアドレスを覚えておいてください。以前紹介した WPFBlazorChat をサンプルとしてインストールパッケージを作成します。リポジトリアドレスは https://github.com/dotnet9/WPFBlazorChat です。そのため、作成したディレクトリはプロジェクト名と同じ WPFBlazorChat です。
WPFBlazorChatプロジェクトを選択し、右クリックして発行

- 表示された画面で ClickOnce を選択し、[次へ] をクリック

- 発行場所は任意

- ソフトウェアインストールパッケージの取得アドレスを選択

- 設定
- プログラムの実行時に自動更新をチェックするかどうか、ソフトウェアのバージョン番号などを設定できます。次の図のとおりです:

上の図のように、[リビジョンを自動的にインクリメント] にチェックを入れると、発行のたびにリビジョン番号が自動的に増加します(あたりまえのことですが、バージョン管理が容易になります)。
- [アプリケーションファイル] をクリックすると、ダウンロードしなくてもよいファイルを選択できます。次の図のとおりです:

- [必須コンポーネント] を選択します。つまり、プログラムのランタイムを選択します。プログラムはデフォルトで .NET 6 と .NET 7 をサポートしているため、サイト管理者は .NET 7 x64 を選択しました。win7 32ビットのユーザーは必要に応じて選択してください:

- オプション設定
ソフトウェアインストールパッケージ情報を設定します。特に重要なのは発行元の名前とスイート名で、これらがソフトウェアプログラムのリリース場所を決定します:


配置ファイルの設定。Publish.html はインストールパッケージのダウンロードページを設定します。

- マニフェストへの署名
未設定のまま、[次へ] をクリック:

- プログラム発行の設定
状況に応じて選択します。サイト管理者は .NET 7 64ビット発行を選択しました。注意:前述の .NET デスクトップランタイムのバージョンと一致させる必要があります:

- [発行] をクリック
最後の操作として、[発行] をクリック

発行が完了したら、[発行場所] のパスをクリックします:

2.3 アップロード
上記でソフトウェアインストールパッケージを作成しました。あとはインストールパッケージを Web サイトに配置するだけです。これは比較的簡単で、前提としてサイトがすでにデプロイされている必要があります:


2.4 プログラムのインストール、実行
アドレスは https://dotnet9.com/WPFBlazorChat/Publish.html です。

上の図のように、作成したインストールパッケージの設定(ソフトウェアインストールパッケージ名、バージョン番号、発行元、必要な .NET ランタイムバージョンなど)が表示されます。[インストール] ボタンをクリックすると、setup.exe インストールファイルがダウンロードされます。このファイルは非常に小さく、666KB と縁起の良い数字です:

setup.exe を実行すると、上記のサーバー (https://dotnet9.com/WPFBlazorChat/) から自動的にバージョン番号やファイルの更新状況を確認し、プログラムファイルをダウンロードします:
下の図はサーバー上のソフトウェアインストールパッケージ情報です:

下の図はインストールプロセスのスクリーンショットです:

インストールパッケージのダウンロードが完了すると、プログラムが自動的に起動します。以下はテストプログラムの実行画面です。WPF Blazor で開発されています。クリックするとソースコードにアクセスできます:

3. Q&A
- ClickOnce 配置の仕組み
ClickOnce 配置のコアアーキテクチャは、アプリケーションマニフェストと配置マニフェストという2つの XML マニフェストファイルに基づいています。これらのファイルは、ClickOnce アプリケーションをどこからインストールするか、どのように更新するか、いつ更新するかを記述するために使用されます。
詳細については、Microsoft ドキュメントをご覧ください:https://learn.microsoft.com/ja-jp/visualstudio/deployment/clickonce-security-and-deployment?view=vs-2022
本記事は以上です。次回は、WPF で Blazor を使用してアプリケーションを開発する方法を紹介します。