VMware Horizon Published App-v applications

As you probably know ThinApp is tightly integrated with VMware Horizon. ThinApp is an excellent technology to deploy legacy applications or solve application conflicts. Unfortunately not everyone is using this technology. Other companies might use for example Microsoft App-v to deploy their applications.

App-v is a widely used application virtualization technology and works very well, it is just not integrated with VMware Horizon.

One of the questions I recently came across was this one:

How can you deploy App-v packages to your VMware Horizon Apps (RDS) environment and deliver them as published applications through the VMware Horizon client or Identity Manager Portal?

What I consider to be the preferred way to deploy App-v packages in your instant clone Horizon Apps environment is precaching the packages in the base image (or parent vm).

If you are only using Horizon published apps, there is no need to setup an App-v infrastructure.

In your parent vm, do the following:

Enable 8dot3 in registry:

  • Path: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\FileSystem
  • Name: NtfsDisable8dot3NameCreation
  • Value: 0
  • Type: DWord

Execute these powershell commands:

  • Enable-Appv
  • Set-AppvClientConfiguration -ENABLEPACKAGESCRIPTS 1
  • Set-AppvClientConfiguration -SHAREDCONTENTSTOREMODE 0
  • Set-AppvClientConfiguration -PACKAGESOURCEROOT “Path_To_Package_Sources”

Create a scheduled task that executes this powershell script at startup of the instant clone. The script will add all the App-v packages on the package source share to the local cache. The DynamicDeploymentConfiguration parameter ensures the application shortcuts are added to the “C:\ProgramData\Microsoft\Windows\Start Menu\Programs” folder.

$path = “\\Path_To_Package_Share”

$names = Get-ChildItem $path -Recurse -Force | where name -like *.appv | select Name

$packagenames = New-Object System.Collections.ArrayList

$x = foreach ($name in $names){$packagenames.Add($name.Name.Substring(0,$name.Name.Length-5))}

