2012年6月11日月曜日

ThinApp ThinDirect について ( IE8・9 から VirtIE6 を開く)

ThinApp ThinDirect について ( IE8・9 から VirtIE6 を開く)


今回は ThinDirect ( Native Browser Redirection ) について書きたいと思います。


ThinDirectは、より便利に仮想化したブラウザを利用するための機能です。



例えば、こんなシチュエーションの場合に威力を発揮します。
Windows7環境で主に利用するブラウザは
もともとインストールされているIE8だとします。
日常的なWebの利用は、IE8を利用します。

業務用のWebシステムがIE6でしか動作しないため
IE6をThinAppで仮想アプリ化し、業務用のWebシステムを利用する場合だけ
VirtIE6を利用するとします。

利用者視点でみると、問題点というか煩わしさがあります。

普段利用するのがIE8で
特定の業務Webシステムを利用したい場合だけ
VirtIE6をダブルクリックで起動して
利用することになります。

利用者がIE8で開くか、VirtIE6で開くかを
選択しないといけません。
多くの企業では、ポータルサイトをスタートページにしていて
社内システムのリンク集が並んでいると思います。
また、多くのユーザーは、自分のお気に入りの中に、
社内Webシステムのリンクを登録して利用していると思います。

そこで、問題なのがIE8で社内ポータルサイトを開き
社内システムのリンクをクリックした場合に
通常であればIE8の中でそのシステムが開いてしまいます。
また、お気に入りから呼び出した場合も、やはりIE8のなかで開いてしまいます。

本当は、VirtIE6で開いてもらいたいですよね。

その希望を実現する機能が、ThinDirectになります。

利用するまでの流れ
1. VirtIE6.exe 等の仮想化されたブラウザを対象のPCからアクセス可能な記憶域に設置します。
(HDDやネットワーク共有、CD-ROM、USBメモリ等の記憶域)

例) [C:\ThinApps\VirtIE6.exe] を設置


2.ネイティブIE用のプラグインとしてThinDirectをインストールします。
ThinDirect.msiを実行
(管理者権限が必要)
インストールすると、ネイティブIEのアドオンの管理に表示されます。
(IE9の場合)
ThinDirectのモジュールは、以下にコピーされます。
C:\Program Files\VMware\VMware ThinApp\ThinDirect
・ThinDirect.dll
・ThinDirectLauncher.exe


3.VirtIE6等の仮想化されたブラウザにリダイレクトしたい、URLを設定します。
グループポリシー、レジストリ、ThinDirect.txtの何れかを利用し、
リダイレクトしたいURLを記述します。

  例)グループポリシーを利用した設定方法
( ThinDirect.adm )を利用し、コンピューターに対してThinDirectの設定を行います。
コンピューター or ユーザーに設定可能です。
1.グループポリシーエディターを起動-[管理用テンプレート]-[テンプレートの追加と削除]
[追加(A)]-[ThinDirect.adm]を選択し、[開く(O)]

   [ コンピューターの構成]-[従来の管理用テンプレート(ADM)]-[VMware ThinDirect]
   [フィルター]を無効にします。
    

