.NET TIPS ClickOnceオンライン・キャッシュ領域のサイズを変更するには?[2.0のみ、C#、VB]デジタルアドバンテージ 一色 政彦2006/07/21 |
![]() |
|
|
.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に変更している。 | |||||||||||||||
|
ただし、ここで重要な注意点がある。実際にClickOnce機能によりオンライン実行される際のオンライン・キャッシュ領域のサイズは、OnlineAppQuotaInKBで指定した値の半分までが使用可能として認識される(※以下の説明では、いずれの数値も10進数で表現しているので注意すること)。つまり、例えばOnlineAppQuotaInKBの値に「614400」Kbytes(=600Mbytes)を指定した場合には、実際には「307200」Kbytes(=300Mbytes)がオンライン・キャッシュ領域で使用可能なサイズとして割り当てられるわけである。
よって、OnlineAppQuotaInKBには希望のサイズの2倍の数値を入力しなければならない。例えば、領域サイズを「500Mbytes」に拡張したい場合には、「512000」Kbytes(=500Mbytes)ではなく、「1024000」Kbytes(=1000Mbytes)を指定しなければならないのである。
カテゴリ:Windowsフォーム 処理対象:ClickOnce |
|
![]() |
「.NET TIPS」 |
- 第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用のアドイン。プレゼンテーション時の字幕の付加や、多言語での質疑応答、スライドの翻訳を行える
![]() |
|
|
|
![]() |