Home > Blogs > VMware Japan End-User Computing Blog > Tag Archives: ThinApp

Tag Archives: ThinApp

ThinApp によるアプリケーション仮想化のキソ! : 新卒2年目SE社員が贈る 仮想デスクトップのキソ!

こんにちは。VMware SE の椨木です。
『新卒2年目 SE 社員が贈る 仮想デスクトップのキソ!』シリーズ、スピンオフ版の第1段は、VMware Horizon 6 (以下、Horizon 6)のどのエディションにもバンドルされている「アプリケーションの仮想化」を実現する製品、VMware ThinApp (以下、ThinApp)についてです。この記事を通して、

  • どういう時に「アプリケーションの仮想化」を行うと嬉しいの?
  • そもそも「アプリケーションの仮想化」ってなに?

という部分を一緒に理解していきましょう・・・!

§1. 「アプリケーションの仮想化」ってなに?

ThinApp が実現できる事としてよく使われる言葉が、「アプリケーションの仮想化」です。このブログのシリーズでは「デスクトップの仮想化」を主に取り扱ってきたわけですが、これは仮想基盤上でデスクトップを仮想化する事によって「物理端末やユーザとデスクトップ環境の紐づきの切り離し」を実現した製品であると言えます。

ThinApp はこの「仮想化」の概念をアプリケーションに取り入れ、アプリケーションを OS にインストールする際にインストールの前後の変化(差分)をキャプチャする事によって、「アプリケーションの実体ファイル」および「アプリケーションの起動時に必要となるファイル」、「アプリケーションの動作に必要となるレジストリ値」を把握し、ひとつの EXE ファイルにまとめることで「アプリケーションと OS の紐付きを切り離す」製品です。

 

Vurtual

図1: 様々な仮想化

 

これによって様々な利点が生まれるわけですが、ここでは

  • 古い OS で動いていたアプリケーションを新しい OS 上でも使えるようになる
  • アプリケーションの持ち運び・配信が簡単になる

という2つの「ThinApp が使われる理由」ともいうべき利点をご紹介します。

 

§2. 昔の OS で動作していたアプリケーションが使える!

ThinApp は、パッケージ化した EXE ファイルの中に、主に「「ファイルシステム操作」、レジストリ操作」、「プロセス生成」に関連する Windows API の呼び出しをエミュレートする軽量なアプリケーション実行環境(ThinApp VOS)を組み込みます。また、アプリケーションをインストールする際に、OS に配置する、EXE や DLL 等のファイルやレジストリ情報も、パッケージ化された EXE ファイルの中に収めます。そのため、パッケージ内のアプリケーションが、DLL やレジストリを呼び出すと、ThinApp VOS が、パッケージ内から動作に必要な情報を返すため、新しい Windows 環境でも、飛躍的に動作しやすくなっています。

これを利用すると、たとえば社内の Windows OS をアップデートした際でも、内製アプリケーションを改修する必要なく、新しい OS 上に移行して動作させる事が可能です。

 

ThinApp図2: ThinApp 化による「OS非依存アプリ」の作成

 

§3. アプリケーションの持ち運び・配信が簡単に!

§1 でも少しご紹介しました様に、ThinApp はアプリケーションのインストール時にキャプチャを行い、1つの EXE ファイルとしてパッケージ化する事ができる製品です。
これによって、普通はインストールが必要なアプリケーションも、EXE ファイルを持ち運ぶだけで使用できる、「インストール不要のアプリケーション」にする事ができます。
これを利用して、ThinApp は Horizon 6 と連携した仮想デスクトップへのアプリケーション配信を実現しています。

ファイルサーバなどに置いた ThinApp を Horizon Administrator 上で登録し、配信したいデスクトッププールを選択するだけで Horizon 6 で構築した仮想デスクトップへアプリケーションが配信されます。

 

admin

図3: Horizon 6 による ThinApp の管理

 