右ペインより、[Define Your Setting for the Virtual Browser]をダブルクリックして設定を行います。
・有効 を選択
・Virtual Browser On/Off チェックを入れて有効にします。
・Virtual Browser Name 仮想化したブラウザの格納先のフルパスを設定します。
例)C:\ThinApps\VirtIE6.exe
・Redirect 仮想ブラウザで開きたいURLを設定します。
例)http://www.vmware.com/*
http://*yahoo.co.jp/*
*vmware.com/*



※実際にGPOで設定されるのは、以下のレジストリです。
コンピューターに設定した場合:
HKEY_LOCAL_MACHINE\SOFTWARE\VMware, Inc.\VMware ThinApp\ThinDirect\
ユーザーに設定した場合は、HKEY_CURRENT_USERに読み替えてください。

GPOを利用せずに、直接レジストリに設定しても問題ありませんでした。

 レジストリを利用せずに、ThinDirect.txtを利用する場合
以下のパスにThinDirect.txtを設置します。
  C:\Program Files\VMware\VMware ThinApp\ThinDirect\ThinDirect.txt
ThinDirect.txtを以下のように設定します。
[C:\ThinApps\VirtIE6.exe] 仮想化したVirtIE6のフルパスを設定
http://www.vmware.com/* リダイレクトしたいURLのマッチングルールを記述
http://*yahoo.co.jp/*
*vmware.com/*



ネイティブIE8から仮想IE6にリダイレクトされるまでの具体的な処理の流れは
1.ネイティブIE8を起動します。
ユーザーが普通にIE8を起動する。

2.IE8のプラグインとして、ThinDirect.dllが読み込まれます。
自動的にIE8が登録された様々なプラグインを読み込みます。

3.ThinDirect.dllプラグインは、設定されたリダイレクトされる対象のURLをレジストリ or ThinDirect.txtから
読み込みます。
その際に、リダイレクトするVirtIE6.exeのパスを把握します。
IE8の起動時なので、リダイレクト先のURLを編集した場合は、
IE8のプロセスをリスタートする必要があります。
毎回読み込んでいたらパフォーマンスに影響があるので、
ThinDirect.dll読み込み時にメモリにキャッシュしていると思われます。

4.IE8の中で、リンクをクリックします。
通常のリンクをクリックします。

5.IE8の中で、画面遷移が行われる前にBeforeNavigateイベントが発生します。
IE8のアドレスバーのURLも変わります。

6.IE8は、プラグインにBeforeNavigateイベントが発生したことを通知し、
あわせて、遷移先のURLを教えます。
余談ですが、IEには様々なイベントがあるので、プラグイン側でIEに対して、
欲しいイベントをもらうための登録や処理を実装します。

7.ThinDirect.dllプラグインがIEから、画面遷移先のURLを受け取ります。

8.ThinDirect.dllプラグインは、リダイレクト対象のURLとマッチングするか判断します。
マッチングしない場合は、そのまま何もせずにスルーします。

9.マッチングした場合は、VirtIE6を起動するためのThinDirectLauncher.exeを起動します。

 VirtIE6が起動していない場合にThinDirectLauncher.exeを経由して、VirtIE6を起動します。


10.ThinDirect.dllプラグインは、IE8に新しいタブを作成しリダイレクト処理中のメッセージを表示します。

※ver4.6.2から3秒後に自動的に新しいタブが閉じるようになりました。

11.ThinDirectLauncher.exeはVirtIE6.exeを起動します。
12.ThinDirect.dllプラグインは起動したVirtIE6.exeに対してDDEメッセージ(WWW_OpenURL)を利用しURLを送信します。
13.VirtIE6.exeは、DDEメッセージ(WWW_OpenURL)を受信しURLを取得したあとに画面遷移を行います。


※多分合っていると思いますが、外側から調査しただけなので、ちょっと違う箇所があるかもしれません。

対応環境
ネイティブ側でサポートされるブラウザ
IE6,7,8,9,10,11
Firefox 22以降(ThinApp ver5.1.0から追加)

※IE系のみです。リダイレクトする元になるブラウザThinDirectプラグインがIE専用のため

仮想アプリ側でサポートされるブラウザ
IE6,7,8,9,10,11
Firefox
Chrome
Safari
Opera
※リダイレクトされる側はIE系以外もサポートされます。

参考:
ThinDirect.txtの記述方法(マッチングルール)
http://kb.vmware.com/selfservice/microsites/search.do?language=en_US&cmd=displayKC&externalId=1026635

ThinDirectについて
http://kb.vmware.com/selfservice/microsites/search.do?language=en_US&cmd=displayKC&externalId=1026566

ThinDirectの設定方法について
http://kb.vmware.com/selfservice/microsites/search.do?language=en_US&cmd=displayKC&externalId=1026636

改定履歴:
 初版:2012-06-11
 2014-09-12 ThinApp5.1.0対応