連載
|
![]() |
|
Page1
Page2
|
|
発行ウィザードを使わないClickOnce発行
発行ウィザードを使わない場合でも、ClickOnce発行のための基本設定は同じだ。次の画面はプロジェクト・プロパティの[発行]ページでその基本設定を行っているところだ。
![]() |
|||||||||||||||||||||||||||
| 基本的なClickOnce発行手順 | |||||||||||||||||||||||||||
| プロジェクト・プロパティの[発行]タブを開いて、ClickOnce発行のための基本設定を行っているところ。 | |||||||||||||||||||||||||||
|
の[今すぐ発行]ボタンをクリックすると、即座に発行作業を実行できる。
なお、ここで指定する[発行]ページの内容は先ほどの発行ウィザードとほぼ同じなので詳細な説明は割愛する(ちなみに発行ウィザードで実際に発行を行うと、その設定内容が自動的に保存されて、ここの基本設定に反映される)。違うのは、発行バージョンが指定できることだ。発行バージョンは、ClickOnceアプリの発行をバージョン管理するためのもので、新しい発行を行う場合にはその発行バージョンを必ずインクリメントしなければならない。
ClickOnceテクノロジでは、さまざまなアプリケーションの配置と更新のオプションが提供されており、アプリケーション利用者のネットワーク環境などに合わせた配置/更新ストラテジを(配置/更新オプションとして)適切に選択できるようになっている。これらは、上記の画面の![]()
![]()
![]()
の各ボタンから実行される機能により指定できる。
まずは
の[オプション]ボタンをクリックすると表示される[発行オプション]ダイアログで設定できる配置オプションの内容から見ていこう。
●配置オプション
次の画面は[発行オプション]ダイアログを表示したところだ。
![]() |
||||||||||||||||||||||||||||||
| ClickOnce配置の発行オプションの設定 | ||||||||||||||||||||||||||||||
| プロジェクト・プロパティの[発行]ページで[オプション]ボタンをクリックして、[発行オプション]ダイアログを表示したところ。このダイアログで配置(=配布)に関するオプション設定を行える。 | ||||||||||||||||||||||||||||||
|
配置オプションの指定で注意すべき点の1つは、配置場所として「(C)CD-ROM/DVD-ROMなどのローカル環境上の場所」を選択した場合に、(デフォルトではオフとなる)
の[CD からインストールする場合、CD が挿入されるときにセットアップを自動的に開始する]にチェックを入れた方がよいことだ。これによりautorun.infファイルが生成されるようになる。
CD-ROMやDVD-ROMなどのメディアでClickOnceアプリを配布する場合、発行場所として指定したディレクトリ・パス(=フォルダ)に生成されたすべてのファイルを、CD-ROMやDVD-ROMなどのメディア(基本的にそのルート)に焼く。そのメディアをドライブに挿入すると、もしメディアのルートにautorun.infファイルがあれば、(Windowsのデフォルト設定では)その記述内容に従った処理が実行される。このautorun.infファイルには、setup.exeファイル(=ClickOnceアプリのインストーラ)を実行するように記述されているため、自動的にClickOnceのインストーラが走るようになるわけだ*1。
| *1 ただし(現在の)日本語版ClickOnceでは、生成されるこのautorun.infファイルの文字コードがUTF-8(BOM付き)になっているため、実際には自動起動されないという問題がある。これを回避するには、手動でautorun.infの文字コードを日本語Windowsのデフォルト文字コードであるShift-JISに変更する必要がある。 |
そのほかの各項目の内容については上記の説明を参照してほしい。
●更新オプション
次に[更新]ボタンをクリックすると表示される[アプリケーションの更新]ダイアログで設定できる更新オプションの内容を見てみよう。次の画面は実際に[アプリケーションの更新]ダイアログを表示したところだ。
![]() |
|||||||||||||||
| ClickOnceの更新オプションの設定 | |||||||||||||||
| プロジェクト・プロパティの[発行]ページで[更新]ボタンをクリックして、[アプリケーションの更新]ダイアログを表示したところ。このダイアログで更新に関するオプション設定を行える。 | |||||||||||||||
|
この更新オプションで注意すべきなのは、
の「アプリケーションの更新を確認する方法」と
の「更新を確認する頻度」の指定だ。これらの指定は、あくまで更新<確認>のタイミングを指定するためのもので、実際の<ダウンロード>と<アップデート>のタイミングを指定するものではない。ClickOnceでは更新処理(ダウンロードとアップデート)は基本的に起動時に行われる。これは現在のClickOnceではBITS(バックグラウンド・インテリジェント転送サービス)などに対応していないため、暗黙的にアプリケーション全体をダウンロードする機能が弱いためだ。
アプリケーションの開始前(=起動時)に更新の確認を行う場合、アプリケーションを起動する前に明示的にサーバに確認しに行き、更新がある場合はすぐにユーザーに通知する。一方、アプリケーションの開始後(=実行中)に更新の確認を行う場合は、アプリケーションの実行中にバックグラウンドで暗黙的にサーバにアクセスして、更新がある場合は<次回>起動時にユーザーに通知する。このため、どちらの場合も基本的に、起動時にユーザーの承認を得て、アプリケーションの更新を行うのである。
なお、ClickOnceではこのような定期的な更新確認だけではなく、System.Deployment名前空間のAPIを用いて更新確認のコードをClickOnceアプリ内に実装することで、任意のタイミングで更新確認を行うことも可能だ(プログラミング方法は次回以降で紹介)。
これらの更新確認のタイミングを選択する基準を次の表にまとめた。
| 更新確認のタイミング |
選択基準 |
|
(a)アプリケーション起動時に毎回確認 = →確認後すぐにダウンロードして更新する。 |
高速なネットワークに接続されていて、軽量なアプリケーションの場合に最適(※低速な接続で使用すると、アプリケーションの起動が異様に遅くなる可能性がある)。ClickOnceアプリの更新を確実に行わせたいようなクリティカルな状況ではこれを選択しなければならない。VS 2005のClickOnceではデフォルトでこれが選択される |
|
(b)アプリケーション実行中に定期的に確認 =[アプリケーションの開始後に行う] →次回起動時にダウンロードして更新する。 |
起動時の確認作業を省くことで起動スピードを上げられるので、低速なネットワークに接続されている大規模なアプリケーションの場合に最適。実行中にバックグランドで更新を確認するので、特にオフライン利用時にスムーズにアプリケーションを利用できるようになる。また、たいていの場合は、それほど頻繁にアプリケーションが更新されるわけではないので、一定期間ごとの更新チェックでも十分だと考えられる |
|
(c)任意のタイミングで確認 →任意のタイミングでダウンロードして更新する。 |
アプリケーションの更新タイミングを完全に制御したい場合に最適。例えば、ユーザーごとに異なる更新方法が必要な場合など |
| 更新確認方法の選択基準 | |
| 更新確認のタイミングを決めるうえで、その基準となりそうなものをまとめた。 | |
●アプリケーション・ファイルとダウンロード・グループ
次に[アプリケーション ファイル]ボタンをクリックすると表示される[アプリケーション ファイル]ダイアログについて説明しよう。次の画面は実際にそれを表示したところだ。
![]() |
||||||||||||
| アプリケーション・ファイル(&ダウンロード・グループ)のオプション設定 | ||||||||||||
| プロジェクト・プロパティの[発行]ページで[アプリケーション ファイル]ボタンをクリックして、[アプリケーション ファイル]ダイアログを表示したところ。一覧表にClickOnceアプリとして配布されるすべてのファイルが表示される。 | ||||||||||||
|
[アプリケーション ファイル]ダイアログでは、配布するClickOnceアプリに含めるファイルやデータ・ファイルを指定する。この一覧表に表示されるファイルは次のいずれかの条件を備えたものである。
-
プロジェクトがビルドにより生成・出力するファイル
→(例えば、「SampleApplication.exe」「SampleApplication.exe.config」「SampleApplication.exe.pdb」など) -
プロジェクトが参照しているアセンブリ・ファイル
→(例えば、「ClassLibrary1.dll」など) -
プロジェクトで「コンテンツ」としてビルドされたファイル
→(例えば、「TextFile1.txt」「XMLFile1.xml」「AdventureWorks_Data.mdf」など)
プロジェクト内にあるファイルを「コンテンツ」としてビルドするには、そのファイルを[ソリューション エクスプローラ]で選択して、[プロパティ]ウィンドウで[ビルド アクション]を「コンテンツ」に変更すればよい。この作業により、任意のファイルをClickOnceアプリで配布することができる。
この一覧表で表示されるファイルは、拡張子などに基づき配布形態(=発行の状況)が自動的に選択されている。その自動選択の基準は次のようになっている。
-
通常:→アプリケーション・ファイルとして「追加」
-
.pdbファイルなど:→アプリケーション・ファイルから「除外」
-
.xmlファイルや.mdfファイルなど:→「データ ファイル」*2として追加
-
プロジェクトが参照するアセンブリ(.dllファイル)でローカルにコピーしないもの:→「必須コンポーネント」*3として追加
|
*2 データ・ファイルはClickOnceデータ・ディレクトリにインストールされる。ClickOnceデータ・ディレクトリは、ClickOnceアプリケーション・ストア(ClickOnceキャッシュ領域)と同じく、
ユーザーごとの「C:\Documents and Settings\<ユーザー名>\Apps\2.0」配下にある。 *3 必須コンポーネントは、ClickOnceではコピーされないため、エンド・ユーザーが自分でインストールしなければならない。このファイルがGAC(グローバル・アセンブリ・キャッシュ)にない場合は、インストールはブロックされる。なお、必須コンポーネントとなるアセンブリは厳密名で署名されている必要がある。 |
また、ここでダウンロード・グループを指定できる。このダウンロード・グループを設定すると、そのグループ単位で効率的にClickOnceアプリをダウンロードするようにできる。これはClickOnceの「オンデマンド配置」と呼ばれる機能だ。オンデマンド配置はプログラミング・コードで実装する必要がある。その実装方法については次回以降で解説する。
●必須コンポーネント
最後に[必須コンポーネント]ボタンをクリックすると表示される[必須コンポーネント]ダイアログについての説明だ。
ここでいう必須コンポーネントは、別名で「ブートストラッパ」(Bootstrapper)と呼ばれ、アプリケーションが実行される要件となるコンポーネント(例えば.NET Framework 2.0」など)をインストールするための機能だ。先ほど出てきた「アプリケーション・ファイルとしての必須コンポーネント」とは異なるので、注意してほしい(通常は、必須コンポーネントといえば、こちらの「ブートストラッパ」を指す)。
次の画面は実際に[必須コンポーネント]ダイアログを表示したところである。
![]() |
|||||||||
| 必須コンポーネント(ブートストラッパ)のオプション設定 | |||||||||
| プロジェクト・プロパティの[発行]ページで[必須コンポーネント]ボタンをクリックして、[必須コンポーネント]ダイアログを表示したところ。このダイアログではClickOnceアプリをインストール、実行する前に、あらかじめインストールしておくことが必要なコンポーネント(=必須コンポーネント。例えば、.NET Framework 2.0など)を指定できる。なお、ここで選択可能な必須コンポーネントは自作することもできる(詳細次回以降)。 | |||||||||
|
必須コンポーネントにより、ユーザー環境へのClickOnceアプリの導入がスムーズに実現できるようになり、インストール作業によるアプリケーション配布コストを気にする必要が少なくなる。ただし、ユーザーのWindows OSの種類によっては標準で用意されている必須コンポーネントで対応できないことがある。これについては次回以降の運用に関する説明で触れることにする。
また必須コンポーネントは、独自のものを作成して、この一覧の中に追加することもできる。このカスタム必須コンポーネントは、開発したアプリケーションに特殊な前提要件となるコンポーネントを、ClickOnceアプリ配布時にインストールさせたい場合に便利だ。この実装方法についても次回以降で説明する。
以上が、一通りのVS 2005のIDEによるClickOnceの利用方法だ。これ以外のClickOnce機能としてはプログラミングを活用することになるが、それについては次回以降解説する予定である。
ClickOnce発行機能における欠点
ClickOnceテクノロジは、汎用的なソフトウェア展開をシンプルにまとめた機能なので、ある程度の柔軟性は備えているものの(例えば、ダウンロード・グループによるオンデマンド配置やカスタムの必須コンポーネントなど、プログラミングで拡張できる部分もある)、どうしても融通の利かない部分はある。代表的なものとしては、次のような制約を挙げることができる。
-
制約:[スタート]メニューに登録されるショートカットのカスタマイズ
→ClickOnceのインストール/アンインストール処理の前後に独自の処理を追加できないため、[スタート]メニューのショートカット項目として、例えばアンインストール・プログラムやヘルプ・ファイルなどへのショートカットを追加することはできない。実行時やカスタムの必須コンポーネントで追加するような方法も考えられるが、アンインストール時に削除されないという問題が残る。 -
制約:インストール時のレジストリ登録(ファイル拡張子の関連付けなど)
→先ほどの制約と同じように、ClickOnceのインストール/アンインストール処理の前後に独自の処理を追加できないため、ファイルの拡張子の関連付けといったレジストリ登録処理がインストール時に行えない。アプリケーション起動時などにこれを行ってもよいが、その場合アンインストールしても拡張子の関連付けが残ってしまう。なおかつ、前回でも説明したように、ClickOnceアプリは通常の実行は.appref-msファイルなどから起動されるため、ファイルの拡張子の関連付けを行うと、アプリケーションがClickOnceの仕組みの外で動作するという問題がある。従って、例えばMicrosoft WordやExcelのように独自のドキュメント形式を扱うアプリケーションは、現在のClickOnceでは基本的に配布できないと考えた方がよい。 -
制約:インストール時のUIのカスタマイズ
→インストール時に表示される各種ダイアログのUIはカスタマイズできない(これにより、すべてのClickOnceアプリで操作性が共有されて、ユーザビリティが増すとも考えられているが……)。このため、ユーザーとの対話形式でインストール・オプションを決定するようなことは不可能だ。 -
制約:インストール場所の指定
→ClickOnceアプリは、常に固定的にClickOnceキャッシュ領域(ClickOnceアプリケーション・ストア)にインストールする仕様となっている(これにより、アプリケーションの安全性やロールバック機能、管理容易性を高めている)。ちなみに、ClickOnceキャッシュ領域自体の場所も変更できない。 -
制約:すべてのユーザーへのインストール
→ClickOnceアプリは、前回説明したように、ユーザーごとのClickOnceキャッシュ領域にインストールする仕様となっている。このため、1回のインストールですべてのユーザーが利用できるようにすることはできない。
これらの制約がどうしても問題となる場合は、ClickOnceによるソフトウェアの配布・更新はあきらめざるを得ない。代替の展開テクノロジとしては、.MSIファイルによるセットアップやEnterprise LibraryのUpdater Application Blockなどがある。これらの展開テクノロジを活用したい場合は、次のWebページが参考になるだろう。
■
今回はClickOnceの発行手順や発行オプションの選択ポイントなどについて解説した。次回は、ClickOnce独特の開発ポイントやカスタマイズ方法、実運用の手順などを解説する予定だ。お楽しみに。![]()
| INDEX | ||
| ClickOnceの真実! | ||
| 第3回 Visual Studio 2005でClickOnceを極めよう | ||
| 1.ClickOnce発行ウィザード | ||
| 2.発行ウィザードを使わないClickOnce発行 | ||
| 「ClickOnceの真実」 |
TechTargetジャパン
- Kinectが切り開く“夢の近未来” (2012/2/2)
日本を含めた世界中でKinect for Windowsセンサー商用版とSDK正式版がリリース。未来のコンピューティングはどう変化するのか? - 3つの視点でネイティブと.NETの適材適所を考察 (2012/1/31)
アプリ開発は「ネイティブ」と「.NET」、どちらが最良? その問いには「適材適所」と答えるしかない。では、“適所”は一体どこかを考察する - SQL Azure Data Sync入門 (2012/1/30)
SQL Azure/SQL Serverデータベース間のデータ同期を簡単に実現するサービスとは? その仕組みや使用手順を解説 - Windows Phoneアプリ市場の現状を分析する (2012/1/27)
Windows Phone のアプリ・ストアに日々登録されている多種多様なアプリ。カテゴリ別のアプリ数は? 市場の現状を明らかにする
|
|
キャリアアップ
は.NET開発者中心に生まれ変わりました
スポンサーからのお知らせ
.NET開発者中心コーナー
- - PR -
イベントカレンダー
- - PR -







