Application Packaging and Delivery of an MSIX Application

Application Packaging and Delivery of an MSIX Application

This guide documents how to use Omnissa App Volumes to capture and deliver MSIX applications. We will walk through the steps to capture an MSIX application to a virtual disk and control the delivery of the MSIX application using App Volumes. We look at the powerful capability of App Volumes in dynamically assigning MSIX applications to both user and computer-based targets.

The Three Step Workflow

 A logo of a application</p>
<p>Description automatically generated

App Volumes Administrators or Application Administrators responsible for capturing and delivering an MSIX application can leverage this three step workflow to capture and deliver MSIX applications using App Volumes.

The “Prepare” section will describe the environment used to prepare this guide and prerequisites needed to be successful.

The “Create” section provides step-by-step instructions on the creation of an empty Virtual Hard Disk (VHD), unpacking the MSIX application into the VHD, and finally, using App Volumes Tools to create the supported App Volumes Application Package resulting in the JSON and VHD files. Then, upload the two files to the App Volumes environment for assignment.

The “Validate” section is where we test the MSIX application delivery from the App Volumes Manager via an App Volumes user based assignment, we will then log into a Virtual Desktop, confirm the MSIX application delivery, and launch the application. A demo walk-through of the instructions in this guide is available in the Demonstrate section.

Prepare

The following components were present in the environment used to build and validate the scenario.

  • Omnissa Horizon 8: virtual desktops built from a Windows 10 Guest OS image using the following method.
  • App Volumes 4.x environment
    • App Volumes Packaging virtual machine built using the guidelines outlined in Preparing a Packaging Virtual Machine, excluding installing the Horizon agent, App Volumes agent, and DEM agent.
    • We have used App Volumes Tools to capture an application in VHD and VMDK formats.
      A screenshot of a computer
<p>Description automatically generated 
  • Additional software used;

Packaging Virtual Machine folder content

On the App Volumes Package capture VM, create a folder where you will create the empty Virtual Hard Disk (VHD), convert the Virtual Hard Disk (VHD) to the required App Volumes supported virtual disks (VHD and VMDK), and the JSON metadata files. In the demo, we have used the following folders;

  • C:\MSIXAPPCAPTUREDISK - stores the created VHD, VMDK, and JSON files during the demo
  • C:\MSIXMGR -  Extract and store the MSIX Manager tool files here
  • C:\MSIX_Apps - store the MSIX Application here. The demo has Python 3.12.

It is essential to note the following considerations;

  • The App Volumes MSIX application package captured by App Volumes Tools can only contain a single MSIX application in the Virtual Hard Disk (VHD).
  • The certificate used during the capture of an MSIX application should be present in the target virtual desktop for the application to successfully validate and launch.

Create

From the App Volumes Packaging Virtual Machine, the administrator/packager initiates the following steps:

Step 1: Create and mount a virtual hard disk (VHD)

  1. On the App Volumes Packaging VM, launch an elevated command prompt.
  2. Run the following DISKPART commands to create a virtual hard disk (VHD), format it, and mount it.

Syntax:

C:\DISKPART

DISKPART> CREATE VDISK FILE=<VHD File Location.vhd> MAXIMUM=<disk size) TYPE=expandable

DISKPART>SELECT VDISK FILE=<VHD File Location.vhd>

DISKPART> ATTACH VDISK

DISKPART> LIST DISK

DISKPART> SELECT DISK <No. that is associated with the above mounted VHD>

DISKPART> ATTRIBUTES DISK CLEAR READONLY

DISKPART> CONVERT GPT

DISKPART> CREATE PARTITION PRIMARY

DISKPART> FORMAT QUICK FS=NTFS LABEL=<Label Name Optional>

DISKPART> ASSIGN LETTER=<Available drive letter>

DISKPART> EXIT

Command used in the demo:

C:\DISKPART

DISKPART> CREATE VDISK FILE=”C:\MSIXAppCaptureDisk\MSIXAPP.vhd” MAXIMUM=10240 TYPE=expandable

DISKPART>SELECT VDISK FILE=”C:\MSIXAppCaptureDisk\MSIXAPP.vhd”

DISKPART> ATTACH VDISK

DISKPART> LIST DISK

DISKPART> SELECT DISK 1

DISKPART> ATTRIBUTES DISK CLEAR READONLY

DISKPART> CONVERT GPT

DISKPART> CREATE PARTITION PRIMARY

DISKPART> FORMAT QUICK FS=NTFS LABEL=”Application”

DISKPART> ASSIGN LETTER=”E”

DISKPART> EXIT

Diskpart commands run on the Packaging Virtual Machine:

A screenshot of a computer</p>
<p>Description automatically generated

A screenshot of a computer program</p>
<p>Description automatically generated

Step 2: Using the MSIX Manager (MSIXMGR.EXE)

  1. Run the MSIX Manager Unpack command to unpack the Python MSIX Application into the virtual hard disk (VHD) created in the previous steps.

