Everyone who has being anticipating the release of SP2 for App-V 5.0 will understand that one of the core new features it has brought is the support for shell extensions, when you throw RunVirtual and browser helper objects into the mix too, what we end up with are very blurred lines around when an App-V package is in use. We can’t tell whether a package is in use by simply looking at whether the app itself is open as something as simple as a right click context menu in explorer could bring it into use.
While it is great having applications integrating so tightly and become much more dynamic in how they are exposed to our OS, it comes with some new challenges, primarily how do we manage change operations to our package while they are running? For example, how do we unpublish or update our applications when some of them will now be in use very soon after log in due to extensions or RunVirtual.
Pre SP2 for App-V 5.0 we would get a message similar to above where we are warned “Unpublish-AppvClientPackage : The operation could not be completed because the virtual environment is in use.”
This essentially meant the operation failed and wouldn’t be tried again by the client until the command was reissued. So if this was in a Configuration Manager environment this meant next policy evaluation, the problem being that the package might still be in use every time this happens, meaning this package never gets unpublished.
With SP2 things are different:
We now get advised that “Unpublish-AppvClientPackage : The target package is currently in use. The Unpublish operation will be attempted at a later time”
So what does this mean and how does this work?
What will happen now in these situations is the App-V client will generate a key under HKEY_CURRENT_USER\Software\Microsoft\AppV\Client\ called PendingTasks. Here it will populate jobs which were not able to be completed successfully and put them into a pending state.
If the task is a global operation such as a global unpublish the same key would appear under HKEY_LOCAL_MACHINE\Software\Microsoft\AppV\Client\PendingTasks.
A user based pending task will happen at log off/log on and a global based pending task will happen at shutdown/restart. This functionality also works for connection scenarios too.