• クラウドソリューション
  • 技術解説
  • 技術検証

Cloudpagingによる旧バージョンのChromeのアプリケーション仮想化実験(後編)【トゥモロー・ネット 技術ブログ】

本記事では、Cloudpagingを使って仮想化パッケージを作成し、旧バージョンのChromeを動作させる実験を2回に分けてご紹介しています。

前編では、クライアント端末にインストールされているChromeと、仮想化したChromeの並行実行ができるようにしました。
後編の今回は、Chromeからのアクセス制限を行うためのプロキシ設定の追加から、実際に仮想化したChromeの動作検証までをご紹介します。

仮想化したChromeがアクセスできるサイトを制限するため、プロキシ設定を追加

Captureアイコンをクリックし、Windows版のsquidを仮想化パッケージ内に組み込みます。

squid.msiファイルを指定し、「Launch」ボタンをクリックします。

squidのインストールを実施し、そのプロセスをトレースします。

インストールが終わったら、トレースを終了します。

トレースの内容が表示されますので、確認します。

追加されたファイルを確認します。

追加されたsquidのサービスを自動起動させるために仮想化アクションを変更します。

「Start it automatically」にチェックをいれて、OKボタンをクリックします。

squid.confファイルの更新とwhitelistファイルを作成し、仮想化パッケージ内に追加します。
「http_access allow localnet」と「http_access allow localhost」にはコメントアウトし、「acl whitelist dstdomain “/etc/squid/whitelist”
http_access allow whitelist」を追加します。

本記事では、「.tomorrow-net.co.jp」と「.yahoo.co.jp」のドメインのみアクセスできるようにwhitelistを作成し、C:\Squid\etc\squid 配下に配置します。

修正したsquid.confの切り替えとwhitelistファイルを仮想化パッケージ内に追加します。Squid.confで右クリック、Deleteを選択します。

確認メッセージで、OKボタンをクリックします。

削除後に、空いてスペース上で右クリック、Add Fileを選択します。

squid.confとwhitelistファイルを指定し、OKボタンをクリックします。

追加されたファイルを確認します。

いくつかのオプションを指定してChromeを起動するランチャーを開発し、仮想化パッケージに追加

今回のランチャーの作成には、AutoIT というコンパイラを使用します。
(慣れたコンパイラがあれば、それを使って必要な機能を実装してください。)
・chromeを起動する箇所をソースから抜粋:


If $runFlg = 1 Then

;指定したパラメータでChromeを起動(アクセス先を指定)
$strEdgeRun='"C:\Program Files\Google\Chrome_CP\Application\chrome.exe"  "' & $CmdLine[1] & '" --user-data-dir="' & $strLocalAppData & '\Google\Chrome\Chrome_CP" --proxy-server="127.0.0.1:3128"'
$chromeProcess = Run($strEdgeRun)

;Chromeの終了を待機
ProcessWaitClose($chromeProcess)
$iExitCode = @extended

Else

$strEdgeRun='"C:\Program Files\Google\Chrome_CP\Application\chrome.exe" --user-data-dir="' & $strLocalAppData & '\Google\Chrome\Chrome_CP" --proxy-server="127.0.0.1:3128"'
$chromeProcess = Run($strEdgeRun)

;Chromeの終了を待機
ProcessWaitClose($chromeProcess)
$iExitCode = @extended

EndIf

コンパイルとビルドを実行しexeファイルを作成します。

コンパイルとビルドされたexeファイルをchromeのインストールフォルダに配置し、仮想化パッケージに追加します。

空いているスペースで右クリック、Add Fileを選択します。

配置したLaunchChrome.exeファイルを指定し、OKボタンをクリックします。

追加されたファイルを確認します。

Chromeランチャーファイルを選択し仮想化アプリケーションが起動された際に実行されるコマンドとして設定

ProjectタブのCommand lineにChromeランチャーファイルが設定されているかを確認します。

ユーザーがChromeの設定を変更できないように、chrome://settingsへのアクセスを制限

レジストリに、以下のキーを追加します。
[HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Google\Chrome\URLBlocklist]
“1”=”chrome://settings”

空いているスペースで右クリック、Add Valueを選択します。

値を入力し、OKボタンをクリックします。

追加されたレジストリを確認します。

Chromeのユーザーディレクトリのデータを仮想化パッケージに追加します。

<LocalAppData>の配下に%localappdata%\Googleを追加します。

「Create from this existing folder」を選択し、C:\Users\Administrator\AppData\Local\Googleのフォルダを指定します。
フォルダ配下のサブフォルダとファイルをすべて追加するためにオプションで、「Recursively include folders」と「Include files within the folder(s)」を設定します。

追加されたファイルを確認します。

デスクトップ上のGoogle Chromeのショートカットなど、不要なファイルを削除

削除する対象はクライアント端末での実行要件やアプリケーションの仕様を考慮して決めます。

削除後には、Saveアイコンをクリックし保存します。

Cloudifyアイコンをクリックし仮想化パッケージファイルを作成

仮想化ファイル名:Chrome_Layer4
保存先:C:\Users\Administrator\Desktop\chrome_STP
を指定し、OKボタンをクリックします。

しばらくすると、Cloudifyが完了します。Closeボタンをクリックします。

場合によっては、以下のようなメッセージが表示されることがありますが、インストール時に使用された一時ファイルに関するもので、すでに削除されている可能性が高いです。その場合には、無視しても問題ありません。

保存先に .stpファイルと .stwファイル、キャップチャーを実施した時のログファイルが存在することを確認します。

