App-V 5 and publishing error code: 040000002C.

A minor defect that causes a publishing failure for any packages (only tested for publishing towards a user though. The error code looks like this;

Publish-AppvClientPackage : Application Virtualization Service failed to
complete requested operation.
Operation attempted: Publish AppV Package.
AppV Error Code: 040000002C.
Error module: Virtualization Manager. Internal error detail: 4FC086040000002C.

There seems to already be a few discussions online that assists in resolving the with a few different methods – one seems to suggest to delete a registry key and there is a one that contains a more granular approach by resetting the registry values under LocalVFSSecuredFolders.

A correct view is that each SID under this registry key references the %USERPROFILE%.


and incorrect (and the cause of the error) references the Default-user profile


A quick script (which you can wrap in a Compliance Item or a script – or whatever the preference is..) to remediate this. The actual fix (Set-ItemProperty) is prefixed with # – please test it before you deploy it.

$return = 0
$users = ($k = gi HKLM:\SOFTWARE\Microsoft\AppV\client\Virtualization\LocalVFSSecuredUsers).GetValueNames() | % {

New-Object PSObject -Property @{

Name = $_

Type = $k.GetValueKind($_)

Value = $k.GetValue($_)

} | select Name, Type, Value


foreach ($u in $users) {
if ($u.value -eq 'c:\users\Default\AppData\Local\Microsoft\AppV\Client\VFS') {
$return = 1
#Set-ItemProperty -Path 'HKLM:\SOFTWARE\Microsoft\AppV\client\Virtualization\LocalVFSSecuredUsers' -Name $($u.Name) -value '%USERPROFILE%\AppData\Local\Microsoft\AppV\Client\VFS'



Per the above forum post this should be resolved within App-V 5.0 SP3, however I have still seen minor occurances for later releases – so I wouldn’t call that a  confirmed fix.

App-V 5 Upgrade without a reboot

This will most likely need to be tested for each version of a potential App-V 5 upgrade, but lets clarify the issue.

When upgrading the App-V 5 client there are some nasty behaviors that cause grievances among users. Since App-V 5 is a middle-man there has been a personal hope that Microsoft would have addressed the upgrade path to offer the same seamless and smooth experience that for example Internet Explorer, Office or general Windows components offers.

What’s the issue?

  1. Install App-V 5 version old
  2. Deploy a few applications, get the users productive
  3. Version new of App-V 5 is released and of course this resolves some issues you have experienced
  4. Manually or in an automated manner install the new version.
    All running virtual applications will be terminated
    After the upgrade and until a restart has been completed no applications can be started

The impact of running the App-V 5 version new upgrade when a user is active on the machine is rather frightening and will decrease the end-user productive. Terminating active virtual applications would stop most change management, but halting productivity until a reboot is of course a deal-breaker.

Depending on your scenario this issue might be able to workaround using processes alone, however in a road-warrior type of world where devices are laptops and either used or offline the ability to control the upgrade path to minimize user friction is of course limited.

Since two thirds of the worlds corporate Windows client estate is managed by Configuration Manager there are certain abilities to ensure that something is not installed while a user is active on the client. The client would become aware of what needs to be executed, download the necessary files and then would not start the install until the following condition is met;


The issue that still stands is that even though the new App-V 5 version new is installed the user can not start the virtual applications (or interact with the client) until the device is restarted.

It seems that the to avoid a scenario where the device drivers loaded into the system should not be different than service running the upgrade will stop the service. There may of course be issues, however running with this version difference (services vs drivers) within a limited time frame is a minor risk if it allows a gradual upgrade path and setting a new standard baseline for the App-V 5 client version

So, run the App-V 5 upgrade;

Start the App-V 5 client service:
net start appvclient

The user can then restart in their own time and hopefully everything should be running without any major hiccups. Obviously – this is very unsupported.

Office 365 / 2013 and App-V – Exclude apps

With the latest release (June 5) of Office Deployment Tool there is the ability to exclude applications when creating a package. For example, if you don’t want to deploy – say Lync? – even though you are technically licensed for it.

How does it work?

Create your XML-file

The XML defines what product you want to deploy / create an App-V package for.

A reference can be found on Technet, with the entire list of all applications that can be excluded. Do note that each application you want to exclude is a new line within the XML-file



<Add SourcePath="c:\media\" OfficeClientEdition="32" >
<Product ID="O365ProPlusRetail">
<Language ID="en-us" />
<ExcludeApp ID="Access" />
<ExcludeApp ID="InfoPath" />
<ExcludeApp ID="Lync" />
<Display Level="None" AcceptEULA="TRUE" />
<Property Name="AUTOACTIVATE" Value="1" />

Run the command-line

Download source media;

 setup.exe /download c:\media\configuration.xml

Create the App-V package;

setup.exe /packager c:\media\configuration.xml c:\media\package

Now you have a package!

Just to deploy!

Remember, Office is only supported to be deployed as a global package when using App-V


Read more about this on Technet!

Adobe Creative Cloud and integration (and the challenge with AppV)

Adobe Creative Cloud is the latest way that Adobe will now offer software on a subscription model (or software as a service, or the cloud, or… well whats the new buzzword?). This allows customers to pick and select what software they want to use, download the media and then install the software they desire.

The installers are quite hefty and if you download almost all software within a suite you end up with a big-bundle of software in a rock-solid 16gb installation package. Even splitting up everything into an installation package per software (such as Photoshop..) the installation itself usually weigh in at 1-2gb.

Usually the software are standalone applications, however two pieces within the suite offer integration across applications. Adobe Bridge and Extendscript Toolkit seem to integrate into just about any piece of software.

Lets run through a few examples;

Any software allows the immediate jump to Adobe Bridge;


Adobe Bridge has the ability to execute startup scripts and each software installed will provide their own set;


Extendscript Toolkit will list all software (and the objects they are using);


It seems that the ability to integrate between these different pieces of software is a mixture of feature enablement and simple listing of folders.

The startup-scripts for Adobe Bridge for example seem to directly correlate to the amount of folders listed within the Startupscripts CC folder;


The ability to directly see different pieces of software through Extendscript Toolkit and the ability to invoke Adobe Bridge doesn’t seem to be related to the enumeration of any folder.

After reviewing procmon activity for quite a while there seems to only be single processing of a file that I didn’t fully explain. Now, this seems “easy to identify”, right? Keep in mind that I stated that there is _one_ file which is processed during startup that I didn’t fully explained. This means; I have taken the time to understand every single file which Bridge reads, or attempts to read during startup. I also processed captures when starting Bridge from any other suite, or when Extendscript Toolkit started.


Yes, figuring this out took me about 3 days of just reviewing and explaning every single line that Process Monitor gave me during a few use cases. Process Monitor doesn’t tell you whats wrong – it tells you what happens.



Once realising that this file was unexplained it is time to understand it a bit more…

The PCD.DB file, which is an unknown extension, was processed during each startup. If opening the file with notepad the following showed up;


SQLite Format 3 seems to relate to a database and after a quick search a utility to browse the database was found –  named SQLite Database Browser.

Cracking the PCD.DB file with SQLite DB Browser immediately showed this;


Reviewing the data using Browse Data tab the contents could be immediately spotted;



Why is this relevant? It seems that the integration between different pieces of the Adobe-suite has a check against this database if the component that it wants to integrate with is actually installed. As everything is contained into a single file it becomes a nightmare to manage in – lets say… – a Connection Group within App-V. In essence it means that the last file that gets read is the one that sets the stage for all Adobe-software. For example:

You create a package with Adobe Photoshop.

You create a new package with Adobe Bridge

If the Photoshop-package is the last one to load, the db-file will not contain any information about Adobe Bridge (as it is effectively overwritten by the one created in the Photoshop-package).

How do you handle it? You start with the worst case scenario!

Generate a package with all software you are licensed to install, install it and then save a copy of the PCD.DB.

Insert this file into every single Adobe (CC)-package you will create and the integration will work without issues!

App-V 5 Error codes

As App-V 5 introduces lots of new error codes – here comes a summary of a few of them. After reviewing a few of the error codes there are some great sharing among people who are writing blog-articles!

See Ralph Jansens summary for App-V 5 error codes

App-V error codes

Application  Launch failures

Error code: 0C80070057
Summary Solution: Upgrade to App-V 5.0 SP2

Error code: 0xFD01F25-0x7B
Solution Summary; Delete desktop.ini files within package

Error code: 0xc0000142
Solution Summary; Enable 8.3 Name creation on NTFS-volumes, or ensure that the client computer account has access to the source-files.

Error code:Microsoft App-V Client” terminated with service-specific error: {Error in Application} The application failed to start properly (0x%lx).
Solution Summary; Uninstall App-V Client, Delete c:\programdata\appv and then reinstall App-V Client

Error code:0x83401D2A-80070490
Summary solution: Verify that you haven’t delete anything from the sequence that is required.

Error code: 0x8e90060a-003000F
Summary Solution: Conflicting settings between packages part of a Connection Group. Presumably resolved in App-V 5.0 SP2

Error code:0x41e04304-00000028
Summary Solution: A package is part of to many Connection Groups with the same priority. Either prioritize the Connection Groups or remove it from one Connection Group.

Publishing failures

Error code:0x59701607 – 0xB
Solution summary: Delete user profile

Error code:0x4FC01304-0x80070003
Solution Summary; Execute the following Powershell commands;

Remove-AppvClientPackage *
Get-AppvPublishingServer | Sync-AppvPublishingServer

Error code:0x87D01280 Virtual application is in use
Summary Solution; As of App-V 5.0 SP2 a package in use is diverted to be removed at next reboot / logon. Stop the package to remove it immediately

Error code:0x80190190
Summary Solution; Allow greater kerberos-tickets. Error code results in ACCESS DENIED.
Implement the following registry key;


Error code: 0x45500D27-0x80190191
Summary Solution: Ensure that AUTHENTICATED USERS is member of User group on Publishing Server.

Error code:0x80190194
Summary Solution; Error code means 404 response from web-host. Ensure that you have the right URL and port for the publishing server you configured.

Error Code: 070000000B
Summary Solution: Install all the pre-requisites for the App-V Client. In particular

Add package

Error code:0C80070002
Summary Solution; App-V Package installation root is diverted, and a temp-folder is required. Create the folder temp at the same level as the App-V package installation root

App-V 5 and Virtual Extensions

Which virtual extensions within App-V 5 are only available if the package is published globally?

See this table!

I also decided to include a pointer if the target OS is relevant when sequencing. If it says yes, the package should be created on the same bitness as the target OS.


Virtual Extension Target OS specific Global only?
Shortcut No No
File Type Association No No
URL Protocols Yes No
AppPaths Yes No
COM Mode No No
Software Client Yes No
Application Capabilities Yes Yes
Context Menu Handler Yes No
Drag-and-drop Handler Yes No
Data Object Handler Yes No
Property Sheet Handler Yes No
Infotip Handler Yes No
Column Handler Yes No
Shell Extensions Yes No
Browser Helper Object Yes Yes
ActiveX Object Yes Yes

App-V 5 and Citrix

There is a great new whitepaper released by Microsoft dealing with different deployment scenarios when it comes to Citrix products. As Citrix announced the end of life for their Application Streaming – quite a few people have started to migrate over to App-V 5.

Unfortunately – App-V 5 is a bit more work (infrastructure wise) to get started and at the moment it is a bit slower aswell.

There isn’t any promise by Microsoft that this has improved in App-V 5.0 SP2, however thinking logically one could assume that all customer cases raised before App-V 5.0 SP2 will hopefully have made the product better.

So, what can we do for all the environments where we today suffer from a poor launch or publishing refresh experience?

1. Disable background staging of the registry to on-demand.

This may reduce the CPU-load!

Set the following registry key;


Value; NoBackgroundRegistryStaging


Source: App-V: On Registry Staging and how it can affect VDI Environments

2. Improve streaming performance by using IIS caching

Ingmar has created a great article on howto enable IIS to cache App-V files (which usually are large and thereby excluded from cache).

See his complete article; Microsoft App-V 5.0 – Streaming via HTTP

3. Use SMB 3.0 if you aren’t using a web-server.

Its fast. See the proof here at Xenapp-blog – Citrix XenServer – Make your network 10x faster or at the Citrix-blogs. Aidan has explained even more benefits for Windows Server 2012 R2 which kicks up the performance even more.

Migrating away from the old legacy (yes, they are legacy now) Windows Server 2008 R2 servers to take the benefit of even faster performance when it comes to file-transfer.

A great collection of Microsoft resources;

Updated Links on Windows Server 2012 R2 File Server and SMB 3.02

4. Use Global Refresh and disable User Refresh

Once the application is actually published to a client the performance impact isn’t usually that bad with App-V 5. If you deploy applications globally to a machine the provisioning part is moved away from the user context and to the machine context. By default though a option is set to perform a Global Refresh once a user logs on. If that is disabled, we completely remove that Publishing operation from the logon process.

Sample command-line,

Add-AppvPublishingServer –Name Server -URL <a href="http://server:80">http://server:80</a> –GlobalRefreshEnabled $true –GlobalRefreshOnLogon $false -GlobalRefreshInterval 1 –GlobalRefreshIntervalUnit Day

5. Set App-V specific process within the LogOffSysCheckModules Registry key

This is an oldie, but still valid. Citrix maintains a list of processes that it doesn’t consider to worth keeping the session alive for. Usually what happens is that sessions are just never logged off and the servers get full, without any active workers on it.

Process to include in the key;



Tips/Tricks for Using App-V Integration with XenDesktop 7.0

App-V 5.0 SP2 and pending removal / update

A new feature, that is only announced on Thamim Karims blog, is the pending state of the App-V 5.0 SP2 client. Previously I covered the new virtual extensions, the user interface removal and new config possibilities (packagestoreaccesscontrol, enable publishing refresh ux) as some great new possibilities for App-V that will greatly benefit everyone, however something that snuck upon is very late (as in when it went public) is the pending state.

So, what is a pending state for publish and unpublish?

Let’s review the output of PowerShell for our packages;

Get-AppvClientPackage -Name Microsoft*

PackageId            : a4b24f80-7fda-4735-86a2-6399fb77b6eb
VersionId            : 7ca886ab-66b9-45d5-b179-ae47ad71ff47
Name                 : Microsoft Frontpage 2003
Version              :
Path                 : D:\storage\MSApp-V_5.0 SP2\Microsoft Frontpage 2003\Microsoft Frontpage 2003.appv
IsPublishedToUser    : False
UserPending          : False
IsPublishedGlobally  : True
GlobalPending        : False
InUse                : False
InUseByCurrentUser   : False
PackageSize          : 364618049
PercentLoaded        : 100
IsLoading            : False
HasAssetIntelligence : True

As you can see there is the UserPending and the GlobalPending. I don’t think they relate to this, but they are an indication that something is up. A few other topics that are worth covering is the InUseByCurrentUser and InUse. These two (if set to True) gives the admin an inkling if the package is locked and can therefore not be updated – very frustrating if you want to push out updates.

Once we use the application – the state of those two values toggle.


In a pre-SP2 world, this would stop the package from beeing updated and we would simply have to force our users to close the application.

In a post-SP2 world, the App-V client gives us only a warning and an indicator that something will happen at a later stage;

Get-AppvClientPackage -Name Microsoft* | Unpublish-AppvClientPackage -Global
Unpublish-AppvClientPackage : The target package is currently in use. The Unpublish operation will be attempted at a later time
Operation attempted: Unpublish AppV Package.
AppV Warning Code: 0200000515.
Please consult AppV Client Event Log for more details.
At line:1 char:42
+ Get-AppvClientPackage -Name Microsoft* | Unpublish-AppvClientPackage -Global
+                                          ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo          : InvalidResult: (:) [Unpublish-AppvClientPackage], ClientWarning
+ FullyQualifiedErrorId : UnpublishPackageWarning,Microsoft.AppV.AppvClientPowerShell.UnpublishAppvPackage

When is a later time?

It seems that if a package is published globally a later time means a reboot, and if the package is published to the user a later time means a logoff / logon operation.

Once a user logs on again, or if the computer is restarted the application is gone!

Since we get a warning, and not a success message, I would _assume_ that SCCM would need an update to handle this and that the native infrastructure can cope with this aswell.


UserPending and GlobalPending didn’t toggle at all during my testing. No idea what they are used for?

Sequence Articulate Storyline

A few hickups while playing around with Articulate Storyline and App-V 5. Unfortunately all this knowledge about howto sequence Storyline is based on a trial edition, however I don’t see a problem to make this work with a licensed edition.

Let’s get started!


Setup your packaging VM. See my previous article about the topic to see our starting point.

You can get the trial-version from Articulate, and in addition to the installer you will also need Adobe Flash Player (ActiveX)


Fire up the App-V Sequencer. During my installation the PVAD was the installation directory of the software. Adobe Flash Player (ActiveX) was actually installed after Storyline was installed, but before the initial launch. Since an initial launch was performed it will expire the trial once you deploy it to a client and force the user to activate.


Deploy it to a client that matches your packaging VM in terms of architecture and prerequisites installed. Then you are done!


App-V 5 and your first SQL Server Report

There are quite a few articles out there to setup and configure App-V 5 and the Reporting server along side SQL Server Reporting Services.

See this list on howto get started;

About App-V 5.0 Reporting

App-V 5.0 Reporting Setup and Query

App-V 5.0 Client Reporting – Client Setup

App-V 5.0 Reporting Server – missing prerequisites

General SQL Server Reporting Services installation tutorial;

Install Reporting Services

All of the above deals with getting the server up and running, the client to send data and to ensure that this is properly processed into the database.

I have spotted one query against the database on – which shows some basic information about application usage using SQL Management Studio.

Where are the reports? Well – SQL Server Reporting Services isn’t very friendly for a novice and to get started might be very daunting. So, here is a starting point! Use the above information to get started – have a server setup and a client (or more) reporting in.

To reach the home-page of SSRSS browse to;

This will present the homepage of the SSRS


As you can see I have multiple reports setup and ready to go. Lets get you started!

1. Click New Data Source

2. Setup the new connection. Most likely it will look something like this in a small lab environment.

Fields are as follows;

Name; AppVReports

Connection String; Data Source=localhost;Initial Catalog=AppVReporting

AppVReporting is the default database-name for the App-V Report database. Localhost should match your SQL Server hostname. Set Windows Security to use your own windows credentials to authenticate (or the user who access the reports). Click Test Connection to test the connection. Once all is set and done – click OK!


3. Download and upload the report

Download the report Application  Usage for user.

Select the upload-file;


Locate the downloaded file and upload it into the SSRS repository.

4. Edit the report to fit your environment

Press the menu for the report and and select Edit in Report Builder


5. Edit the Data Source

You can choose to delete the Data Source, or edit the existing one. In the end – you should point to the previously created Data Source.


If you select Add Data Source the menu looks like this;


As you can see – the previous created Data Source is visible in the list.

Click OK to finalize. Select Save and close the Report Builder.

6. Click the Application Usage for user

7. Enter the user you are interested in to display the report.

For example MYDOMAIN\username. Click View Report.


8. Voila!



Tim Mangan has made some reports available on his site, TMUrgent. Check them out!

2014-05-06 – Microsoft made additional reports available!