.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」


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メールマガジン 新着情報やスタッフのコラムがメールで届きます(無料)

注目のテーマ

Insider.NET 記事ランキング

本日 月間