App-V 5: On Roaming Exclusions
When you use App-V with roaming profiles or a service or product that may roam integration settings of virtual applications, it was historically assumed by App-V that once a package’s extension points are laid down (or integrated,) roaming user profiles will carry it alongside the user’s catalog, keeping the two in sync. The App-V 5 Client Integration component depends on the ability to rely on the client’s copy of the catalog to determine which extension points get generated (or re-generated.) This is how App-V 5 Integration quickly calculates which extension points and integration links (junction points) will be needed to be created during publishing. Back in previous versions when everything was isolated into individual FSD and PKG files, it was pretty easy to integrate App-V data into your roaming user environments.
As you may note, I am purposely using the term “Roaming User Environment” – as in – a generic term that not only refers to Roaming User Profiles native to Windows, but also environments which may be roamed using Citrix UPM (User Profile Manager, AppSense UEM, UE-V, RES, Immidio, etc.) Many of these environment managers work more granularly than the standard Windows configuration. The App-V 5 client configuration allows administrators to align their roaming user environment configuration with their App-V client configuration. Specifically, administrators identify which registry key locations under HKCU and which directory locations under %USERPROFILE% do not roam.
The App-V Client Integration component uses its Client Configuration to set and get roaming exclusions. The exclusion lists are captured in the App-V Client Configuration using the following keys:
HKLM\Software\Microsoft\AppV\Client\Integration\RoamingFileExclusions
HKLM\Software\Microsoft\AppV\Client\Integration\RoamingRegistryExclusions
Each roaming exclusion list is a REG_SZ value which is a semicolon-separated list of paths to excluded data. File exclusion paths are relative to %USERPROFILE% and contain no leading slash or trailing slash. Registry exclusion paths are paths to keys relative to HKEY_CURRENT_USER and contain no leading or trailing slashes. The App-V client setup establishes a default roaming configuration for the client machine as a best effort during client installation according to these well-known Windows settings. For example, Windows never roams registry data under SOFTWARE\Classes, and may erase it on logoff, so the exclusion list set during AppV Client setup will always include SOFTWARE\Classes.
Configuration of Roaming Exclusions
Of course, one should recognize that this may not be enough. Administrators that wish to change the list of roaming exclusions from the default configuration populated during client installation can do so. Roaming Exclusions can be configured by way of:
Manual Registry Configuration: Per the information in the proceeding paragraphs, you can make adjustments by modifying HKLM\Software\Microsoft\AppV\Client\Integration\RoamingFileExclusions
And/or HKLM\Software\Microsoft\AppV\Client\Integration\RoamingRegistryExclusions
Please bear in mind that the changes you make will take effect for new users only logging onto that App-V 5 client.
PowerShell: You can use the following PowerShell Cmdlets to set roaming exclusions:
Set-AppvClientConfiguration –RoamingFileExclusions
Set-AppvClientConfiguration –RoamingRegistryExclusions
Please bear in mind that like everything else the CmdLet will check to see if these settings are applied and managed via GPO by checking HKLM\Software\Policies\Microsoft\Application Virtualization. If any of the provided configuration is in the GP registry node, the cmdlet will fail. If the group policy does not own any of the supplied configuration, the settings are written to the HKLM\Software\Microsoft. Please also Please bear in mind that the changes you make will take effect for new users only logging onto that App-V 5 client.
Group Policy Object (GPO): The MDOP ADMX templates include settings for both Roaming File and Roaming Registry Exclusions. This will enable you to pre-deploy these configurations via GPO. The ADMX template can be downloaded here: https://www.microsoft.com/en-us/download/details.aspx?id=41183
Deployment Using Installer Switch: Per https://technet.microsoft.com/en-US/library/jj687745.aspx - you can supply this configuration upon deployment of the App-V Client using the following switches:
/ROAMINGFILEEXCLUSIONS
Usage: /ROAMINGFILEEXCLUSIONS='desktop;my pictures'
/ROAMINGREGISTRYEXCLUSIONS
Usage: /ROAMINGREGISTRYEXCLUSIONS=software\\classes;software\\clients
Administrators managing environments that don’t support roaming user profiles can disable all roaming exclusions by emptying the list using Group Policy. This yields the best possible performance for integrated extension points because extension points are never re-integrated unless explicitly requested through manifest policy, dynamic configuration, or package updates.
The App-V 5 integration system (that creates and manages shortcuts, FTA’s, Integration Path junction points, etc.) use the roaming exclusions to force integration of extension points that otherwise appear to be up to date by maintaining this list of exclusions and comparing them at logon. At that time, for each package the user has published, all integration and extension points that package has will be checked to see whether it was integrated to a location included in the roaming exclusion lists. If so, that extension point will be re-integrated. Otherwise, no re-integration is necessary.
Comments
- Anonymous
January 01, 2003
By matching the Roaming File and Registry Exclusions for the App-V client to your environments Roaming File and Registry Exclusions, would or could there be a quantifiable performance increase on the loading of the integration and extension points for each user as they login? - Anonymous
January 01, 2003
Perhaps especially in the case where the application has a tremendous amount. - Anonymous
June 30, 2015
~ John Behneman | Senior Support Escalation Engineer Hello everyone, John Behneman here again. I’d like