2011年11月1日火曜日

ThinApp / App-V 環境変数を設定する方法


ThinApp / App-V 環境変数を設定する方法


仮想アプリの実行時に独自の環境変数を設定したいことが
あると思います。

例えば、PathにEXEの格納先のbinフォルダを通したいとか
Oracle クライアントを使っていてどうしても、Oracle_Home を設定しておきたいとか
その他にも、環境変数を色々と設定したい事があるともいます。
__COMPAT_LAYER 等々


両製品ともに、柔軟に環境変数のカスタマイズが可能なので、その方法を簡単に書きたいと思います。



Path環境変数にc:\test\binを追加

ORACLE_HOME環境変数にC:\oracle\product\10.2.0を追加




__COMPAT_LAYER環境変数にRunAsInvokerを追加


















【 ThinApp の場合の設定方法】
仮想レジストリを利用します。
※組込スクリプトを利用してコマンドを発行することでも実現可能ですが、今回は
 仮想レジストリを利用します。

HKEY_LOCAL_MACHINE.txtを編集します。
※SetupCaptureのポストスキャン前に手作業で環境変数をセットする方が早いです。
もちろん、手作業で追加した物も、ちゃんとスキャンしてくれます。
後から変更する場合について書きます。

HKEY_LOCAL_MACHINE.txtの環境変数の設定箇所
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Environment
isolation_writecopy HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Environment
Value=VirtualPath
REG_SZ~c:\test\bin#2300
Value=ORACLE_HOME
REG_SZ~C:\oracle\product\10.2.0#2300
Value=__COMPAT_LAYER
REG_SZ~RunAsInvoker#2300


簡単な解説:
Path環境変数は、特別扱いです。
VirtualPath に値を設定します。c:\test\bin
VirutalPath にパスを追加すると自動的にPath環境変数に追加されます。
※ThinApp独自の機能です。Pathに追加しても反映されませんのでご注意を。

ORACLE_HOME にC:\oracle\product\10.2.0を追加しています。
__COMPAT_LAYER に RunAsInvoker を追加しています。
※空白(ブランク)にする場合は、REG_SZ~#2300をセットします。

編集が終わったら Build.bat を実行します。

【 App-V の場合の設定方法】
※Sequencerの監視中に手作業で環境変数をセットする方が早いです。
もちろん、手作業で追加した物も、ちゃんとスキャンしてくれます。
後から変更する場合について書きます。
OSDファイルを編集します。
青字部分を追加します。
<VIRTUALENV TERMINATECHILDREN="FALSE">
  <ENVLIST>
    <ENVIRONMENT VARIABLE="PATH">c:\test\bin;%PATH%</ENVIRONMENT>
    <ENVIRONMENT VARIABLE="ORACLE_HOME">C:\oracle\product\10.2.0</ENVIRONMENT>
    <ENVIRONMENT VARIABLE="__COMPAT_LAYER">RunAsInvoker</ENVIRONMENT>
  </ENVLIST>
</VIRTUALENV>

簡単な解説:
ENVLIST タグに環境変数を追加していきます。
ENVIRONMENT VARIABLE が環境変数です。

Path に値を設定します。c:\test\bin
※Pathを追加するので必ず%PATH%を書きます。既存のPATHを利用しつつ追加するため。
ORACLE_HOMEにC:\oracle\product\10.2.0を追加しています。
__COMPAT_LAYERにRunAsInvokerを追加しています。
※空白(ブランク)にする場合は、値を空にします。
例)<ENVIRONMENT VARIABLE="HOGE"></ENVIRONMENT>


参考:
http://www.softgridblog.com/?p=88


実行結果:
App-V 4.6SP1で確認
ThinApp 4.6.2での実行結果