アプリレイヤーの作成またはクローン
アプリレイヤーは、1つ以上のアプリケーションを含む仮想ディスクです。通常、アプリレイヤーには1つのアプリケーションが含まれます。レイヤーに複数のアプリケーションを含める場合は、通常同時に更新する項目に限定してください。
アプリレイヤーの新規作成
このセクションでは、アプリレイヤーの作成について説明します。内容は次のとおりです。
- 要件と考慮事項
- 新しいアプリレイヤーの開始
- パッケージングマシンの展開
- アプリケーションのインストール
- 表示される可能性のあるレイヤー整合性メッセージ
- レイヤーの検証とマシンのシャットダウン
- 必要に応じたMicrosoft
Ngen.exe操作の迅速化 - レイヤーの最終処理
要件と考慮事項
アプリレイヤーには、1つ以上のアプリケーションと関連設定が含まれます。MS Officeは常にアプリレイヤーにインストールし、OSレイヤーにはインストールしないでください。
- ウイルス対策アプリケーション: ウイルス対策アプリケーションは、こちらに記載されている手順を使用して、常にアプリレイヤーに配置してください。ウイルス定義ファイルの更新は戦略的に行ってください。また、SymantecのVirtual Image Exception Toolなど、ファイルマーキング機能にも注意してください。ホストベースのスキャンエンジンを検討し、ユーザーログオン時の遅延に留意してください。レイヤーではなく、公開されたレイヤーイメージをスキャンするようにしてください。スキャンは、Citrix Virtual AppsおよびCitrix Virtual Desktopsでのユーザーアクセス時にのみ実行されます。
- MS Office: Officeをインストールするには、このレシピを使用してください。Office 2010以降のVDI展開では、KMSを必須と見なしてください。Office 2007以前では、ボリュームライセンスを必須と見なしてください。他のライセンス構造を使用すると、各ライセンスを各デスクトップでアクティブ化する必要があるため、あまり便利ではありません。ユーザー設定とデータを永続化するには、Office 365ユーザーレイヤーの.OSTおよびストリーミングファイルを有効にします。検索インデックスは保存されません。
- 特定のアプリケーションをレイヤー化するためのレシピ: ほぼすべてのアプリケーションをレイヤー化できますが、App Layering Recipesフォーラムにまとめたヒントから始めると、レイヤー化が容易になるものもあります。開始する前に、レイヤー化する特定のアプリケーションに関するヒントと手順についてフォーラムを参照してください。
- ローカルユーザーまたは管理者を追加する必要があるアプリケーション。 アプリレイヤーにアプリケーションをインストールする際に追加または変更したローカルユーザーまたは管理者は永続化されません。OSレイヤーは追加したローカルユーザーまたはグループを保持しますが、アプリレイヤーは保持しません。アプリケーションをインストールする前にローカルユーザーまたは管理者をOSレイヤーに追加するか、OSレイヤーにアプリケーションをインストールすることを検討してください。
新しいアプリレイヤーの開始
アプリケーションをインストールできるパッケージングマシンを作成するには:
- 管理コンソールにログインし、[Layers]>[App Layers]の順に選択します。
- [Action]バーで[Create Layer]をクリックします。
- 必須値である[Layer Name]と[Version]を入力します。その他の値を入力することもできます。
- [OS Layer]タブで、このアプリレイヤーに関連付けるOSレイヤーを選択します。
- (オプション)[Prerequisite layers]タブでは、このレイヤーにアプリをインストールする際に存在する必要がある他のアプリレイヤーを指定するオプションがあります。これは、必要なアプリを同じレイヤーに含めることができない場合にのみ使用してください。この高度な機能の詳細については、以下のセクションの「Prerequisite layers」を参照してください。 注: 既存のアプリレイヤーに新しいバージョンを追加する場合、必要なPrerequisite layersを指定する必要があります。これらはバージョン間で引き継がれることはありません。
- [Connector]タブで、レイヤーを構築するプラットフォームの資格情報とストレージの場所を含むコネクタ構成を選択します。必要な構成がリストにない場合は、[New]をクリックして追加します。
- [Packaging Disk]タブで、パッケージングディスクのファイル名を入力し、ディスク形式を選択します。このディスクは、アプリケーションをインストールする仮想マシンであるパッケージングマシンに使用されます。
-
[Icon Assignment]タブで、レイヤーに割り当てるアイコンを選択します。このアイコンは、[Layers]モジュールでレイヤーを表します。
- 既存のイメージを使用するには、イメージダイアログボックスでイメージを選択します。
- 新しいイメージをインポートするには、[Browse]をクリックし、PNGまたはJPG形式のイメージを選択します。
- Offload Compositingが選択されているコネクタを使用しており、App Layeringに付属のアイコンのいずれかを選択した場合、レイヤーが最終処理されるときに、パッケージングマシンはレイヤーの内容に基づいてアイコンを割り当てようとします。
- [Confirm and Complete]タブで、アプリレイヤーの詳細を確認し、[Create Layer]をクリックします。レイヤーを作成する前に、オプションのコメントを入力できます。コメントは、[Information view Audit History]に表示されます。パッケージングディスクの作成後、[Tasks]バーに、パッケージングマシンを展開できるハイパーバイザー内のパッケージングディスクへのリンクが表示されます。
- [Tasks]ページを選択し、[Packaging Disk]タスクをクリックします。情報アイコンをクリックして、このレイヤーのパッケージングマシンが公開されている場所へのリンクを含む完全なタスクの説明を表示します。
次に、レイヤーのパッケージングマシンを展開できます。
パッケージングマシンの展開
ハイパーバイザーを選択します。
- XenServer®、Hyper-V、Nutanix、またはvSphere
- Azure
- その他のハイパーバイザー(ネットワークファイル共有)
- Google Cloud Platform(GCP)
XenServer、Hyper-V、Nutanix、vSphere
- ハイパーバイザークライアント(XenServer、Hyper-V Manager、Nutanix Prism、またはvSphere)にログインします。
- App Layering管理コンソールにログインし、[Tasks]ページを選択して現在のタスクを確認します。
- [Create App layer]タスクを選択し、情報アイコンをクリックして完全なタスクの説明を表示します。
- タスクの説明に記載されているURLを使用して、ハイパーバイザークライアント内のパッケージングマシンに移動します。
- パッケージングマシンが起動します。
これで、このレイヤーのアプリケーションをパッケージングマシンにインストールできます。
Azure
アプライアンスはAzureのカスタム展開テンプレートを開き、そこでパッケージングマシンを作成できます。
- Azureポータル(https://portal.azure.com)にログインします。注: 次のステップを試す前に、必ずログインする必要があります。
- App Layering管理コンソールに移動し、[Tasks]ページを選択します。[Create App layer]タスクを選択し、情報アイコンをクリックして詳細を表示します。
- タスクの詳細にあるリンクを使用して、Azureのパッケージングマシンに移動します。[Custom deployment]パネルが開きます。
- Azureパラメーターを設定します。
- パッケージングマシン名 - Azure仮想マシン名の要件に準拠している必要があります。
- サイズ – 仮想マシンのサイズ。
- 仮想ネットワークとサブネット - パッケージングマシンを展開するため。 重要:[Resource group location]の値が、コネクタ構成で構成した[Storage account location]と一致していることを確認してください。これらの場所が同じでない場合、パッケージングマシンは展開に失敗します。展開が失敗した場合は、リンクをブラウザーに再度貼り付けてやり直すことができます。
- パッケージングマシンが起動したら、レイヤーに含めるアプリケーションをインストールできます。
その他のハイパーバイザー(アプライアンスのネットワークファイル共有経由)
-
ネットワークファイル共有上の次のディレクトリでパッケージングディスクを見つけます。 \Unidesk\Packaging Disks
-
パッケージングディスクをハイパーバイザー上の別の場所にコピーします。これにより、ディスクを使用して新しい仮想マシンを作成する際に、ハイパーバイザーによって生成されるファイルのスペースが確保されます。
重要: ディスクが最終処理の準備が整うまで、Finalizeフォルダーにコピーしないでください。Finalizeフォルダー内のディスクは、次に作成する新しい仮想マシンにアタッチできません。
-
パッケージングディスクをブートディスクとして使用して仮想マシンを作成します。
-
パッケージングマシンを起動します。
パッケージングマシンが起動したら、レイヤーに含めるアプリケーションをインストールできます。
アプリケーションのインストール
パッケージングマシンにアプリケーションをインストールする際は、ユーザーがログインしたときに表示される状態のままにしてください。アプリケーションの状態は、ユーザーがアプリにアクセスするたびに体験するものです。
- オペレーティングシステムを作成するために使用したユーザーアカウントで、パッケージングマシンにリモートでログインします。
- アプリケーション、およびアプリに必要なドライバー、ブートレベルのアプリケーション、またはファイルをインストールします。
- システムの再起動が必要な場合は、手動で再起動します。パッケージングマシンは自動的に再起動しません。インストールするアプリケーションがブートレベルのコンポーネントに影響を与える場合は、レイヤーの最終処理の一部としてパッケージングマシンを再起動してください。
- パッケージングマシンがユーザーにとって望ましい状態になっていることを確認します。
- アプリケーションにインストール後のセットアップや登録が必要な場合は、今すぐそれらの手順を完了します。
- パッケージングマシンに含めたくない設定、構成、ファイル、マップされたドライブ、またはアプリケーションを削除します。
レイヤーの検証とマシンのシャットダウン
アプリケーションがパッケージングマシンにインストールされたら、レイヤーが最終処理の準備ができていることを確認します。レイヤーは、すべてのインストール後処理が完了したときに最終処理の準備が整います。
すべての未処理のプロセスが完了していることを確認するには、パッケージングマシンのデスクトップで[Shutdown For Finalize]ツールを実行します。
Shutdown For Finalizeツールを使用するには:
- パッケージングマシンにログインしていない場合は、マシンを作成したユーザーとしてリモートログインします。
- [Shutdown For Finalize]アイコンをダブルクリックします。コマンドラインウィンドウに、レイヤー検証プロセスの詳細を示すメッセージが表示されます。
- レイヤーを最終処理する前に完了する必要がある未処理の操作がある場合は、プロセスを完了するように求められます。
Microsoft Ngen.exe操作を完了する必要がある場合は、この記事の後半で詳しく説明するように、Ngen.exe操作を迅速化できる場合があります。 - 保留中の操作がすべて完了したら、[Shutdown For Finalize]アイコンをもう一度ダブルクリックします。これにより、パッケージングマシンがシャットダウンされ、レイヤーが最終処理の準備が整います。
最終処理中に表示される可能性のあるレイヤー整合性メッセージ
レイヤーが最終処理の準備が整う前に完了する必要があるキューに入れられた操作を、次のレイヤー整合性メッセージが示します。
- RunOnceスクリプトが未処理です - パッケージングマシンを確認して再起動してください。
- インストール後の再起動が保留中です - パッケージングマシンを確認して再起動してください。
- Microsoft Ngen.exe操作がバックグラウンドで進行中です。
- MSIインストール操作が進行中です - パッケージングマシンを確認してください。
- ブートディスク上のドライバーを更新するための再起動が保留中です - パッケージングマシンを確認して再起動してください。
- Microsoft Ngen.exe操作が必要です。
- Software Center Clientが実行するように構成されていますが、SMSCFG.INIがまだ存在します。レイヤーでのSCCMの展開の詳細については、記事「App Layering Recipe: How to deploy Microsoft SCCM in a layer」を参照してください。
レイヤー整合性メッセージの意味とデバッグ方法の詳細については、「Debugging Layer Integrity Problems in Citrix App Layering」を参照してください。
マシンをシャットダウンしてもレイヤー整合性メッセージをバイパスすることはできません。App Layeringソフトウェアは、すべてのプロセスが完了するまで停止し、パッケージングマシンに戻るためです。
Microsoft Ngen.exe操作が進行中の場合は、次のセクションで説明するように、それを迅速化できる場合があります。
必要に応じたMicrosoft Ngen.exe 操作の迅速化
すべてのソフトウェアアップデートがインストールされたら、Ngen.exeが実質的に.NETバイトコードをネイティブイメージに再コンパイルし、それらを管理するためのレジストリエントリを構築できるようにする必要があります。
Ngen.exeはMicrosoft Native Image Generatorであり、.NETシステムの一部です。Windowsは、インストールされているソフトウェアと、構成でWindowsが検出するものに基づいて、Ngen.exeを実行するタイミングを決定します。
重要:
Ngen.exeが実行されている間は、完了させる必要があります。中断されたNgen.exe操作は、機能しない.NETアセンブリや.NETシステム内のその他の問題を引き起こす可能性があります。
通常、Ngen.exeはフォアグラウンドアクティビティがあるときに一時停止するバックグラウンド操作です。Ngen.exe操作を迅速化したい場合は、タスクをフォアグラウンドに移動して、できるだけ早く完了させることができます。
タスクをフォアグラウンドに移動するには:
- 管理者としてコマンドプロンプトを開きます。
-
現在使用中のバージョンの
Microsoft.NET\Frameworkディレクトリに移動します。cd C:\Windows\Microsoft.NET\FrameworkNN\vX.X.XXXXX <!--NeedCopy--> -
キューに入れられたすべての項目を実行するために、次の
Ngen.exeコマンドを入力します。このコマンドは、アセンブリを構築する前にキューに入れられたコンポーネントのインストールを処理します。ngen eqi 3 <!--NeedCopy-->Ngen.exeタスクはコマンドプロンプトでフォアグラウンドに移動し、コンパイルされているアセンブリを一覧表示します。コンパイルメッセージが表示されても問題ありません。タスクマネージャーを使用して、
MSCORSVW.EXEのインスタンスが実行されているかどうかを確認できます。実行されている場合は、完了させるか、ngen eqi 3を実行してください。注意:
タスクを停止するために再起動しないでください。タスクが完了するまで待ってください!
- すべての
Ngen.exeプロセスが完了したことを確認します。 - 完了したら、デスクトップにある[Shutdown For Finalize]ショートカットを使用して仮想マシンをシャットダウンします。
レイヤーの最終処理
ソフトウェアがインストールされ、パッケージングマシンが検証されてシャットダウンされたら、レイヤーを最終処理する準備が整います。
Hyper-V:
コネクタ構成で[Offload Compositing]が選択されている場合、最終処理はコンポジティングプロセスの一部として自動的に行われます。
XenServer、Azure、Hyper-V、Nutanix AHV、VMware vSphere
レイヤーが検証されシャットダウンされたので、最終処理の準備が整いました。
Hyper-V:
[Offload Compositing]が選択されているコネクタを使用している場合、この最終処理プロセスは自動化されており、これらの手動手順を実行する必要はありません。
- 管理コンソールに戻ります。
- [Layers]>[App layers]、および準備したレイヤーを選択します。
- [Version Information]タブでレイヤーバージョンを選択し、[Action]バーで[Finalize]をクリックします。
- [Finalize]をクリックして、レイヤーの作成を完了します。
- タスクバーを監視して、アクションが正常に完了したことを確認します。
レイヤーが検証されると、使用されるストレージスペースを最小限に抑えるために、パッケージングマシンは削除されます。
その他のハイパーバイザー(ネットワークファイル共有)
レイヤーが検証されシャットダウンされたので、最終処理の準備が整いました。
-
パッケージングマシンファイルを含むフォルダーから、ネットワークファイル共有上のFinalizeフォルダーにパッケージングディスクをコピーします。 \Unidesk\Finalize
-
管理コンソールに戻ります。
-
[Layers]>[App Layers]を選択します。
-
[Version Information]タブでレイヤーバージョンを選択し、[Action]バーで[Finalize]をクリックします。
-
タスクバーを監視して、アクションが正常に完了し、レイヤーが展開可能であることを確認します。
アプリレイヤーのクローン
既存のレイヤーと同じアプリレイヤーは、レイヤーの特定のバージョンをクローンすることで作成できます。クローン作成プロセス中に、レイヤーに固有の情報が求められます。バージョンを追加することで、アプリレイヤーを更新できます。レイヤーの1つのバージョンのみがクローンされるため、クローン元のレイヤーに多くのバージョンがあったとしても、新しいレイヤーは開始時に1つのバージョンしか持ちません。
レイヤーをクローンするには:
- コピーするアプリレイヤーを選択し、[Action]バーで[Clone Layer]をクリックします。
- クローンするソースレイヤーバージョンを選択します。ドロップダウンメニューから目的のバージョンを選択できます。
- レイヤーの名前と、追加情報が役立つ場合は説明を入力します。説明はオプションです。
- バージョンと、追加情報が役立つ場合はバージョンの説明を入力します。
- [Icon Assignment]タブで、新しいレイヤーのアイコンを選択します。
- [Confirm and Clone]タブで、設定を確認し、[Clone Layer]ボタンをクリックします。
新しいレイヤーは、アイコンを除いてソースと同じレイヤープロパティで作成されます。新しいアプリレイヤーはすべて、最後に作成されたアプリレイヤーよりも優先度が高いため、レイヤーの優先度はソースレイヤーよりも高くなります。新しいレイヤーサイズは元のサイズよりも小さい場合がありますが、これはクローン作成中に空きスペースが削除されたことを示しているだけです。レイヤーはソースと同じように機能します。
新しいレイヤーは他のレイヤーと同様に使用でき、元のレイヤーとは一切関連付けられていません。
高度なアプリレイヤーオプション
アプリレイヤーを作成および更新する際は、次の高度な機能に留意してください。
- カスタムレイヤースクリプト
- レイヤーキャッシュ
- 前提条件レイヤー
カスタムレイヤースクリプト
システム起動時に一度実行されるスクリプトをアプリレイヤーに含めることができます。スクリプトを構成するには、アプリケーションレイヤーのプロパティを編集します。
注:
レイヤーリビジョンのプロパティは、リビジョンが作成されている間、または最終処理された後でも編集できます。
スクリプトは、アプリレイヤーを含むレイヤーイメージが最初に起動したときに実行されます。アプリレイヤーがエラスティックにレイヤー化されている場合、カスタムレイヤースクリプトはアプリレイヤーディスクのマウント時に実行されます。カスタムレイヤースクリプトは通常、MS Officeなど、初回起動時にライセンスアクティベーションが必要なアプリに使用されます。

アプリレイヤー作成を高速化するためのレイヤーキャッシュ
レイヤーキャッシュを使用して、レイヤー作成時間を短縮できます。
キャッシュの仕組み
アプリレイヤーを初めて作成するときに、キャッシュサイズが十分に大きな値に設定されている場合、ブートディスクと空のパッケージングディスクで構成されるテンプレートがキャッシュに保存されます。ブートディスクには、アプリレイヤー設定で指定されたOSレイヤー、プラットフォームレイヤー、および前提条件レイヤー(存在する場合)が含まれます。
同じOSレイヤー、前提条件レイヤー、およびプラットフォームレイヤーの組み合わせを使用するアプリレイヤーを作成するたびに、App Layeringソフトウェアはテンプレートを再利用し、作成時間を大幅に短縮します。
その後、異なるOSレイヤー、前提条件レイヤー、およびプラットフォームレイヤーの組み合わせを使用するアプリレイヤーを作成すると、App Layeringソフトウェアはテンプレートを作成し、それをキャッシュに追加します。
推奨されるキャッシュサイズ
推奨されるキャッシュサイズは、アプリレイヤーに必要なOS、プラットフォーム、および前提条件レイヤーの組み合わせの数によって異なります。組み合わせの数によって、キャッシュに保存されるテンプレートの数が決まります。
各テンプレートに必要なスペースを見積もるには:
- 各OS、プラットフォーム、および前提条件レイヤーのiアイコンを選択し、[Maximum Layer Size]を調べます。
- 最大ディスクサイズを追加します。合計が、そのテンプレートに必要なキャッシュサイズです。
キャッシュに必要なスペースを見積もるには、各テンプレートについて決定したサイズを追加します。
前提条件レイヤー
ほとんど推奨されませんが、前提条件レイヤーを使用すると、レイヤーを作成したりバージョンを追加したりする際に、1つ以上の既存のアプリレイヤーをパッケージングディスクに含めることができます。
前提条件レイヤーは、現在のアプリケーションを展開するために必要とされないものをレイヤーに追加する可能性があるため、必要な場合にのみ使用してください。この動作は将来的に競合を引き起こす可能性があります。
前提条件レイヤーを使用するタイミング
前提条件レイヤーは、いくつかの理由で必要になる場合があります。
- 現在のレイヤーにアプリケーションをインストールする際に、別のアプリケーションの存在が必要な場合。たとえば、Javaを必要とするアプリケーションをインストールし、Javaが別のレイヤーにある場合などです。
- ソフトウェアのインストールによって既存のアプリケーションに設定が追加される場合。たとえば、Officeアドインをインストールする際に、まずMicrosoft Officeをインストールする必要がある場合などです。
- 2つのアプリケーションが同じレジストリキーを変更し、2番目のアプリケーションがキーに追加する必要があり、それを置き換えてはならない場合。たとえば、Citrix AgentやImprivataなど、Windowsのログインキーを両方とも変更する2つのアプリケーションなどです。
注
これらの問題の一部は、前提条件レイヤーを使用するのではなく、2つのアプリケーションを同じレイヤーに配置することでも処理できます。
前提条件レイヤーの特性
前提条件レイヤーには、次の特性があります。
- 前提条件レイヤーは、作成に使用されるアプリレイヤーには含まれません。
- 作成するアプリレイヤーと、その各前提条件レイヤーは、同じOSレイヤーを使用する必要があります。
- アプリレイヤーにバージョンを追加する場合、前提条件レイヤーはデフォルトでは含まれません。レイヤーにバージョンを追加するたびに、1つ以上の前提条件レイヤーを選択する必要があります。