Share via


UE-V And App-V Integration

How to Publish a UE-V Template for an App-V Application

Microsoft User Experience Virtualization (UE-V) supports Microsoft Application Virtualization (App-V) applications out of the box, without the need for any modifications to either the App-V package or the UE-V template.  However, an additional step is needed since you cannot run the UE-V Generator directly against a virtualized App-V application; you must first install the application locally, generate the template, then apply the template to the virtualized application.  UE-V supports both App-V 4.5/4.6 and App-V 5.0 packages. To implement UE-V for App-V applications, use the following steps:

  1. Run the UE-V Generator against a locally installed application to create a settings location template.  If you are using a built-in template such as the Microsoft Office 2010 template, you can skip this step.
  2. Install the App-V application package if you have not already done so.
  3. Publish the template to your Settings Template Catalog Path or manually install the template using the Register-UEVTemplate PowerShell cmdlet.  Note:  If you publish to the Settings Template Catalog Path, the client will not receive the template until the "Template Auto Update" scheduled task runs (3:30 AM by default).  To manually start this process, open Task Scheduler, Expand Task Scheduler Library\Microsoft\UE-V, then right-click "Template Auto Update" on the right-hand pane and choose Run.
  4. Launch the App-V package.

To test replication, make a settings change in the App-V application, exit the application, then launch the application on a second machine that has the UE-V Agent installed and the template from step 3 configured.

 

How UE-V Interacts with App-V Applications

UE-V monitors for process launch by executable name and optionally file and product version numbers.  The executable may be either locally installed or virtualized via App-V.  When the application is launched, UE-V injects its agent DLL (Microsoft.Uev.AppAgent.dll) in to the App-V process, applies any settings stored in the user's Settings Storage Path, then allows the application to launch normally.  UE-V is aware of App-V applications, and will automatically translate the relative file and registry paths to the virtualized location (as opposed to the physical location outside of the App-V environment).

For example, assume that an application named MyApp.exe has been virtualized using App-V 5.0 and has a UE-V Settings Location Template like the following: 

<?xml version="1.0" encoding="utf-8"?>
<SettingsLocationTemplate xmlns='http://schemas.microsoft.com/UserExperienceVirtualization/2012/SettingsLocationTemplate'>
  <Name>MyApp</Name>
  <ID>MyApp</ID>
  <Version>1</Version>
  <Processes>
    <Process>
      <Filename>MyApp.EXE</Filename>
      <ProductVersion>
        <Major Minimum="1" Maximum="1" />
      </ProductVersion>
    </Process>
  </Processes>
  <Settings>
    <Registry>
      <Path Recursive="true">Software\MyApp</Path>
    </Registry>
  </Settings>
</SettingsLocationTemplate>

When MyApp.exe version 1.0 launches inside the App-V bubble, UE-V will inject its Agent DLL in to the process and check for a settings storage package.  If a package exists, UE-V will then make a call to apply the registry settings to HKCU\Software\MyApp.  App-V will automatically translate this to its virtualized location (for example, HKEY_USERS\S-1-5-21-11111111-222222222-22222222-55555\Software\Microsoft\AppV\Client\Packages\F0790437-0020-407B-ACFB-C81A4E05681\REGISTRY\USER\S-1-5-21-11111111-222222222-222222222-55555\Software\MyApp).  On exit, any changes to HKCU\Software\MyApp will be written back to the Settings Storage Path.  Monitored files work similarly.

Note:  Do not attempt to capture any paths under HKCU\Software\AppV in a UE-V template.  These paths are already translated when App-V sees that a reference to the path has been accessed.  Attempting to replicate data in this path will result in a subkey being created under the Software\AppV key that references an incorrect path and will result in the application not seeing its replicated data correctly.