Syntax:

“C:\msixmgr\x64\msixmgr.exe” -Unpack -packagePath <Path of the MSIX Application> -destination <Destination Drive\Folder> -applyACLs

Command used in the demo:

“C:\msixmgr\x64\msixmgr.exe” -Unpack -packagePath “C:\MSIX_Apps\Python 3.12\PythonSoftwareFoundation.Python.3.12_3.12.1008.0_x64_qbz5n2kfra8p0.msix” -destination E:\apps -applyACLs

Output of the MSIXMGR unpacking the MSIX Application:A screen shot of a computer</p>
<p>Description automatically generated

Note: ensure that the destination driven\path does not contain quotations, like the source package path shown in the above screenshot.

Unmounts the virtual hard disk (VHD)

  1. Launch an elevated command prompt and run DISKPART
  2. Within the DISKPART prompts:
    1. List the Volumes.
    2. Select the Volume mounted by the virtual hard disk (VHD), and seek confirmation.
    3. Set the selected Volume attribute to NODEFAULTDRIVELETTER.
    4. Select the VDISK virtual hard disk (VHD) file and detach the VDISK.

Syntax:

C:\DISKPART

DISKPART> LIST VOLUME

DISKPART> SELECT VOLUME <No.>

DISKPART> ATTRIBUTES VOLUME SET NODEFAULTDRIVELETTER

DISKPART> SELECT VDISK FILE=<VHD File Location.vhd>

DISKPART> DETACH VDISK

DISKPART>EXIT

Command used in the demo:

C:\DISKPART

DISKPART> LIST VOLUME

DISKPART> SELECT VOLUME 4

DISKPART> ATTRIBUTES VOLUME SET NODEFAULTDRIVELETTER

DISKPART> SELECT VDISK FILE=”C:\MSIXAppCaptureDisk\MSIXAPP.vhd”

DISKPART> DETACH VDISK

DISKPART>EXIT

Diskpart commands run on the Packaging Virtual Machine:A screenshot of a computer</p>
<p>Description automatically generated

Step 3: Use App Volumes Tools (appcapture.exe)

  1. Launch an elevated command prompt and run the App Volumes Tools (appcapture.exe) shown in the syntax section below.
    1. The first appcapture command executes to generate and extract the metadata to a JSON file.
    2. The second appcapture command executes to generate the VMDK file from the VHD file.
  2. The next step is to rename the MSIXAPP.* files to Python_workstation.vhd, Python_workstation.vmdk and Python.json.
    A close up of a website
<p>Description automatically generated 
  3. Finally, copy the Python.json and Python_workstation.vmdk files to the App Volumes Manager server at the following location <Installation_Directory>\CloudVolumes\Manager\ppv\packages.

Syntax:

“C:\Program Files (x86)\VMware\AppCapture\Appcapture.exe” /addmeta “<Path to VHD>” /msix <Path to install MSIX Package>

“C:\Program Files (x86)\VMware\AppCapture\Appcapture.exe” /msixvmdk “<Path to VHD>”

Command used in the demo:

“C:\Program Files (x86)\VMware\AppCapture\Appcapture.exe” /addmeta “C:\MSIXAPPCAPTUREDISK\MSIXAPP.vhd” /msix apps\PythonSoftwareFoundation.Python.3.12_3.12.1008.0_x64_qbz5n2kfra8p0

“C:\Program Files (x86)\VMware\AppCapture\Appcapture.exe” /msixvmdk “C:\MSIXAPPCAPTUREDISK\MSIXAPP.vhd”

App Volumes tools (appcapture) command run to generate the VMDK/VHD and JSON files:A screenshot of a computer program</p>
<p>Description automatically generated

A screenshot of a computer</p>
<p>Description automatically generated

Step 4: Upload the VMDK and JSON files into the designated storage.

  1. Login to the App Volumes Manager console.
  2. Navigate to the CONFIGURATION > Storage and click Upload Templates.
    A screenshot of a computer
<p>Description automatically generated 
  3. This action innumerates the Application Packages found in the following location <Installation_Directory>\CloudVolumes\Manager\ppv\packages 
    1. If a VMDK and JSON are in the correct naming format, as shown above, they will be listed below.
  4. The demo will show the capture and upload of the MSIX format of the Python application. And since it is copied to the correct location, we see it listed below.
    1. This Application Package is not in the App Volumes environment and is listed as No under the Exists tab.
      A screenshot of a computer 
    2. Click Upload to initiate uploading this new Application Package into App Volumes.
  5. You can now validate the Upload process by navigating to the INVENTORY > Applications tab.
    1. If you do not see your application listed, click Import to import the Application Package into the inventory. Then click the Application tab again to refresh the page.
      A screenshot of a computer</p>
<p>Description automatically generated 

