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.
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"
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.
I then checked the path [{AppVPackageRoot}]\Reader\plug_ins3d\prc and the font is available.
But when I checked for “[{Windows}]\Installer\$PatchCache$” the files or even the folder weren’t captured in the package.
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