Monday, 24 December 2012

App-V Applications and AppSense

A question people often ask me when I am delivering workshops, etc is around AppSense and App-V. I'm often asked to provide best practice guidance for Application Packagers and an overview on how an application is Personalized.

So let me start with an overview, I created a diagram some time ago to assist me when guiding customers, partners, etc through the process... here is the diagram:




In summary AppSense utilises a filter driver which sits at a higher level than App-V's filter driver so any application file and registry writes are captured by AppSense's filter before the App-V filter even see's the write attempts. 

If for some reason you need an item to write to the real file system or registry (e.g. Windows Messaging Subsystem, etc) you will need to add exclusions to both AppSense Personalization Server AND to App-V in order for this to happen. Adding an exclusion within AppSense will allow the file or registry write to pass through AppSense's filter but this will still be captured by App-V. 

In terms of best practice I typically provide the following guidance:
  1. Keep packages as clean and simple as possible. AppSense can be used to perform customization of packages on demand so avoid customizing the package. Robert Dobson posted a blog article on http://blog.appsense.com/2012/03/dynamic-microsoft-app-v-packages-with-appsense-user-virtualization about this same topic. 
  2. Do not include scripts, particularly batch files, within your sequence. 
  3. AppSense does not replace the need for App-V Management Server. You can automate certain tasks using sfttray.exe and sftmime.exe but should be used tactically instead of strategically. 
  4. Ensure the environment you are using for testing the sequenced application has the same AppSense configurations as you are likely to have in Production to avoid frantic troubleshooting when a specific task doesn't behave as expected.
  5. App-V applications follow the same rules as a standard Personalized application where applications are synchronized at Process Start and Process Stop of the last application within an application group.