App-V 5.0 – Error: Virtual Fonts subsystem failure on first launch

Hi all,

I’ve been seeing the following error a few times with my own packages so I thought it was time to figure out what the issue is.

clip_image001

If you check the event log a more descriptive error is available, and it states the following:

Process 18672 failed to start due to Virtual Fonts subsystem failure. Package ID {5152004a-ed53-4435-a814-1ac15f070e7c}. Version ID {0361fd0e-c618-443b-b803-70e4bc663541}. Error: 0x83401D2A-0x80070490

Note: The App-V event log is located in the following location within Event Viewer:

Applications and Services Logs\Microsoft\AppV\Client\Admin

Workaround

If you want to workaround this issue then you can do the following:

1. Edit the UserConfig.xml for the package and set Fonts Enabled="false"

clip_image003

2. Once this is complete then republish the package using the custom userconfig.xml. I updated my package using the following powershell command:

Get-AppvClientPackage "Adobe Reader 11.0.03" | Publish-AppvClientPackage -DynamicUserConfigurationPath '.\Adobe Reader 11.0.03_UserConfig.xml'

Now when I launch the application, it launches as expected.

Troubleshooting the Error

Firstly I knew the error was due to the Virtual Fonts subsystem and I know that the Fonts subsystem is written to the AppxManifest.xml file. So I opened up the .appv and had a look in the AppxManifest.xml. The following was set for <appv:Extension Category="AppV.Fonts">

<appv:Extension Category="AppV.Fonts">

<appv:Fonts>

<appv:Font Path="[{Windows}]\Installer\$PatchCache$\Managed\68AB67CA7DA73301B744BA0000000010\11.0.0\MinionPro_Bold.otf" />

<appv:Font Path="[{Windows}]\Installer\$PatchCache$\Managed\68AB67CA7DA73301B744BA0000000010\11.0.0\MinionPro_BoldIt.otf" />

<appv:Font Path="[{Windows}]\Installer\$PatchCache$\Managed\68AB67CA7DA73301B744BA0000000010\11.0.0\MinionPro_It.otf" />

<appv:Font Path="[{Windows}]\Installer\$PatchCache$\Managed\68AB67CA7DA73301B744BA0000000010\11.0.0\MinionPro_Regular.otf" />

<appv:Font Path="[{Windows}]\Installer\$PatchCache$\Managed\68AB67CA7DA73301B744BA0000000010\11.0.0\MyriadPro_Bold.otf" />

<appv:Font Path="[{Windows}]\Installer\$PatchCache$\Managed\68AB67CA7DA73301B744BA0000000010\11.0.0\MyriadPro_BoldIt.otf" />

<appv:Font Path="[{Windows}]\Installer\$PatchCache$\Managed\68AB67CA7DA73301B744BA0000000010\11.0.0\MyriadPro_It.otf" />

<appv:Font Path="[{Windows}]\Installer\$PatchCache$\Managed\68AB67CA7DA73301B744BA0000000010\11.0.0\MyriadPro_Regular.otf" />

<appv:Font Path="[{AppVPackageRoot}]\Reader\plug_ins3d\prc\MyriadCAD.otf" />

<appv:Font Path="[{AppVPackageRoot}]\Resource\Font\AdobePiStd.otf" />

<appv:Font Path="[{AppVPackageRoot}]\Resource\Font\CourierStd-Bold.otf" />

<appv:Font Path="[{AppVPackageRoot}]\Resource\Font\CourierStd-BoldOblique.otf" />

<appv:Font Path="[{AppVPackageRoot}]\Resource\Font\CourierStd-Oblique.otf" />

<appv:Font Path="[{AppVPackageRoot}]\Resource\Font\CourierStd.otf" />

<appv:Font Path="[{AppVPackageRoot}]\Resource\Font\MinionPro-Bold.otf" />

<appv:Font Path="[{AppVPackageRoot}]\Resource\Font\MinionPro-BoldIt.otf" />

<appv:Font Path="[{AppVPackageRoot}]\Resource\Font\MinionPro-It.otf" />

<appv:Font Path="[{AppVPackageRoot}]\Resource\Font\MinionPro-Regular.otf" />

<appv:Font Path="[{AppVPackageRoot}]\Resource\Font\MyriadPro-Bold.otf" />

<appv:Font Path="[{AppVPackageRoot}]\Resource\Font\MyriadPro-BoldIt.otf" />

<appv:Font Path="[{AppVPackageRoot}]\Resource\Font\MyriadPro-It.otf" />

<appv:Font Path="[{AppVPackageRoot}]\Resource\Font\MyriadPro-Regular.otf" />

<appv:Font Path="[{AppVPackageRoot}]\Resource\Font\PFM\SY______.PFM" />

<appv:Font Path="[{AppVPackageRoot}]\Resource\Font\SY______.PFB" />

</appv:Fonts>

So I now know all the paths to the fonts that are expected. As I’m already looking in the package I thought I would check to see if these were available.

I first checked the path [{AppVPackageRoot}]\Resource\Font\ and as seen below all the fonts are there.

clip_image004

I then checked the path [{AppVPackageRoot}]\Reader\plug_ins3d\prc and the font is available.

clip_image006

But when I checked for “[{Windows}]\Installer\$PatchCache$” the files or even the folder weren’t captured in the package.

clip_image008

Straight away I had realised what the problem was…

I always try to clean up my packages at the end of the sequencer by deleting files and folders that I see are not required in the package and the installer folder is one of them.

Inadvertently the sequencer had picked up there were fonts in that folder that it referenced in the AppxManifest.xml file, so when you try and launch the application the App-V client reads the AppxManifest.xml and if it can’t find the fonts in the package itself then you will receive this error.

Fix

To fix this issue you have two options:

1. As shown above specify a custom userconfig.xml and disable Virtual Fonts. When you publish the package make sure that the custom xml file is specified.

2. Be very careful on what you delete in the sequencer, as you can see by doing a simple clean up operation caused an error which took some time to track down.

My fix was to re-sequence the application and I ensured that the folder that contained the fonts wasn’t deleted at the end of the sequencing procedure.

Conclusion

I hope this blog has helped you understand why this error occurs and explains what you should do to ensure this doesn’t occur in your environment.

David Falkus | Premier Field Engineer | Application Virtualization