Open棟梁Project - マイクロソフト系技術情報 Wiki
「ClickOnce」(クリック ワンス)は、.NET Framework 2.0に搭載されたWindowsアプリケーションの配布・自動更新基盤で、.NET Framework 1.xで提供されていた「ノータッチ デプロイメント」の後継技術である。「ノータッチ デプロイメント」は、セキュリティ、配布(キャッシュの仕組み、DLL、Configファイルの配布)、パラメータ受け渡しなどで発生する問題点の対策が複雑であったため「.NET Framework 2.0」から「ClickOnce」という新しい技術が登場した。
「ClickOnce」は、
以下のようなアプリケーションを配布・自動更新することにターゲットにしている。
また、.NET Framework 3.0からサポートされたWPFアプリケーションの配布・自動更新も可能となっている。
配布・更新基盤として、色々な選択肢を検討する必要がある。
ClickOnceアプリケーションを実行するには、次のクライアント要件を満たす必要がある。
項番 | 種類 | 要件 |
1 | ランタイム | .NET Framework 2.0以上 |
2 | OS | .NET Framework 2.0以上が動作するOS |
3 | wwwブラウザ | Microsoft Internet Explorer(以下、IEと略す)5.01 以上 ※ ClickOnceローダ(dfsvc.exe)の起動にClickOnceをサポートするwwwブラウザが必要。 ※ FirefoxなどアドオンによりClickOnceをサポートするwwwブラウザもあるが、サポート情報を探し難く、今後のサポート打ち切りなどの可能性もある。 |
「ClickOnce」では、インターネット環境から不特定多数に向けて配信されるWebアプリケーションのような利用を可能とするために、インストールの垣根を下げる必要があり、管理者権限が無くてもインストールが可能となっている 。
サーバ要件(wwwサーバ、ファイル サーバなど)には、特別の要件は指定されていない。
「ClickOnce」の機能を利用するには、Visual Studioで作成したプログラムを「発行」(後述)して生成した「配布用フォルダ」をwwwサーバ上に配置 し、「配布用フォルダ」内の『インストールWebページ』をIEで表示する。この『インストールWebページ』のリンク先には、「ClickOnceアプリケーション」を配置するためのリンクが含まれる。このリンク先のレスポンスを受けると、ランタイムの『ClickOnceローダ(dfsvc.exe)』は、「ClickOnceアプリケーション」の配置情報を読み取り、実行プログラムをローカル ディスクの『ClickOnceキャッシュ領域』にダウンロードする。
仕組み、シーケンスの詳細は以下が参考になる。
連載 ClickOnceの真実:第2回 ClickOnceの仕組みを理解しよう
「セキュリティ ゾーン」に基づいた限定された「アクセス許可」が適用される。
項番 | 配置場所 | セキュリティ ゾーン |
1 | Webからの実行 | インターネット ゾーン |
2 | Webからのインストール | インターネット ゾーン |
3 | ネットワーク ファイル共有からのインストール | イントラネット ゾーン |
4 | CD-ROMからのインストール | 完全信頼 |
「配置オプション」には、
の2つのオプションがある。
どのオプションを選択しても配布の基本的な動作は同じ。
これを切り替えることで、配布の動作が大きく変化するわけではない。
「ClickOnceアプリケーション」を配布する際の、「ローカル ユーザ環境からのオフライン実行」が
を設定できる。
「配布用フォルダ」を、次の3種類から選択することができる。
「ClickOnceアプリケーション」は、
のどちらかのセキュリティ設定で動作する。
「セキュリティ制限」を受けずに、単独で(通常のEXEと変わりなく)動作する。
セキュリティ・タブではアクセス許可を構成する。
「アクセス許可」を与える場合、以下を設定する。
署名タブでは「コード サイニング証明書」による『署名』を行う。
発行タブでは発行を行う。
『発行ウィザード』より詳細な設定が必要な場合、
プロジェクトのプロパティを開き、[発行]タブに移動する。
ここでは、
などの設定が可能である。
「発行」後に「配布フォルダ」を移動する場合(例えば、開発機やビルド機のwwwサーバ上に「配布フォルダ」を作成し、その「配布フォルダ」を本番機のwwwサーバ上に配置する場合など)は、プロジェクトのプロパティの[発行]タブにある、[発行場所]と[インストールのURL]の両方のテキスト ボックスにURLを入力することで対応できる。[インストールのURL]テキスト ボックスにURLを入力すると、publish.htmのリンク先がこの入力値に差し替わる。
「分離ストレージ」とは、主に『部分信頼』の「セキュリティ制限」を受ける(サンドボックス化される)アプリケーションからアクセス可能な唯一のストレージとして用意されており、また、種々のアプリケーションから利用できないよう分離される。
「ClickOnceアプリケーション」に追加することができるカスタム動作
「ClickOnceアプリケーション」のバージョン番号を表示する。
更新されたバージョンがないかをサーバに問合せ、更新を行う。
「ClickOnceアプリケーション」は、「1つ前のバージョンにロールバック(=昔のバージョンに戻す)」ことも可能。
コントロール パネルを開き、そこから[プログラムの追加と削除]を選択、表示された[プログラムの追加と削除]ダイアログで[プログラムの変更と削除]の一覧の中から、ロールバックしたい「ClickOnceアプリケーション」の[変更と削除]ボタンをクリックする。すると「アンインストール」もしくは「ロールバック」するためのダイアログが表示される。
ここで[アプリケーションを以前の状態に復元します。]を選択して[OK]ボタンをクリックすると、アプリケーションの「ロールバック」が開始される。
ロールバックした後は、元のバージョンに戻せなくなる。この場合、「ClickOnceアプリケーション」をアンインストールするか、また、サーバ側の「配布用フォルダ」を更新するまで、バージョン アップができないので注意が必要。
IE以外のブラウザのサポート状況について。
2015/03/02:Firefoxに以下のPlugin追加し.NET4.5で動作確認した。
Chromeには、Microsoft純正のPluginが無い模様。
(純正でないPluginは幾つか確認できるが何が良いのか解らない)
下記「ClickOnce for Chrome」を試たが動作しなかった。
更新するか?スキップするか?の選択は、オフライン実行を選択した時に選択できる。
一度スキップすると7日間ほど更新のダイアログが表示されなくなる(ClickOnceの仕様)。
サーバの更新後は最新のプログラムを使用する必要がある場合は以下のいずれかの対応をします。
「アプリケーションに最低限必要なバージョン」を指定しておくことで、
それよりも古いバージョンのアプリケーションを実行不可とする (キャンセルできない)
調べれば色々できる。