これて、Chromeの仮想化パッケージ作成は完了となります。
Chromeの自動アップデート機能の停止や既存のChromeとの競合を防ぐために、ファイル名やフォルダパスを変更した箇所がありますが、Chromeの動作には影響はありません。

動作検証

作成した仮想化パッケージをCloudpaging serverに登録し、クライアント端末のCloudpaging Playerに配布します。
その後、Playerの画面でパッケージが正常に登録されていることを確認し、Chromeが正しく起動するかを確認します。

Cloudpaging serverに仮想化パッケージを登録

サーバーのリポジトリにSTPパッケージファイルを配置します。

Cloudpaging server管理者ポータルにadminアカウントでログインし、「deployments」>「Applications」を選択しManage Applications画面に移動します。

「Add Application」をクリックし、「Import from server repository」を選択します。

先ほどリポジトリに配置した、「Chrome_Layer4.stp」が検索されて表示されます。
右側にある「Add Application」ボタンをクリックします。

Edit Application画面が表示されます。必要な項目の設定があれば入力します。今回は表示されたデフォルト設定で登録します。画面下にある「Create a License Policy」をクリックします。

Create a License Policy画面で必要な項目に入力します。今回は表示されたデフォルト設定で登録します。画面下にある「Create」をクリックします。

正常に登録できたら、Manage License Policies画面でChrome_Layer4のLicense policyが表示されます。

画面上部の「Deployments」>「Applications」をクリックし、Manage Applications画面に移動したらChrome_Layer4というアプリケーションが登録されていることを確認できます。

Cloudpaging Enterprise portalでアプリケーションを利用するユーザーを指定し割当てを実施

Cloudpaging Enterprise portalにadminアカウントでログインします。登録されているユーザーリストが画面に表示されます。

ユーザーを選択したら、「Manage Subscriptions」ボタンが活性化されます。そのボタンをクリックします。

Manage Subscriptions画面が表示されます。「Add New Subscriptions」ボタンをクリックします。

有効なLicense Policyが表示されます。リストから「Chrome_Layer4」を選択し「Subscribe Selected License」ボタンをクリックします。

「Successfully added 1 subscriptions」とライセンス割当てが成功したメッセージが表示されます。

これで、クライアント端末でユーザーがアプリケーションをダウンロードし、利用可能な状態になりました。

Cloudpaging playerがインストールされているマシンでウェブブラウザからCloudpaging Enterprise portalにアクセスしActive Directoryを指定し、自分のアカウントでログイン

ログイン後にLaunch Applications画面で、割り当てられているアプリケーションリストが表示されます。アプリケーション名をクリックするか、右側の矢印をクリックしアプリケーションのダウンロードを開始します。

アプリケーションのtokファイルがダウンロードされます。「ファイルを開く」をクリックし、Cloudpaging playerにアプリケーションを登録させます。(tokファイルは発行してから5分間有効です。5分を過ぎたら再度ダウンロードが必要です。)

Cloudpaging playerにアプリケーションがインストールされます。

起動されたChromeの動作を確認

Cloudpaging playerにアプリケーションのインストールが完了すると、デフォルト設定時はアプリケーションが自動起動します。

まとめ

今回ご紹介したように、Cloudpaging を活用すれば、アプリケーションを Cloudpaging Studio で仮想化し、Cloudpaging Server に登録して配信した後、クライアント端末の Cloudpaging Player でシームレスに実行することが可能です。
仮想化の過程では、システム要件や運用環境に応じてファイルやレジストリを手動で追加したりできるほか、起動を簡便にするランチャー(EXE)を新たに作成して組み込んだり、運用上役立つ補助ツールを同梱するといった柔軟なカスタマイズも行えます。

また、仮想化の具体的な作業内容は、対象となるアプリケーションの仕様やユーザーの利用ニーズによって大きく変わります。場合によっては、アプリケーション内部の動作や依存関係を事前に詳細分析し、その結果をもとに最適な仮想化設計を行うことが重要となります。

なお、本記事では一部の手順や詳細設定を省略しています。省略されている箇所については、Numecent 社の公式ドキュメントおよび対象アプリケーションのドキュメントを参照いただき、ご確認ください。

Cloudpaging は単なる配信基盤にとどまらず、こうした柔軟なカスタマイズや分析により、運用効率とユーザー体験を両立できる強力なソリューションです。適切な設計と準備を行うことで、組織のアプリケーション配信環境を大きく進化させることができるでしょう。

お問合せ先

関連ページ

Cloudpagingによる旧バージョンのChromeのアプリケーション仮想化実験(前編)
P2Vとは?企業が知っておくべき仮想化移行の手順と最適なツール選び
アプリケーションのパッチを永久に排除するには

この記事を書いた人

株式会社トゥモロー・ネット

トゥモロー・ネットは「ITをもとに楽しい未来へつなごう」という経営理念のもと、感動や喜びのある、より良い社会へと導く企業を目指し、最先端のテクノロジーとサステナブルなインフラを提供しています。設立以来培ってきたハードウェア・ソフトウェア製造・販売、運用、保守などインフラに関わる豊富な実績と近年注力するAIサービスのコンサルティング、開発、運用、サポートにより、国内システムインテグレーション市場においてユニークなポジションを確立しています。
インフラからAIサービスまで包括的に提供することで、システム全体の柔軟性、ユーザビリティ、コストの最適化、パフォーマンス向上など、お客様の細かなニーズに沿った提案を行っています。

製品に関するお問い合わせはこちら