2013年11月20日水曜日

Horizon View Client 2.2 仮想化 レシピ

Horizon View Client 2.2 仮想化 レシピ

リリースされたばかりの、Horizon View Client 2.2 (32bit windows版)をThinAppで仮想アプリ化する
手順について、今回は記載したいと思います。

View Clientは、比較的簡単に仮想アプリ化できるので、お勧めです。

メリット:
 ・インストールする必要がない。
 ・即、使える。
 ・WindowsベースのThin Clientでも、実行できる。

デメリット:
 ・USBリダイレクト機能が利用できない。
  (ある意味、セキュアだったりするので、メリットになるかもです。)

パッケージング環境:
 Windows 7 SP1 x86
  ThinApp ver4.7.3
  VMware Horizon View Client for 32-bit Windows version 2.2.0

特記事項:
Windows7 環境は、クリーンな環境を利用します。
キャプチャ中は、余計な動作をなるべく阻止する事とパフォーマンスを
高めるために、以下の設定を行っています。

※必須では、ありませんが、純粋にView Clientのインストールによる変更点だけを
キャプチャしたい為。
これらを無効にしなくても、問題なく動作するパッケージは作成できると思います。

  ・Windows Update  無効化(サービスの設定で停止&無効)
  ・Windows Defender 無効化(サービスの設定で停止&無効)
  ・Windows Search  無効化(サービスの設定で停止&無効)
  ・スクリーンセーバー 無効化
  ・ネットワーク 無効化 (仮想マシンのNICを切断)
  ・省電力モード 無効化


動作確認環境:
 Windows 7 SP1 x86
 Windows 8 x86
 Windows XP SP3 x86


仮想化手順:

#1.キャプチャ用のクリーンなWindows 7にView Client 2.2のインストーラを
デスクトップ等に、事前にコピーしておきます。
  VMware-Horizon-View-Client-x86-2.2.0-1404668

#2.VMware ThinApp Setup Captureを起動します。[Next>]をクリック



#3.Prescanを行います。

#4.Prescanが完了すると、Install Application画面が表示されるので、最小化しておきます。


#5.VMware-Horizon-View-Client-x86-2.2.0-1404668.exeを実行します。






#6.vSphere Client 5.5 のインストールを行います。



USBリダイレクトの機能は、仮想アプリでは利用できないので、
インストールオプションから除外しておきます。








#7.のインストールが完了すると、システムの再起動を求められます。
キャプチャ中なので、再起動すると全てが失われてしまいそうで、躊躇すると思いますが
気にせずに、「はい」を押して再起動してしまいます。




ログインします。(同じユーザーアカウント)


自動的にSetup Captureが起動します。
「Continue installation process」を選択して、「Next」をクリックします。

元の画面に戻ってきました。
一安心ですね。

#8.Setup CaptureのPostscanを押します。

#9.エントリーポイントの設定では、VMware Horizon View Client.exeにチェックを付けてNextを押します。

#10.後は、ウィザードに従って、次々と進めていきます。
※Quality Assurance Statisticsの詳細については、以前の投稿を参照ください。

※仮想アプリを圧縮したいので、[Compress virtual package]にチェックを付けます。

※PCのスペックによりますが、2分程度かかります。

※ここでは、buildせずに Skip the build processにチェックを付けてNextをクリックします。
後で、各種チューニングを行ってからBuild.batを実行し仮想アプリケーションの作成を行います。



※キャプチャされたプロジェクトフォルダのサイズは、だいたい70MBくらいです。

#11.IME関連の問題に対する、チューニングを行います。
  詳細は、以前の投稿を参照ください。
  「ThinAppで仮想化したアプリのIME問題について(重要)」

  プロジェクトフォルダの%AppData%の##Attributes.iniファイルのDirectoryIsolationModeを
  Mergedへ変更します。


#12.ThinPrint関連でSandboxが肥大化する問題に対する、チューニングを行います。(重要)
  ThinPrintを利用する場合に、Sandboxに%systemsystem%\FxsTmpフォルダが
  作成されてしまいます。
  環境によっては、100MBを超えるサイズに膨れ上がるので、
  物理側にこのフォルダ、ファイルを作成するようにMergedモードに設定変更します。


  プロジェクトフォルダの%systemsyste%にFxsTmpフォルダを作成します。
  ##Attributes.iniファイルを新規に作成し、DirectoryIsolationModeをMergedとして設定します。

#13.Package.iniをチューニングします。
 Package.iniのパラメータは、以前に投稿したこちらを参照ください。

 「ThinApp 4.7 Package.ini パラメーター」


 設定項目は、以下になります。
 ・Disk優先モードで圧縮します。
 ・不要なファイルをパッケージに含めないようにします。
 ・IME2007、2010関連の問題を対策します。
 ・デバッグ用のvCMD.exeとvRegedit.exeをエントリーポイント化します。