Step 5: The following are administrative steps performed in the App Volumes Manager Admin UI

  1. Expand the Application (in this example, Python), and click Edit.
    A screenshot of a computer</p>
<p>Description automatically generated 
  2. This will take you to the Edit Application section, where you, as the App Volumes Administrator or Packager, can tag the Application with an application Owner.
    1. When creating an application package using App Volumes Tools, and is uploaded into the App Volumes console, the Owner field is populated with the hostname\administrator’s account that created the package from the source computer, be it physical or a virtual machine. In a production environment, to maintain consistency and tracking, it is advisable to tag the Owner.
      A screenshot of a computer</p>
<p>Description automatically generated 
  3. Here, an Active Directory Account will need to be queried and selected, and this Active Directory account will be the new Owner of the imported Application Package.
    A screenshot of a computer
<p>Description automatically generated
    A screenshot of a computer</p>
<p>Description automatically generated 
  4. Suppose an application has several packages and the latest package version must be assigned and delivered to an entity. In that case, you can use the Marker assignment type and mark the package as CURRENT when assigning the application to the entity. As a result, the entity always receives the latest version of the application.
    1. We navigate to the INVENTORY > Packages > expand the package and click Set CURRENT.
      A screenshot of a computer</p>
<p>Description automatically generated
      A screen shot of a computer</p>
<p>Description automatically generated 
  5. Finally, to deliver an App Volumes application package to an end user, you must assign an application to an entity that belongs to your organization's active directory. An entity can be a user, computer, Group, or Organizational Unit OU.
    1. Navigate to INVENTORY > Applications > expand the application and click Assign.
      A screenshot of a computer</p>
<p>Description automatically generated 
    2. This brings up the Assign Application screen where you, the App Volumes Administrator, can assign this application.
      A screenshot of a computer
<p>Description automatically generated 
    3. Query the Active Directory, and identify the entity that shows a status of Available.
    4. Next, assign the package that is set to CURRENT or select the Package to manually select the version of the package (provided you have multiple versions of packages uploaded).
    5. And finally, click Assign.
      A screenshot of a computer
<p>Description automatically generated 

This will take you back to the INVENTORY > Applications tab, where you can expand the application to validate the application assignment.

The next step is to have the end user validate the application assignment by logging into the virtual desktop, which has the App Volumes Agent installed and registered to this App Volumes environment.

Validate

Validate the assignment of the imported App Volumes MSIX Application Package.

To validate that the assignment and test the launch of the application is successful, have the entitled user log in to the target virtual desktop.

  1. Have the user log in using the Horizon Client or HTML browser and launch their virtual desktop session.
    A screen shot of a computer</p>
<p>Description automatically generated
    A screenshot of a phone</p>
<p>Description automatically generated 
  2. Upon launch of the desktop session, we have the user click Start to view the list of applications.
    1. The below screenshot shows the assignment of Python 3.12 made available to the user to consume within this virtual desktop session.
       

A screenshot of a computer</p>
<p>Description automatically generated

  1. Launching the Python 3.12 application, results in the below launch of the application within the virtual desktop session and has a confirmation that it is an MSIX-based application stored and launched from the C:\Program Files\WindowsApps\<sub-folder>.
    A computer screen with white text</p>
<p>Description automatically generated 

This confirms the successful delivery of the MSIX Application Package to a virtual desktop session.

Note:

Follow MSIX packaging and installation guidelines as well as the Best practices using the MSIX Packaging Tool to create your MSIX installer, which generates the initial VHD and then converts it to an App Volumes VHD and JSON.

Demonstrate

For a brief demo of the steps in this guide, see:

Summary and Additional Resources

The administration of an App Volumes environment is inherently complex and constantly evolving. This Application Packaging series aims to be a steady companion, offering reliable guidance and support to help you effectively manage these daily operational tasks. By utilizing this resource, you will be better prepared to handle the challenges of your role, ensuring operational excellence and technical proficiency with Omnissa App Volumes.

We trust you will find this Application Packaging series invaluable in your day-to-day activities and encourage you to refer to it regularly. Your feedback is welcome and will be instrumental in continuously improving this resource.

Additional Resources

Explore the following additional resources:

Changelog

The following updates were made to this guide.

Date

Description of Changes

Oct-2024

  • Updated for Omnissa docs, KB, Tech Zone links and updated images.

July-2024

  • Sectional updates with Graphics and restructuring

Jun-2024

  • Initial publication date

Authors and Contributors

The following authors and contributors have helped make this paper possible:

Authors

  • Sujay Gopalan, Sr. Technical Marketing Architect, Omnissa.   

Reviewers  

  • Rick Terlep, Staff Technical Marketing Architect, Omnissa.  
  • Mike Erb, Staff Technical Marketing Architect, Omnissa.

Feedback

Your feedback is valuable. To comment on this paper, either use the feedback button or contact us at tech_content_feedback@omnissa.com.


Filter Tags

Horizon App Volumes Document Operational Tutorial Intermediate