IIS以外でVisual Studio® 2005 Beta 2のClickOnceを使用する

.NET2.0で採用されるデプロイ技術「ClickOnce」だがデプロイ対象のサーバはIISに限定されると思っている方が多いと思うが実際には配布の方法に制限があるもののサーバはApache等の純粋なWebサーバやWebLogicやJRun等のWebサーバの機能を持ったJavaアプリケーションサーバ等のHTTP1.xプロトコルを扱うサーバであれば適用できる。
以下、Visual Studio® 2005 Beta 2 を使用した場合の手順(備忘メモ)

1.サーバ側にMIMEの設定

manifest application/manifest
deploy application/deploy
application application/x-ms-application
  • 以下のMIMEClickOnceで指定されるMIMEでは無いがサーバはデフォルトでブロックしている事が多いので必要に応じて追加
config application/config
dll application/x-msdownload
msi application/x-windows-installer
exe application/octet-stream

※動かす事が前提なのでセキュリティに関しては考慮してません。完全に閉じたイントラネットで実行するにしても自己責任です。

追記:発行のオプションに「.deployファイル拡張子を使用する」というオプションがデフォルトでチェックされている。このオプションを変更しない限りmanifest以外の全てのファイルの拡張子は".deploy"に変更されてコピーされるためこのオプションを使用する場合はmanifest, deploy, application以外のMIMEの設定は不要だと思われる。

2.アプリケーションをビルドしてビルドの成功を確認する
3.プロジェクトを発行する為の各種設定を行う

  • プロジェクトの「プロパティ」を開き「発行」ページで必要な属性を設定する(発行ウィザードでも同様の設定が可能)




ClickOnceは発行場所にURLを記述する場合はデプロイするサーバがIISであることは前提としておりプロトコルスニファでHTTPプロトコルを覗くと指定されたURLの仮想ルート配下にプロジェクトを直接デプロイしようとする。サーバがIIS以外の場合は当然ながらそのような操作は失敗するのでIIS以外のサーバを使用する場合はURLは使用できない。従ってローカル又はネットワークのUNCパスとし指定可能なフォルダだけが指定可能。

  • アセンブリと同時にデプロイが必要なファイルを上の画面中の「アプリケーションファイル」で確認する。プロジェクトのパス上で必要だと推測されるファイルが自動的に表示されるのでそのまま受け入れるか又は必要に応じてファイルを除外する。






4.アプリケーションを発行する

  • プロジェクトのコンテキストメニューやソリューション、前述したプロジェクトのプロパティページの「発行」から発行を実行する。サーバがIIS以外の場合は単に発行場所に必要なファイルをコピーするだけ。
  • 発行と同時にマニフェストディジタル署名(※)とアプリケーションのアクセスセキュリティ(FullTrust)が自動的に設定される。
  • その後デフォルトの設定のままであれば「publish.htm」というファイル名の配布アプリケーションをインストールする為のHTMLが自動的に作成される。



  • 生成されたHTMLのリンクからアプリケーションがダウンロードされるがここではテスト証明書を使用しているため発行元が不明である故の警告ダイアログが表示される。



  • 警告を受け入れた場合はアプリケーションがインストールされオフライン実行が必要であれば同時にプログラムグループもも作成される。

※テスト用の証明書が自動的に作成される。当然ながら製品版が出て実際の業務で使う暁には信頼のおける業者から証明書の発行が必要。


この文書はMicrosoft® Visual Studio® 2005 Beta 2 日本語版をベースに記述されています。製品版では異なる場合があります。