ついにGAしたので、「MSIX App Attach」を試したいと思います!
MSIX App Attachとは、セッションホストに対して、アプリケーションを配信する機能を提供します。使い所としては、マスターイメージに対し、事前にアプリケーションをインストールしておく必要が無くなり、セッションホスト展開後に必要なアプリケーションを指定したホストプール単位で配信する事ができるようになります。
ユーザーがサインインしたタイミングで、許可されたアプリケーションがマウントされます。
※機能的にはFSLogixと似ていますが、関連はありません。
【MSIX App Attach を設定するための流れ】
①アプリケーションの準備
②MSIX Packaging Tool を使い、アプリケーションからMSIX Package化を行う。
③msixmgr tool を使い、MSIX PackageからMSIX Image化を行う。
④MSIX Imageをファイルサーバーに配置し、セッションホストに配信する。
※セッションホストにも証明書のインストールが必要
[MSIX Package内のファイル(一部)]
AppxManifest.xml:MSIXアプリの基本情報(DisplayName / Description / EntryPoint / Logo / Language / TargetDevice)。パッケージ化の際に入力した情報が含まれている。
AppxBlockMap.xml:アプリケーションが利用するファイルの一覧とパッケージに格納されている各データブロックのインデックスと暗号化ハッシュ値が含まれている。
AppxSignature.p7x:パッケージに署名するときに生成される。すべてのMSIXパッケージは、署名されている必要がある。
Registry.dat:[HKEY_LOCAL_MACHINE\SOFTWARE]以下を保持
【考慮事項】
・Windows 10 2004以降 Single/Multi-session 対応 ※Server OS は未対応
・パッケージ化には証明書が必須 ※自己署名証明書でもOK
・パッケージ化後のアップデートは未サポート
・アプリケーションディレクトリ内に書き込みを行うアプリは未サポート
・未サポート:ドライバー、VPNクライアント、Active-X、アンチウイルスソフト
・ストレージ要件:[サインイン:10 IOPS / 通常:1 IOPS][Latency 400 ms][64k Block]
・ストレージはセッションホストと同じリージョンにすること
・FSLogixとは、別のストレージにすること
・AVD以外でも利用可能だが、PowerShellを駆使する必要がある
・Entra Domain Service環境では利用不可
・ハイブリッドアカウントのみ利用可能
機能が強化された App Attach はこちら
「MSIXじゃない、新 App Attach を試す!」
全体の流れ
Step1:作業用VMの作成
Step2:自己署名証明書の作成
Step3:アプリケーションのMSIXパッケージ化 [.msix]
Step4:セッションホストへの証明書インストール
Step5:MSIXパッケージのMSIXイメージ化 [.vhdx][.cim]
Step6:ホストプールへの配信設定
Step1:作業用VMの作成
MSIXパッケージ作成環境
・Windows 10 1809 以降 ※配信するセッションホストと同じOSバージョンを推奨
・余計なアプリケーションやサービスが存在しないこと
・各種自動アップデートを停止していること
・インストール済みアプリケーションのパッケージ化は、事前にアンイストールを行うこと
・VHDXファイルを扱うため、Hyper-V(役割)が必要
各種自動アップデートを停止します。
reg add HKLM\Software\Policies\Microsoft\WindowsStore /v AutoDownload /t REG_DWORD /d 0 /f
Schtasks /Change /Tn “\Microsoft\Windows\WindowsUpdate\Scheduled Start” /Disable
reg add HKCU\Software\Microsoft\Windows\CurrentVersion\ContentDeliveryManager /v PreInstalledAppsEnabled /t REG_DWORD /d 0 /f
reg add HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\ContentDeliveryManager\Debug /v ContentDeliveryAllowedOverride /t REG_DWORD /d 0x2 /f
Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Hyper-V -All
※Hyper-Vの有効化。再起動あり
Step2:自己署名証明書の作成
※作業用VMで行います。赤字は適宜変更して下さい。
【自己署名証明書の作成】
New-SelfSignedCertificate -Type Custom -Subject “CN=MSIX App Attach” -KeyUsage DigitalSignature -NotAfter (Get-Date).AddYears(10) -CertStoreLocation “Cert:\CurrentUser\My” -TextExtension @(“2.5.29.37={text}1.3.6.1.5.5.7.3.3”, “2.5.29.19={text}”)
証明書が作成されている
【 証明書の出力 】
$password = ConvertTo-SecureString -String “password” -Force -AsPlainText
Export-PfxCertificate -cert “Cert:\CurrentUser\My\CA59698AFA~” -FilePath “C:\MSIX.pfx” -Password $password
※MSIXパッケージ インストール用
Export-Certificate -cert “Cert:\CurrentUser\My\CA59698AFA~” -FilePath “C:\MSIX.cer”
※セッションホスト インストール用
Step3:アプリケーションのMSIXパッケージ化
※作業用VMで行います。
Microsoft Store から[MSIX Packaging Tool]を検索し、インストールします。
MSIX Packaging Tool を起動し、[アプリケーションパッケージ]を選択
パッケージを作成するインストーラーを選択してください:[.msi][.exe]を指定
署名の基本設定:[証明書(.pfx)を使用して署名する]を選択
証明書を参照:※Step2で作成した[MSIX.pfx]を指定
パスワード:エクスポート時に設定したパスワード
パッケージ名:※ユーザーには表示されない
パッケージの表示名:※スタートメニューに表示される
発行元の表示名:※ユーザーに表示される
バージョン:素直にバージョンを入力
自動的にインストーラーが実行されるので、インストールします。
一度、実行し必要な設定(日本語化など)を行う。
インストール終了後、自動アップデートを無効に設定します。
※MSIXパッケージ化後のアップデートをサポートしていません。
再起動が必要なアプリケーションの場合は「再起動」を実施します。
エントリーポイント(実行ファイル)のパスが表示されます。
表示されない場合は、手動で[.exe]のパスを指定して下さい。
※インストール済みアプリをパッケージ化した場合は表示されない。
パッケージから除外したいアプリケーションを選択します。
※なにも表示されない場合はスルー
パッケージファイルの保存場所を指定します。
パッケージ化されたアプリケーションが確認できます。
Step4:セッションホストへの証明書インストール
※展開済みのセッションホストかマスターイメージにて実施
Step2で作成した[MSIX.cer]をセッションホストにインストールします。
[ローカルコンピューター]を選択
[証明書をすべて次のストアに配置する]ー[信頼されたユーザー]を選択
[完了]です。
証明書がインストールされている
Step5:MSIXパッケージのMSIXイメージ化
※作業用VMで行います。赤字は適宜変更して下さい。
msixmgr tool をダウンロード
解凍した[msixmgr.exe]と同じ階層にMSIXパッケージ化したアプリを配置
./msixmgr.exe -Unpack -packagePath “VSCode_1.55.2.0_x64__dscwm6pdg8ty6.msix” -destination “C:\VSCode\VSCode_1.55.2.0_x64.vhdx” -applyACLs -create -fileType vhdx -rootDirectory apps
※destination先はどこでも良い
作成した[VSCode_1.55.2.0_x64.vhdx]をファイルサーバーに配置します。
※ユーザーアカウントとコンピューターオブジェクトに対して読み取り権限が必要
※VHDXよりCimFSを推奨
./msixmgr.exe -Unpack -packagePath “VSCode_1.55.2.0_x64__dscwm6pdg8ty6.msix” -destination “C:\temp\VSCode.cim” -applyACLs -create -fileType cim -rootDirectory apps
※destination先はどこでも良い
※Win10で作成したCIMは、Win11のセッションホストでは利用できません。
作成したCimファイル群をファイルサーバーに配置します。
※ユーザーアカウントとコンピューターオブジェクトに対して読み取り権限が必要
Step6:ホストプールへの配信設定
[MSIXイメージパス]の設定を行う際に、下記のようなチェックが入ります。
・MSIXイメージ内に証明書が存在すること
・セッションホストから、ファイルサーバー内のMSIXイメージにアクセスできること
・稼働している全てのセッションホストに証明書がインストールされていること
※停止しているセッションホストは対象外
MSIXイメージパス:ファイルサーバーのパスを指定
MSIXパッケージ:※自動入力
パッケージアプリケーション:※自動入力
表示名:※自動入力
登録の種類:
ーオンデマンド:アプリが実行されたタイミングでマウント
ーログオンのブロック:セッションホスト接続時にマウント。サインイン時間に影響します。
状態:
ー非アクティブ:MSIXを利用不可状態にする
ーアクティブ:MSIXを利用可能状態にする
設定完了
【アプリケーショングループ設定】
MSIXイメージは、「デスクトップ配信」「リモートアップ配信」両方に対応しています。
・デスクトップ配信:OSにインストールされたような状態でデスクトップ画面が配信される。
・リモートアップ配信:通常のリモートアップ同様、アプリケーション画面が配信される。
[デスクトップ配信設定]
アプリケーションソース:※変更不可
MSIXパッケージ:※自動入力
アプリケーション名:※Azure Portalでの表示名
表示名:※ユーザーに表示される
[リモートアップ配信設定]
アプリケーションソース:※MSIXパッケージを選択
MSIXパッケージ:※自動入力
MSIXアプリケーション:※自動入力
アプリケーション名:※Azure Portalでの表示名
表示名:※ユーザーに表示される
それでは、接続してみましょう!
初回のMSIXパッケージをマウントするまでに時間が必要です。一度マウントすると、ユーザーサインアウト、セッションホストの再起動/停止を行ってもアンマウントされません。
AVD Client(ブラウザOK)での接続が必要。RDPでは利用できません。
このような感じで表示される。
※リモートアップ版は通常と同様の使い勝手です。
デスクトップにサインインすると、セッションホストにインストールしていないはずの
「Visual Studio Code」が確認できます。
Visual Studio CodeのMSIXイメージがマウントされている事が確認できます!
※複数のユーザーがサインインした場合でも、マウントするMSIXイメージは1つです。
セッションホストは、5分間隔でMSIX App Attachの更新確認を行っているため、MSIXイメージの[追加/削除]はこの間隔の影響を受けます。デフォルト5分間隔
[最短の1分間隔に変更する方法]
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\RDInfraAgent\MSIXAppAttach]
“PackageListCheckIntervalMinutes” = dword:00000001