このアプリケーション配信によって、従来はアプリケーションのアップデートを行う際は、仮想デスクトップのマスターを変更して再適用する必要があるのに対して、ThinApp を用いる事でマスターの変更無しに新しいバージョンのアプリケーションが配信できるようになり、アプリケーション変更のハードルが劇的に下がります。またマスターイメージの削減にもつながります。

 

step

図4: ThinApp 化によるアプリ更新方法の変化

 

また、ThinApp は Active Directory と連携して使用可能なユーザーを指定できるので、全社員が同じデスクトッププールを使用しても、部署毎に使用可能なアプリケーションを制限する事も可能です。

 

pool

図5: ThinApp 化によるアプリケーション提供方法の変化 マスターイメージ削減になり管理がよりシンプルに

 

§4. アプリケーション仮想化の際の注意点

ここまで読んでいただいて、アプリケーション仮想化後の取り回しのしやすさから、
「もう何でも仮想化しちゃえばいいのでは?」
と思った方も居るかもしれません。

しかし、ThinApp で仮想化できるアプリケーションは、幾つかの要件を満たす必要があります。ここでは、アプリケーション仮想化時の注意点について確認しましょう。

  1.  「ユーザーモード」のアプリケーションであるか確認
    ThinApp で仮想化できるアプリケーションは「ユーザーモード」のアプリケーションのみです。「ユーザーモード」の他に、「カーネルモード」のアプリケーションもありますが、こちらは仮想化できません。
  2.  デバイスドライバを必要とするアプリケーションは仮想化できない
    プリンタのドライバや VPN クライアントソフト、アンチウィルスソフトウェアなど、デバイスドライバを使用するアプリケーションは ThinApp を使用して仮想化する事はできません。
  3.  Windows に関する設定は反映されないものもある
    Windows のアカウント情報・権限、ディスプレイの解像度やスクリーンセーバーの設定など、Windows に関する設定は反映されないものもあります。また、Windows OS のセキュリティパッチも仮想化する事はできません。

