You probably have heard that MSIX app attach went public preview a couple of weeks ago. Back in October 2019, when the technology was still into private preview, I published an article about the combination of MSIX app attach and WVD. This contains an extensive writeup about dealing with application landscapes in WVD and what MSIX app attach brings to the table. You can catch the article here: MSIX app attach will fundamentally change working with application landscapes on Windows Virtual Desktop! A couple of days ago a did a quick test drive with Windows 10 Build 2004 and MSIX app attach with Notepad++. I shared what that looks liked here.
During the technical preview you had to jump through many hoops to get it working, of course as expected during such an early technical preview phase. With the release build 2004 of Windows 10 functionality has been added to the OS that makes deploying MSIX app attach a lot easier with less prerequisites that need to be in place before you start. There actually is a great guide available on Microsoft Docs that takes you through all the steps, so I won’t repeat them here: Set up MSIX app attach.
My previous article also contained the steps to convert Notepad++ into an MSIX applications and transform it into a MSIX app attach application running on WVD. Notepad++ obviously is a very light weight applications with a small footprint. Since Windows 10 build 2004 is now publicly available, lets switch gears and start using a much larger application, in fact let’s pick one that also requires a GPU to be able to run!
Let’s go ahead and step up our game and publish Google SketchUp using MSIX app attach and run it on a GPU powered Virtual Desktop in Azure published by WVD!
The basic requirement is that we have Windows 10 Build 2004 to launch the MSIX app attach. Besides that it’s also common practice to have a dedicated (temporarily) machine that we used to transform the Google SketchUp MSI installation into an MSIX. On that machine you install the MSIX packaging tool. And we need a storage location (File Server in Azure of Azure Files) where we store the created MSIX app attach file.
So, the end result is an MSIX file, in my case I used version 2019 of SketchUp. Again, the steps to transform an MSI to MSIX can defer based on what application you are dealing with, but the guide mentioned above contains all of the steps. In addition I used a Personal Signed Certificate since this is a lab environment.
Up until now, we have not touched on anything app attach related, we have just transformed a traditional MSI installer into an MSIX, meaning this MSIX can also be used for other distribution mechanisms like e.g. Intune. So, now comes the specific app attach part.
The next step is to create a VHD disk. These steps are also outlined in the guide mentioned before, but below are the steps I used.
On this disk we create a Parent Folder, this is a mandatory step for MSIX. In my case I created folder “SketchUp2019-WVD-MSIX” in the root of the disk.
The end result, in case of my application, looks like below.
And finally, run the cmdlet mountvol and copy the GUID of the disk as we will need it later. After that, we can dismount the disk and place it on a file share accessible by the WVD host.
This concludes the steps of transforming an MSI application into MSIX and preparing it to be attached, in my case inside a WVD environment. Again, please follow this Microsoft Docs guide as it contains a detailed walkthrough of all the steps we touched on in this article.
So, this brings us to the Staging, De-staging, Registering and De-Registering part. These are 4 different steps and available as downloadable scripts. Before we move on however, lets briefly touch on some of the terminology. Below is a summary of what these steps mean.
As said, you can download the scripts here What you do is replace the variables with the values of your MSIX app attach package. As per example, here are the values I used.
If you have the 4 scripts in place you can start test driving! Note under production circumstances (when MSX app attach comes out of public preview), you would run the staging part during the machine boot (e.g. via a Computer GPO) and the attaching part during user login (e.g. via a User GPO setting). It is good practice though to test your 4 scripts prior to doing that! Since the steps are hard to capture in screenshots and to get a feeling of how the Staging and Registering works, I decided to capture those processes in a video. What the video below shows is: A WVD Published Desktop based on Windows 10 build 2004, accessed by WVD and powered by a NVidia M60 GPU (obviously because Sketchup does not run without GPU).
The starting point of the video is that no Google Sketchup is installed, for the sake of the demo I have combined both the Staging and the Registering step. After the scripts are run, which only take a couple of seconds, Google Sketchup is available and ready for the end user! Other users who might also be logged on to the same VM do not see the application. Google Sketchup leverages the NVidia M60 GPU and runs very smooth. And finally we run (again for demo purposes) the combined de-registering and de-staging part and after that the application is gone again. The sample SketchUp file used in the video is a free sample downloaded from Joanna James.
Watch the video to see the magic!
Final notes; yes we’re still running PowerShell CmdLets to Stage and Attach MSIX app attach applications. In future it is Microsoft’s plan to further integrate MSIX app attach into the WVD Service. The diagram below shows the MSIX app attach proposed milestones. Also, I recently presented a session with Micha Wets at the Microsoft meets Community: Windows Virtual Desktop event. Our demo also included DevOps CI/CD pipelines in combination with MSIX app attach to further automate Staging and registering. You can check out the recording of that session here. And finally a shout out to Stefan Georgiev who has provided great information of MSIX app attach in various webinars and articles!