foreach  ($packagename in $packagenames){

Add-AppvClientPackage ($path+$packagename+”\”+$packagename+”.appv”) -DynamicDeploymentConfiguration ($path+$packagename+”\”+$packagename+”_DeploymentConfig.xml”) | Publish-AppvClientPackage -global | Mount-AppvClientPackage


Because Instant clone vm’s don’t go through the complete startup cycle, sometimes the script does not run and App-v packages are not synced. To get around this, you can configure the scheduled task to repeat itself 3 times (every 1 minute).

Command: %SystemRoot%\system32\WindowsPowerShell\v1.0\powershell.exe

Argument:-ExecutionPolicy Bypass -file “\\Path_to_Powershell_Script.ps1”

Make sure this scheduled task runs under the system account and runs with highest privileges.

Every time an App-v package is updated or a new package is added to the App-v package source share, it will be automatically precached at reboot of the instant clone RDS server. The default cache location is under %programdata%\app-v

Once this is done, you can go ahead and publish the app-v package.

Publish the shortcut under the C:\ProgramData\Microsoft\Windows\Start Menu\Programs\ folder and you are ready to go.

App-v packages that are updated, don’t need to be re-published. The shortcut under the programs folder will not change, thus no need to change it in the application pool. Only new applications need to be added to the application pool.








Sometimes you want to create shortcuts to published application on endpoints or within a virtual desktop in your VMware Horizon environment.
How you can do this, I explained already in another blog post.

Currently you can configure shortcuts also from the Horizon administrator. For more info, see https://docs.vmware.com/en/VMware-Horizon-7/7.4/horizon-published-desktops-applications/GUID-74385790-613F-48AE-A47F-FECE8E43BA49.html

The annoying problem with this setup is, although you configure the Horizon client for sso (through GPO or registry settings) it still prompts you for username and password.

If you want to configure SSO and avoid users to enter there credentials again, follow these steps:

When you start the Horizon client and connect to your published applications a prefs.txt file is created in “%appdata%\VMware\VMware Horizon View Client”. This file saves the connection settings for subsequent logons. By modifying this file and making sure it is available before the connection is made, sso can be achieved.
Start the Horizon client for the first time. Add server name, click right and select “autoconnect to this server”. Open %appdata%\VMware\VMware Horizon View Client\prefs.txt and make note of serverGuid and AutoConnectServerName.

Next we will create a custom prefs.txt file:
Create a new text file and name it prefs.txt.
Copy the lines below to the text file.
Change the text in bold with the serverGUid and AutConnectServerName you noted above.

<?xml version=”1.0″?>
<RecentServer serverName=”yourconnectionserverurl” lastLogInAsCurrentUser=”true” serverGuid=”a531e098-cb4c-4fe7-af52-5a3a166843e5“></RecentServer>
<LastLoginAsCurrentUser loginAsCurrentUser=”true”/>
<AutoConnectServer AutoConnectServerName=”yourconnectionserverurl“/>

Copy this file at each user logon (using UEM, login script or GPO preferences) to %appdata%\VMware\VMware Horizon View Client


UPDATE: From Horizon 7.3 on, it is possible to create application shortcuts in the Horizon Administrator for published applications. Desktop shortcuts are supported on Horizon 7.5. When a Horizon administrator configures shortcut , a folder “VMware applications” is created in the startmenu which will contain all shortcuts or in case of Windows 8 and 10 shortcuts will be placed in the apps list. Shortcuts can also be created on the desktop.


This is good news and might be sufficient for a lot of use cases. Automatic shortcut placement however is limited to the “VMware Applications” folder in the startmenu and the desktop and nu further customization is possible.

If you need more ‘freedom’ in placing shortcuts, you can use the method below.

VMware Horizon 6 and later supports app-remoting based on Microsoft RDS. RDS-hosted applications can be published and managed through the VMware Horizon View administrator. This article covers the creation of shortcuts to RDS-hosted applications in the start menu of the virtual desktop. It assumes that an RDS infrastructure is in place, RDS-hosted applications are available and users are entitled to those applications. Below is screenshot of the VMware Horizon client with virtual desktops and an RDS-hosted application, available to the end-user.

While it is easy to provide applications to end-users via the VMware Horizon client or Workspace portal, this might not be the preferred method for the end-user. When the user is working in his/her virtual desktop and needs access to the RDS-hosted application, he/she has to minimize the virtual desktop and click on the application icon in the VMware Horizon client.

It would be nice that the user can access the application from within his desktop through the start menu or via a desktop shortcut, just like a native installed application. There are several ways to achieve this. One method is starting the VMware Horizon client with parameters:

C:\Program Files (x86)\VMware\VMware Horizon View Client\vmware-view.exe -appName “application display name” -serverURL vdi.company.com -desktopLayout windowLarge -desktopProtocol PCOIP -logInAsCurrentUser true -hideClientAfterLaunchSession true

While this works for 1 application, certain issues arise when starting multiple applications. When starting the second application, the first connection is disconnected (with the message “the connection is closed, due to a new connection request”). The first application disappears for a few seconds and appears back when the second is available. I have found that the best way to achieve this is the following:

1) Install the VMware Horizon client in the virtual desktop

2) Make note of the Distinguised Name of the RDS-H application
Connect to the adam database on the connection server. Info on how to do this can be found here. Windows Server 2012 is not mentioned, but follow the same steps as Windows Server 2008
In my case I want to make a shortcut for the Kofax_Express RDS-Application

3) Create a shortcut in the start menu (i.e. using VMware UEM)
My preferred way to do this is using VMware UEM, but of course this can also be done using GPO preferences or other tools such as Ivanti. Open the UEM console and click on User environment

The most important field is the target field. Prepend “vmware-view://vdi.company.com/” to the Distinguished Name you retrieved before.
The target field should look like this:
(Replace vdi.company.com with the name of the connection server or DNS CNAME you are using to connect to the virtual desktop infrastructure)
If you want you can add the icon path to the application icon on a network share. Destination can be Desktop, Quick Launch Bar or in the Programs folder.
Save the shortcut configuration

When we log in into the virtual desktop, we see that the Kofax application is added to the start menu.

Clicking on it, opens the VMware Horizon client to connect to the RDS-hosted application. Starting a second RDS-hosted application is immediate, without disconnecting the first application and then reconnecting to it again.