2018年5月11日金曜日

ThinApp 仮想アプリの起動が遅い場合の対処方法 (Win7では速いのにWin8.1 / Win10 / Win2012 / Win2016 では遅い)


ThinApp 仮想アプリの起動が遅い場合の対処方法
(Win7 では速いのに Win8.1 / Win10 / Win2012 / Win2016では遅い)

最近よく見かける事象ですが、Win7環境で利用していたThinApp仮想アプリを
Win8.1 Win10 やWin2012R2等の比較的新しい環境で実行すると遅い。
というケースがあります。
 Win7では、2秒もかからないのに、新しいOSでは10秒以上かかり
応答なしの空白画面が表示されたりします。

速度が遅くなる原因は多岐に渡りますが、今回投稿する内容に合致するアプリの特徴としては、IEリソースを利用する物となります。

具体的な例としては以下のようなアプリが該当します。
・IEのコンポーネントを利用したブラウザー
・IEを起動する。
・IEのコンポーネントを一部で利用している物
(メーラー等でHTMLメールを表示する部分など)


原因と対策は、以前に投稿した内容を参照して下さい。
「ThinApp で仮想化した SimpleBrowser の起動が Windows8 だけ遅い問題について (COM OutProcess Serverの制御)」

https://tunemicky.blogspot.jp/2013/08/thinapp-simplebrowser-windows8-com.html



対処方法:
対処方法は、4パターンあります。

いずれかの1つの対応を行えば、
起動速度の問題は、解消されます。

※4つの対処を全部設定する必要はありません。

パターン1.
  方針:遅延の原因になっている、Rundll32.exeを仮想環境(VOS)で動作しないように除外する。
Package.iniファイルに以下を追加します。

  [BuildOptions]
  ChildProcessEnvironmentExceptions=rundll32.exe 

 ※ChildProcessEnvironmentExceptionsに関しては、こちらを参照ください。
VOS上の仮想プロセスとして、指定したEXEを除外(物理側で実行)する設定値です。
  http://tunemicky.blogspot.jp/2012/03/thinapp-47-packageini.html


パターン2.
  方針:遅延の原因になっている、COM OutProcess Serverを仮想環境(VOS)で動作しないように除外する。
  GUID: {9BA05972-F6A8-11CF-A442-00A0C90A8F39}
Package.iniファイルに以下を追加します。

  [BuildOptions]
  ExternalCOMObjects= {9BA05972-F6A8-11CF-A442-00A0C90A8F39} 

 ※ExternalCOMObjectsに関しては、こちらを参照ください。
VOS上で指定したGUIDを持つCOM OutProcessの作成を除外(物理側で実行)する設定値です。
  http://tunemicky.blogspot.jp/2012/03/thinapp-47-packageini.html

パターン3.
  方針:遅延の原因になっている、COM OutProcess 自体を仮想環境(VOS)で動作しないように強制する。
Package.iniファイルに以下を追加します。

  [BuildOptions]
  VirtualizeExternalOutOfProcessCOM=0

 ※VirtualizeExternalOutOfProcessCOMに関しては、こちらを参照ください。
VOS上でCOM OutProcessの作成を除外(物理側で実行)する設定値です。
パッケージに含まれているCOM OutProcess 自体は、仮想環境で動作する。
今回のGUIDは、物理側のみに存在している。
  http://tunemicky.blogspot.jp/2012/03/thinapp-47-packageini.html

パターン4.
  方針:遅延の原因になっている、COM OutProcess 自体を仮想レジストリの変更により動作しないようにする。
HKEY_LOCAL_MACHINE.txtファイルに以下を追加します。

isolation_writecopy HKEY_LOCAL_MACHINE\Software\Classes\CLSID\{9BA05972-F6A8-11CF-A442-00A0C90A8F39}\LocalServer32
  Value=
  REG_SZ~#2300