その他、一部の Windows API の使用ができない、シェル統合・シェル拡張に制限があるなど、細かい要件がありますので、アプリケーション仮想化の際はベストプラクティス(英語: http://kb.vmware.com/kb/1030290)をご一読いただく事をお勧めします。

 

§5.まとめ

今回は、ThinApp を用いた『アプリケーションの仮想化』についてのご紹介をしました。

「昔のアプリを長く使いたい」「仮想デスクトップのマスター更新を簡素化したい」と思っていたあなた、是非 ThinApp を使ってみてください!

執筆協力: vExpert 2015 山辺和篤

 

新卒2年目社員が贈る 仮想デスクトップのキソ!
第1回 仮想デスクトップと Horizon 6 ( with View)
第2回 仮想デスクトップの基本構成
第3回 プール作成と割り当て
第3.5回 View Composer の仕組み
第4回 接続方法と接続元端末
第5回 公開アプリケーションのキソ
第5.5回 ThinAppによるアプリケーション仮想化のキソ
第6回 スケールアウト対応
第7回 完結編、仮想デスクトップと関連ソリューション総まとめ
第 8.1 回 App Volumes を使ってみよう その1
第 8.2 回 App Volumes を使ってみよう その2

ThinApp をつかってみよう(準備編)

ヴイエムウェアにはアプリケーションの仮想化というソリューションでThinApp という製品があります。ThinApp はHorizon Suite の各製品(Horizon View ,Horizon Mirage ,Horizon Workspace )のすべてに含まれておりますが、単体での購入も可能です。ThinApp の製品概要やメリットにつきましては、こちらのリンク(わかるThinApp )の記事をご参照ください。ThinApp の良さを体感していただくためには、ご利用いただくのが一番の近道となります。
このブログエントリでは、ThinApp をつかってみるための準備について記載します。

◆ 準備するもの ◆
1.ThinApp の検証用ライセンスとバイナリ
下記サイトから申請していただくと入手可能となります。
2.比較的スペックのいいPC
(このブログエントリでは、VMware Workstation などを使用してゲストマシンとしてパッケージング環境を動作させます)
3.パッケージするアプリケーションとインストール手順
4.パッケージするアプリケーションが通常動作するOSのうち一番古いOS
(リカバリディスクではなく、OSのみのインストール媒体)

パッケージングしていただく環境は、ThinApp パッケージャライセンスに同梱のVMware Workstation をはじめVMware Player, VMware Fusion, ESXi, 物理PCのいずれかからご都合に合わせて選んでいただくことになります。スナップショット機能を利用するとより効率的に作業をすすめることができますので、VMware Workstation をご利用いただくことが一番多いです。
実際の作業手順に入る前に、ThinApp のアーキテクチャについて少し説明します。
アプリケーションの動作の違い
 通常のアプリケーションはOS にインストールされます。インストール時にOS のレジストリにアプリケーションが使用するキーを書き込んだり、OS のファイルシステムにdll (ダイナミックリンクライブラリ)を配置します。
インストールされたアプリケーションは、レジストリキーを読んだりファイルシステムに配置したdll やコンポーネントを使用してOS の一部を使用して動作します。このため、直接Win32 APIをコールします。アプリケーションのつくりによっては、ユーザーモードではなくカーネルモードでコールすることもあります。(図左)

これに対して仮想アプリケーションは、OS にインストールされません。パッケージ内の仮想レジストリや仮想ファイルシステム(パッケージの設定により、実ファイルシステムのファイルを読み書きさせることも可能です。)を使用して、ThinApp VOS上で動作します。(図右)
仮想アプリケーションは動作の際に、OSの一部を直接使用しません。すべてのWin32 API のコールはThinApp VOSを経てユーザーモードで実行されます。

◆ エントリポイント ◆
エントリポイントはパッケージされた仮想アプリケーションへの入り口です。パッケージされた仮想アプリケーションの中には、エントリポイント以外からアクセスすることはできません。

エントリポイント  エントリポイントは普段はかくしておいて、メンテナンス時だけ利用することも可能です。たとえば、cmd.exe, regedit.exe, iexplore.exe を準備しておき、トラブルシュート時に備えるといった使い方ができます。
エントリポイントは、複数定義することもできますし単一で定義することもできます。セットアップキャプチャー画面では、インストール前後の差分で発生した「エントリポイント候補」が表示されますので、その中から選択してエントリポイントを決めます。

◆ 分離モード ◆
分離モードはパッケージングされた仮想アプリケーションが動作する際のファイルシステムとのアクセスを定義します。WriteCopy、Merged、Fullの3種類ありそれぞれ下記の表のようにアクセスします。分離モードは基本的にはフォルダ単位で設定します。

WriteCopy Merged Full
実際のファイルの参照 参照可能 参照可能 参照不可能
仮想ファイルへの変更 SandBoxに反映 SandBoxに反映 SandBoxに反映
実際のファイルの変更 SandBoxに反映 実ファイルに反映 参照不可能
新規作成したファイル SandBoxに作成 実環境に作成 SandBoxに作成

分離モードの設定方法はプロジェクトフォルダにキャプチャーされたフォルダ構成に対して##Attributes.iniファイルを配置し、その中に下記のように記述して定義します。

[Isolation]
 DirectoryIsolationMode=Merged

なお、現在のセットアップキャプチャーのデフォルトはMergedです。

◆  準備手順  ◆
1.検証用PC にVMware Workstation をインストールします。
インストーラにしたがってインストールを実施します。

2.VMware Workstation でキャプチャー用ゲストマシンを作成して、OS をインストールします。
ThinApp ではインストールの前後の差分をキャプチャーしてパッケージを行います。このときにOS に余分なツールやアップデートファイル等が入ってしまうと、一緒にキャプチャーされてしまいます。ここで使用するOS にはツール類が入っていないものを使用します。

準備はここまでとなります。次回は実際にThinApp のパッケージを作成してみましょう。