2013年9月27日金曜日

vSphere Client 5.5 仮想化 レシピ

vSphere Client 5.5 仮想化 レシピ

リリースされたばかりの、vSphere 5.5を管理するために必要な
vSphere Client 5.5(インストール版)をThinAppで仮想アプリ化する
手順について、今回は記載したいと思います。

※インストール版のvSphere Client 5.5は、機能的に制限があるので
 全ての機能を利用場合は、Webクライアント版の利用をお勧めします。

パッケージング環境:
 Windows 7 SP1 x86
.net framework 3.5 SP1がインスールされていること。
   (OS標準でインストールされています。)
ThinApp ver4.7.3
  vSphere Client (VMware-viclient-all-5.5.0-1281650.exe)

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

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

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


動作確認環境:
 Windows 7 SP1 x86
   .net framework 3.5 SP1がインストールされていること。
   (OS標準でインストールされています。)
 Windows XP SP3 x86
   .net framework 3.5 SP1がインスールされていること。
   別途事前にインストールしておきます。

仮想化手順:

#1.キャプチャ用のクリーンなWindows 7にvSphere Client 5.5のインストーラを
デスクトップ等に、事前にコピーしておきます。
  VMware-viclient-all-5.5.0-1281650.exe

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



#3.Prescanを行います。

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


#5.VMware-viclient-all-5.5.0-1281650.exeを実行します。日本語を選択してOKを押します。






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


#7.このまま状態で本来であれば、キャプチャ作業は、完了ですが、
vSphere Clientは、多くの言語に対応しているので、充実したHELPコンテンツがあります。
そのファイル郡が大量にあるので、キャプチャが中々完了しません。小一時間かかります。
そのため、日本語と英語を残して、それ以外の言語については、削除してしまいます。

HELPファイルだけで、なんとファイル数 15,449個、フォルダ数294個
サイズは、112MBです。
これらの作成にかかったと思われる方々の労力を考えると、申し訳ないのですが。。。

エクスプローラを起動し、HELPフォルダから「C:\Program Files\VMware\Infrastructure\Virtual Infrastructure Client\Help」
英語と日本語を残し、それ以外の言語については、削除します。


追加で、英語と日本語以外の言語リソースファイル群を削除してしまいます。
この辺りは、好みでお願いします。

#8.最小化しておいた、Setup Captureを元のサイズに戻し、Postscanを押します。

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

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

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

※PCのスペックによりますが、15分程度かかります。
HELP等で全ての言語をそのままにすると、ここで小一時間程かかると思います。

※警告が表示されますが、気にせずこのまま、Nextをクリックします。
USBリダイレクト用のデバイスドライバのインストールが行われているので
ThinAppではUSBリダイレクト機能が利用できない(サポートされていない)ため
警告が表示されます。それ以外の機能は、問題なく利用できるので無視して構いません。

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



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

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

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

#12.USBリダイレクトに関するファイルを削除してしまいます。(この手順は必須ではありません。)




#13.USBリダイレクトに関するWindows Serivceの実行を停止してしまいます。(この手順は必須ではありません。)

HKEY_LOCAL_MACHINE.txtを編集します。
isolation_full HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\hcmon
Value=Startの値を2(自動)から4(無効)へ変更します。

isolation_full HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\VMUSBArbService
Value=Startの値を2(自動)から4(無効)へ変更します。

#14.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 vSphere Client 5.5.exe
Disabled=0

[vRegedit.exe]
Source=%SystemRoot%\regedit.exe
Shortcut=VMware vSphere Client 5.5.exe
Disabled=0

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


#16.出来上がり。binフォルダに仮想アプリ化されたvSphere Client 5.5が出力されます。



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


 Windows XP SP3のクリーンな環境で動作させた結果

 ※必ず、.net Framework 3.5 SP1をインストールしてから実行し下さい。





※.net3.5SP1をインストールしていない環境で動作させると以下のエラーが表示されます。

 「Unable to load DLL C:\Program Files\VMware\Infrastructure\Virtual Infrastructure Client\Launcher\VpxClient.exe->mscoree.dll
指定したモジュールが見つかりません。」

 mscoree.dllは、.netのランタイムです。
要約すると、.net3.5 SP1がインストールされていないので、モジュールが見つからない。
と言うエラーです。

番外編:
ちょっとしたこだわり。
仮想化したvSphere Clientを起動すると、ディスプレイの右下にLaunchingバーが表示されますが
そこの名称がVpxClientと表示されます。(実際のEXE名が表示されます。)

どうせなら、vSphere Client 5.5と表示したいですよね。
変更方法ですが、Package.iniの設定で名称の変更は、可能です。


StatusbarDisplayName=VMware vSphere Client 5.5

例)
[VMware vSphere Client 5.5.exe]
Source=%ProgramFilesDir%\VMware\Infrastructure\Virtual Infrastructure Client\Launcher\VpxClient.exe
WorkingDirectory=%ProgramFilesDir%\VMware\Infrastructure\Virtual Infrastructure Client\Launcher\
Icon=%SystemRoot%\Installer\{4CFB0494-2E96-4631-8364-538E2AA91324}\arpIcon.exe
Shortcuts=%Desktop%;%Programs%\VMware
ReadOnlyData=Package.ro.tvr
StatusbarDisplayName=VMware vSphere Client 5.5

英語版のUIを用意してみる。

仮想化でプリセールスしてるSEの一日 さんのネタなのですが、
「VMware vSphere Client を一時的に英語表示に切り替える」

ショートカットでパラメータを付加することも可能なのですが、
せっかくの仮想アプリなので、英語用のエントリーポイントEXEを作成してみます。
-locale en_US
例)
[VMware vSphere Client 5.5 en_US.exe]
Source=%ProgramFilesDir%\VMware\Infrastructure\Virtual Infrastructure Client\Launcher\VpxClient.exe
WorkingDirectory=%ProgramFilesDir%\VMware\Infrastructure\Virtual Infrastructure Client\Launcher\
Icon=%SystemRoot%\Installer\{4CFB0494-2E96-4631-8364-538E2AA91324}\arpIcon.exe
Shortcuts=%Desktop%;%Programs%\VMware
Shortcut=VMware vSphere Client 5.5.exe
StatusbarDisplayName=VMware vSphere Client 5.5  en_US
CommandLine="%ProgramFilesDir%\VMware\Infrastructure\Virtual Infrastructure Client\Launcher\VpxClient.exe" -locale en_US