連載
Enterprise Library概説

UpdaterABを使った高度な自動更新機能を実装する

アバナード株式会社 市川 龍太(patterns & practices Champion
2006/01/11
Page1 Page2 Page3 Page4

カスタムDownloaderを作成する

 ここまでで、UABを利用することにより、BITSを使った基本的なダウンロード機能だけでなく、Activation Processを利用して非常に柔軟な更新処理を実現できることがお分かりいただけたと思う。

 しかしBITSを使ったダウンロード機能は、BITSをサポートしていないOS(Windows 98など)では利用できず、さらにはイントラネット内で利用するアプリケーションであれば、もっと手軽で高速な更新ができるように共有フォルダからUNCアクセスによってファイルをコピーしたい場合もあるだろう。

 そこで次に、BITSを利用せずにUNCアクセスでファイルをコピーするようなカスタムDownloaderを作成してみよう。

●UNCDownloaderを作成する

 UNCアクセスによるDownloaderを作成するには以下の手順で行う。

Visual Studioのプロジェクトの新規作成で、クラス・ライブラリ・プロジェクト(プロジェクト名はUNCDownloader)を作成する(先ほど作成したWindowsアプリケーションのソリューションに新規プロジェクトを追加すればよいだろう)

以下のアセンブリ・ファイルへの参照を追加する

  • Microsoft.ApplicationBlocks.Updater.dll
     → UABをインストールしたフォルダ(基本的に「C:\Program Files\Microsoft Patterns & Practices\Updater Application Block 2.0」)の「Common」フォルダの中にある

  • Microsoft.Practices.EnterpriseLibrary.Configuration.dll

  • Microsoft.Practices.EnterpriseLibrary.Common.dll
     → Enterprise Libraryをインストールしたフォルダ(基本的に「C:\Program Files\Microsoft Enterprise Library June 2005」)の「bin」フォルダの中にある

で作成したプロジェクトにIDownloaderインターフェイスを継承したクラス(クラス名はUNCDownloder)を追加する

で作成したプロジェクトにDownloadProviderDataクラスを継承したクラス(クラス名はUNCDownloaderProviderData)を追加する

Manifestツールで構成設定を行う

各構成ファイルを手動で設定する

 この手順のうち、のUNCDownloderクラスとのUNCDownloaderProviderDataクラスについては、UAB付属のドキュメントに記述されているCode Sampleが利用できる。なお、このCode Sampleは問題のある個所がいくつかあるため、筆者が修正したものを以下からダウンロードできるようにした。

●[Downloader]タブにおけるプロパティ設定

 次にManifestツールの[Downloader]タブを開いてDownloader名として「UNCDownloader」を設定する。

[Downloader]タブにおけるプロパティ設定

●[Applicaton Properties]タブにおけるプロパティ設定

 以下の画面は、Manifestツールの[Application Properties]タブの各プロパティの設定例である。更新ファイルが配置されているフォルダの設定などでは共有フォルダを指定する。

Application Propertiesタブにおけるプロパティ設定
注目してほしいのは、Files URIとSource Folderの設定値だ。どちらも共有フォルダ(\\MyComputer\MyApp\)が使われている。これを実際に指定するには、C:\MyAppが共有フォルダとして公開されている必要がある。なおSource Folderの値は右にある[Browse]ボタンを使って指定する必要がある。

 以上の設定を行ったら保存しておこう。

●各構成ファイルを手動で設定する

 BITSDownloaderを利用する場合はConfigurationコンソールを使って各構成ファイルの設定を行えたが、UABではほかのApplication Block(例えばLoggingAB)のようにConfigurationコンソールからカスタム機能を利用するような仕組みがまだ用意されていないため、カスタムのDownloaderを利用する場合は、これを手動で設定する必要がある。

 従って、実際にUNCDownloaderを利用する場合は、まずConfigurationコンソールでBITSDownloader用の設定で構成ファイルを設定してから、UNCDownloader用に各構成ファイルを修正する方が簡単であろう。

 ここではまず、UAB用の構成ファイル(本稿ではデフォルトのファイル名のままでUpdaterConfiguration.config)を以下のように修正する。

……前略……
<downloaders>
  <downloader xsi:type="UNCDownloaderProviderData" name="UNCDownloader">
  </downloader>
</downloaders>
……後略……
UAB用構成ファイル(UpdaterConfiguration.config)の設定
<downloaders>要素の中の内容をこのように書き換える。

 続いてアプリケーション構成ファイル(App.config)を以下のように修正する。

……前略……
<configurationSection xsi:type="ReadOnlyConfigurationSectionData" name="UpdaterConfiguration" encrypt="false">
  <storageProvider xsi:type="XmlFileStorageProviderData" name="XML File Storage Provider" path="UpdaterConfiguration.config" />
  <dataTransformer xsi:type="XmlSerializerTransformerData" name="Xml Serializer Transformer">
    <includeTypes>
      <includeType name="UNCDownloader" type="MyApp.Downloaders.UNCDownloaderProviderData, UNCDownloader" />
    </includeTypes>
  </dataTransformer>
</configurationSection>
……後略……
アプリケーション構成ファイルの設定
<includeTypes>要素の中の内容をこのように書き換える。<includeType>要素のname属性には任意の名前を設定し、type属性には名前空間付の完全修飾名、アセンブリ名の順で設定する。

 最後にUNCDownloaderプロジェクトをビルドして、作成された.DLLファイルへの参照を、Windowsアプリケーションのプロジェクトに追加すれば完了だ。

 これで「UABを使用した場合のサンプル・プログラム(C#)」を実行すると、コピー先フォルダ(ここではC:\ DestFolder)直下にファイルがダウンロードされるはずだ。

 UAB付属のドキュメントには、カスタムActivation Processorとしてレジストリに任意の値を追加するRegistryProcessorの作成方法についても紹介されているため、興味のある方は試してみるとよいだろう。

 以上、今回はUABの概要説明と導入手順、さらにはActivation Processの使用方法やカスタムDownloaderを作成する手順について解説した。

 UABの導入は一見すると複雑に思われるかもしれないが、Activation Processによる処理の実行や柔軟な拡張性など、ClickOnceを始めとするほかの自動更新技術にはない機能を備えているので、自動更新処理を実装する場合の選択肢の1つとして検討する価値は十分あるといえる。

 次回はSecurity Application Blockについて.NETが提供する認証機能を踏まえて解説する予定である。End of Article

【お知らせ】
Developers・Summit 2006 −「Enterprise Libraryの真実」セッション開催
 2006年2月9日(木)〜10日(金)に、目黒雅叙園にて開催されるDevelopers・Summit 2006の2日目(10日)に、「Enterprise Libraryの真実」セッションが設けられる予定だ。会場へお越しの際にはぜひともこのセッションにお立ち寄りいただきたい。
 

 INDEX
  連載:Enterprise Library概説
  UpdaterABを使った高度な自動更新機能を実装する
    1.ConfigurationコンソールでUABの構成を設定する
    2.Manifestツールでマニフェスト・ファイルを設定する
    3.更新処理とActivation Processを実行する
  4.カスタムDownloaderを作成する
 
インデックス・ページヘ  「Enterprise Library概説」


Insider.NET フォーラム 新着記事
  • 第2回 簡潔なコーディングのために (2017/7/26)
     ラムダ式で記述できるメンバの増加、throw式、out変数、タプルなど、C# 7には以前よりもコードを簡潔に記述できるような機能が導入されている
  • 第1回 Visual Studio Codeデバッグの基礎知識 (2017/7/21)
     Node.jsプログラムをデバッグしながら、Visual Studio Codeに統合されているデバッグ機能の基本の「キ」をマスターしよう
  • 第1回 明瞭なコーディングのために (2017/7/19)
     C# 7で追加された新機能の中から、「数値リテラル構文の改善」と「ローカル関数」を紹介する。これらは分かりやすいコードを記述するのに使える
  • Presentation Translator (2017/7/18)
     Presentation TranslatorはPowerPoint用のアドイン。プレゼンテーション時の字幕の付加や、多言語での質疑応答、スライドの翻訳を行える
@ITメールマガジン 新着情報やスタッフのコラムがメールで届きます(無料)
- PR -

注目のテーマ

業務アプリInsider 記事ランキング

本日 月間
ソリューションFLASH