Package.iniはこんな感じにします。


[Compression]
;圧縮を有効
CompressionType=Fast

[Isolation]
DirectoryIsolationMode=Merged

[FileList]
;不要なファイルをパッケージに含めないようにします。
ExcludePattern=*.msi,:*.msp,*.log,*.inf,*.cat

[BuildOptions]
;Disk優先圧縮を有効にする。
OptimizeFor=Disk

;IME対策
ExternalCOMObjects={FCE4078B-72B5-4122-95E4-45B5E2E88031};{F57CA90F-D309-4056-9616-6670A27BE8A1}
ChildProcessEnvironmentExceptions=svchost.exe;DLLHost.exe;msiexec.exe;explorer.exe;ImeBroker.exe

;デバッグ用のvCMD.exeとvRegedit.exeをエントリーポイント化します。
[vCmd.exe]
Source=%SystemSystem%\cmd.exe
Shortcut=VMware Horizon View Client 2.2.exe
Disabled=0

[vRegedit.exe]
Source=%SystemRoot%\regedit.exe
Shortcut=VMware Horizon View Client 2.2.exe
Disabled=0

#14.Build.batを実行します。


#15.出来上がり。binフォルダに仮想アプリ化されたView Client 2.2が出力されます。
サイズは、約20MB程度です。



動作確認:
 Windows7 SP1 x86環境で動作させた結果
ちゃんと動きました。もちろんインストールされていません。



※Windows ファイアウォールの警告が表示されますが、アクセスを許可すればOKです。

 Windows8 x86環境で動作させた結果






WindowsXP SP3 x86環境で動作させた結果


 エラーが表示されました。
 
「MSVCR90.dll が見つからなかったため、このアプリケーションを開始できませんでした。アプリケーションをインストールし直すとこの問題は解決される場合があります。 」


MSVCR90.dllは、Microsoft Visual C++ 2008 SP1 再頒布可能パッケージ (x86)に含まれるランタイムです。
(VC2008ランタイム)

VisualC++2008で開発されたソフトを動作させるために必要です。
ViewClient2.2は、VC2008で開発されているんですね。

キャプチャ環境を今回は、Windows7で行ったので、こんな結果になります。
Windows7は、VC2008ランタイムがある程度存在しているので、キャプチャしても
仮想アプリには、含まれません。
Windows8も同様にOS自体にVC2008ランタイムの大部分がインストールされています。

Windows XPの場合は、このVC2008ランタイムは存在しないので、別途インストールするか
WindowsXP環境でキャプチャすれば、VC2008ランタイムも仮想アプリケーションパッケージに
含まれるようになります。

必要なバージョンは、MSVCR90.dll 9.0.30729.4148限定です。
古いバージョンだと動作しません。

「Microsoft Visual C++ 2008 Service Pack 1 再頒布可能パッケージ ATL のセキュリティ更新プログラム」インストールした後に、Windows Updateすると動作します。
http://www.microsoft.com/ja-jp/download/confirmation.aspx?id=11895


VC2008 SP1ランタイムそのままでは、動作しません。
理由は、MSVCR90.dllのバージョンが9.0.30729.1のためです。
このライブラリには、脆弱性に関する問題があったようで、更新モジュールは、
Windows Update経由で適用する必要があります。
(もしかしたら、ダウンロードできるかも知れないですが、見つけられませんでした。。。)

2013-11-21追加:確認したところ、上記リンクでDLできるVC2008のランタイムで動作しました。ごめんなさい。

※「Microsoft Visual C++ 2008 Redistributable - x86 9.0.30729.4148」が必要。

詳細は、wsnm.exeのApplicationManifestの中で以下のように利用するMSCVR90.dllを指定しているためですが、厳格な方法なのでお作法に則った正しい記述です。

<assemblyIdentity type="win32" name="Microsoft.VC90.CRT" version="9.0.30729.4148" processorArchitecture="x86" publicKeyToken="1fc8b3b9a1e18e3b"></assemblyIdentity>


と、色々書きましたが、Windows XPで利用する場合は、WindowsXP環境でViewClientを
キャプチャしたほうが手っ取り早いと思います。

簡単にWindowsXPで動作すると思ったのですが、意外とめんどくさかったです。。。
「利用するOSと同じOSでキャプチャする。」という鉄則を守らなかった私が悪いんですけどね。








参考情報:
「貸そうか?」さんのBlogに、View Client 2.2の詳細な情報があるので
一読すると幸せになれると思います。
VMware Horizon View Client for Windows バージョンアップ
http://vm-fun.blogspot.jp/2013/11/vmware-horizon-view-client-for-windows.html