(MSIX) AppAttach with TMEditX

AppAttach is a technique that uses “application layering” methods to quickly mount and publish MSIX applications in non-persistent (pooled) VDI scenarios and shared operating systems like RDS and Multi-user Windows 10.

MSIX AppAttach is the Microsoft-branded feature for Azure Virtual Desktops that uses this technique to deploy applications to AVD sessions. Other vendors with application management features also use this technique, including Citrix, VMWare, and AppVentix.

TMEditX 3.7 includes new and improved support for AppAttach

  • The ability to convert MSIX packages to any of the three supported AppAttach package image formats, VHD, VHDX, and CIM. This may be done from the same tool that you are fixing up the MSIX package with.
  • The ability to locally test the completed AppAttach package image on that same machine also, without having to move the package into a separate distribution and management system.

You will find the new conversion capabilities on the new Convert sub-tab of the File tab, which is convenient to get to once you saved the updated MSIX package.

 

 

The AppAttach formats are image formats for your application package. In essence, these are used for remotely attaching to the image over a network, allowing the package to be used without necessarily copying the files over to the client machine/vm for installations.

The VHD and VHDX formats are existing standard formats used for many things, which means that there are existing tools that you can use for debugging. The CIM format is a new standard format developed by Microsoft specifically for app layering. This format is believed to be better performing than VHD or VHDX, although those claims appear to be more for the server sharing up a lot of these images.

In all three of the formats, the MSIX files are stored uncompressed in the image, unlike the original MSIX package where they are compressed. So, on average these images will take up 2.5 times the storage that the MSIX packages do.

The differences between the VHD and VHDX choices are unimportant to AppAttach. VHD already supports a 2TB size which should be much larger than any application image you are likely to ever create. Other differences in the format are clearly not going to affect AppAttach. The VHDX version of a package will be slightly larger than VHD, but not significantly so.

The CIM image format is, unlike VHD or VHDX, not a single file, but a folder with a handful of files that make up the image. Although you could put multiple of these in the same folder for expediency (each has a unique partial name), the best practice is to keep each CIM separate by storing the files in a folder with the CIM name. In the TMEditX conversion, when selecting the location for the CIM image, you will want to create the folder when picking the location to store the image.

Here is an example of the successful conversion:

And here is what the CIM image folder looks like:

For reference, the compressed MSIX package was 192MB, the VHD was 537MB, and VHDX was 561MB. So I suppose the CIM is a little smaller than VHD/X, but still obviously uncompressed.

So now in MSIXDeploy, we can go to the CIM or VHD/X tab to see the packages for test.

After locally deploying to this VM, you can test the package from the start menu. When you are done, select the Deployed CIMs button where you can see the volume (this is the mount point as we don’t use drive letters for the mounting of the volume) and De-deploy (uninstall) the CIM.

Latest Performance Numbers

The last time we looked at the performance of publishing apps into AppAttach was while it was still in preview. Here are some updated numbers performed on testing with Windows 11 23H2.

First, we compare scenarios of deploying 20 identical packages, using different technologies.  In this first chart, you can see the average seconds/package that it took to deploy.  So if an end-user is in a non-persistent OS scenario and has 10 packages to be published each time they log in before they can be productive, they’d be waiting 10 times the number shown.

The MSIX and MSIXPsf are versions of the App-V package that was converted to MSIX.  The former is the raw conversion, while the latter was updated using TMEditX, which involved adding the PSF to each of the packages, but also performing some decent cleanup.  The CIM/VHD/VHDX packages were conversions of the same MsixPsf package.

The following graph shows the individual packages used in the test.  To be more readable, the Msix and MsixPsf scenarios are excluded.  The scale is in recorded “ticks” rather than seconds, but you can do the math if you like 😉

The individual apps are fairly consistent in behavior across the different delivery methods used, however clearly there are some apps that have internal components affecting the outcome.

While all three of the MSIX AppAttach situations take significantly long enough to be annoying to users being moved from App-V, they probably are in a range that users would get accustomed to over time. CIMfs is faster today in these tests than VHD or VHDX, and recent research has showed me that there is the potential of speeding up the staging phase on CIM (by eliminating the need to make a WMI call) in the future. But the numbers, at least for now are not that different. This leads me to suggest that you might be better off today with VHD due to the increased availability in tooling.

Note that the testing performed in all test was a single user on a SSD based VM, against a remote server that was relatively idle and using an SSD. While it would be nice to do a “production test” that would involve 1000’s of users against the server, well, if you think that is a good idea then please do it yourself! I’m looking at you Ron Ogelsby!

Information on the full set of features added to TMEditX 3.7 may be found here.

By Tim Mangan

Tim is a Microsoft MVP, and a Citrix CTP Fellow. He is an expert in App-V and MSIX.