.NET TIPS

ClickOnceオンライン・キャッシュ領域のサイズを変更するには?[2.0のみ、C#、VB]

デジタルアドバンテージ 一色 政彦
2006/07/21

ClickOnceの真実 第3回 Visual Studio 2005でClickOnceを極めよう

 .NET Framework 2.0では、ClickOnceというアプリケーションを配布・更新するための機能が追加された。ClickOnceでは、次の2種類のアプリケーション実行方法が提供されている。

(1)ローカル環境へインストールするモード(オンライン/オフライン・モード)
(2)ネットワーク上から起動するモード(オンライン・モード)

 このどちらの方法で実行するとしても、ClickOnceアプリケーションはクライアント・コンピュータに内在するClickOnce専用のキャッシュ領域(以降、ClickOnceキャッシュ領域。「ClickOnceアプリケーション・ストア」とも呼ばれる)に保存される。本稿では、このうち(2)のネットワーク上から起動するモードを選択した場合のClickOnceキャッシュ領域のことを、特に「オンライン・キャッシュ領域」と表現する。

 (2)のモードで部分信頼アプリケーションとして実行する場合のオンライン・キャッシュ領域(いわゆる「クォータ」)は、デフォルトで250Mbytesが割り当てられている(ただし、(2)のモードの完全信頼アプリケーションや(1)のモードでは、この制限はない。なお完全信頼アプリケーションや部分信頼アプリケーションについては、「ClickOnceの真実―第2回 ClickOnceの仕組みを理解しよう」を参照してほしい)。

 これにより、250Mbytes以上の(部分信頼の)ClickOnceアプリケーションを(2)のオンライン・モードで配置しようとすると、次のようなエラーが発生してしまう。

オンライン・キャッシュ領域のサイズをオーバーした場合のエラー表示
デフォルトでは250Mbytes以上の(部分信頼の)ClickOnceアプリケーションを(2)のオンライン・モードで配置すると、このようなエラー・メッセージが表示される。

 このようなエラーを回避するには、(クライアント環境の)オンライン・キャッシュ領域のサイズを変更する必要がある。本稿ではこれを実現する方法を紹介する。

 ちなみに、オンライン・キャッシュ領域のサイズ制限(クォータ)は、1つのClickOnceアプリケーションを構成する純粋なアプリケーション・ファイル群(=.EXEファイルや.DLLファイルなど)の合計サイズに対するもので、データ・ファイル(例えば.MDFファイルなど)は含まれないので注意してほしい。

ClickOnceのオンライン・キャッシュ領域のサイズを変更する方法

 オンライン・キャッシュ領域のサイズを変更するには、次のレジストリ・キーの中に「OnlineAppQuotaInKB」という名前のDWORD値を作成し、設定したい領域サイズをキロバイト(Kbytes)単位でその値のデータとして指定すればよい。

レジストリ・キー:HKEY_CURRENT_USER\Software\Classes
\Software\Microsoft\Windows\CurrentVersion\Deployment

 次の画面は実際にこれを行っているところである。

レジストリ・エディタによるオンライン・キャッシュ領域のサイズの変更例
レジストリ・エディタは、[スタート]メニューの[ファイル名を指定して実行]をクリックし、そこで表示される[ファイル名を指定して実行]ダイアログで「regedit」を入力して[OK]をクリックすることで表示できる。ここではオンライン・キャッシュ領域のサイズを300Mbytesに変更している。
  レジストリ・キー「HKEY_CURRENT_USER\Software\Classes
\Software\Microsoft\Windows\CurrentVersion\Deployment」を選択する。
  「OnlineAppQuotaInKB」という名前のDWORD値を作成する。作成したら、「OnlineAppQuotaInKB」という項目をダブルクリックして、[DWORD 値の編集]ダイアログを表示する。
  まずは[表記]の欄から「10進数」を選択する。
  次に10進数の数値で任意のサイズ(本稿の例では「614400」)を入力する。ここの数値は、(詳しくは後述するが)希望の容量サイズの2倍の数値をキロバイト(Kbytes)単位で入力する必要がある。
  [OK]ボタンを押して入力内容を確定すれば設定は完了だ。

 ただし、ここで重要な注意点がある。実際にClickOnce機能によりオンライン実行される際のオンライン・キャッシュ領域のサイズは、OnlineAppQuotaInKBで指定した値の半分までが使用可能として認識される(以下の説明では、いずれの数値も10進数で表現しているので注意すること)。つまり、例えばOnlineAppQuotaInKBの値に「614400」Kbytes(=600Mbytes)を指定した場合には、実際には「307200」Kbytes(=300Mbytes)がオンライン・キャッシュ領域で使用可能なサイズとして割り当てられるわけである。

 よって、OnlineAppQuotaInKBには希望のサイズの2倍の数値を入力しなければならない。例えば、領域サイズを「500Mbytes」に拡張したい場合には、「512000」Kbytes(=500Mbytes)ではなく、「1024000」Kbytes(=1000Mbytes)を指定しなければならないのである。End of Article

カテゴリ:Windowsフォーム 処理対象:ClickOnce

この記事と関連性の高い別の.NET TIPS
ClickOnceオンライン・キャッシュ領域をクリアするには?
ClickOnceデータ・ディレクトリのパスを取得するには?
ClickOnceアプリのディレクトリ・パスを取得するには?
ClickOnceのログ・ファイルを特定の場所に作成するには?
ClickOnceアプリをロールバックさせるには?
このリストは、(株)デジタルアドバンテージが開発した
自動関連記事探索システム Jigsaw(ジグソー) により自動抽出したものです。
generated by

「.NET TIPS」

TechTargetジャパン

Insider.NET フォーラム 新着記事
  • 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 のアプリ・ストアに日々登録されている多種多様なアプリ。カテゴリ別のアプリ数は? 市場の現状を明らかにする

@ITメールマガジン 新着情報やスタッフのコラムがメールで届きます(無料)

RSSフィード

キャリアアップ

- PR -
@IT Sepcial

イベントカレンダー

PickUpイベント

- PR -
もっと見る
- PR -

お勧め求人情報

ホワイトペーパーTechTargetジャパン

@IT Sepcial
ソリューションFLASH