Video Screencast Help
Symantec to Separate Into Two Focused, Industry-Leading Technology Companies. Learn more.
Endpoint Virtualization Community Blog

Problems with SVS and Fonts? Try This

Created: 18 Apr 2006 • Updated: 29 Jul 2010 • 25 comments
Jared Payne's picture
+2 2 Votes
Login to vote

If fonts are a sore spot between you and virtualized applications, here's a cure from Jared Payne that should clear things up.

A number of users have reported problem with fonts when using SVS. The reported problem causes applications like Outlook to not look and act properly. The only guaranteed workaround is to copy the fonts from the layer to the base system. You can manually do this by using the advanced editor in SVS Admin to drag the appropriate fonts to the system fonts directory.

Since you probably do not want to do this on every machine you manage I have created a tool to help you out; CopyFonts. CopyFonts needs to be run as a user with permission to add fonts. If your users are administrators, you can run this application whenever you want. If your users are not administrators, you will need to guarantee that this application is run as an administrator.

SVS has the ability to run an application when a layer's state changes. Jeremy Hurren has written a tip How to Launch an Application or Run a Script when a Layer's State Changes that describes all of the events you can run. SVS requires you to be an administrator to do any SVS operations except activate and deactivate. Ideally, you can set up the OnPostImport event to run the CopyFonts program for you.

Here are the steps you'll need to take.

  1. Get CopyFonts.exe to a known place on your client machine.
  2. Browse to HKLM\System\Altiris\FSL\
  3. Locate the key that is associated with the layer you want (in my case 10).
  4. Create a value named OnPostImport that is a Multi-String Value.
  5. Modify the value of OnPostImport to run CopyFonts when the layer is imported.
  6. *Due to an SVS issue repeat steps 3-5 on the peer sub layer.
  7. Export your newly modified layer.
  8. Send it out to your environment.

CopyFonts can be run a number of ways. For example, you can run CopyFonts as a software delivery task. If you come up with a new way to use CopyFonts, share it with the rest of us by leaving a comment.

*SVS may look in the wrong sub layer for the OnPostImport value, so you need to have it in both the sub layers. OnPostImport is the only event that has this problem.

Comments 25 CommentsJump to latest comment

apascucci's picture

One word to summarize your tip: juuucy.

CopyFonts saved me hours of headache.

Thx,
Anthony

-2
Login to vote
erikw's picture

Copyfonts is a great tool to work around the initial problem. The problem exists by a registry failure in the SvScmd.exe.

A faster, easier to manage, and better way is to overcome the registry failure.

Regards
Erik

Regards Erik www.DinamiQs.com Dinamiqs is the home of VirtualStorm (www.virtualstorm.org)

*************************************************************
If your issue has been solved, Please mark it as solved
***********

-4
Login to vote
riva11's picture

Wow, now fonts issues could be solved in few times.

Thanks

+2
Login to vote
erikw's picture

Riva11,

I found out the problem, and have a way to solve it. In two weeks i will travel to Utah to support Randy with my ideas, and that will hopefully lead to a new version.

Regards
Erik
www.svs4u.nl

Regards Erik www.DinamiQs.com Dinamiqs is the home of VirtualStorm (www.virtualstorm.org)

*************************************************************
If your issue has been solved, Please mark it as solved
***********

-2
Login to vote
SK's picture

Could you please let me know if your solution is now available or not?

Connect Etiquette: "Mark as Solution" those posts which resolve your problem, and give a thumbs up to useful comments, articles and downloads.

-2
Login to vote
rpfenninger's picture

Jared, you just saved my life!
I had trouble with a couple of special fonts from Office 2007 I need for my Master Thesis. After copying and installing them into the base, everything came back to normal.

Thanks a lot

Cheers
Roland

0
Login to vote
robertser's picture

How would one include copyfonts in the layer and still run it PostImport? This way it would always run when you distributed the layer to someone.

0
Login to vote
erikw's picture

Go to www.altiris.com, and go to search
type in pre-activate.
You will find the command line to do a pre activate
The complete commando and how to put it in the layer is there written.
After you've done this, everytime you run the app the copyfontwill run.
When you wish to do it in the layer with a pre import, you need Wise studio express or wise packaging studio.
With these you are able to create a pre import.

Please remember that a post import runs after the import and a pre import runs before the import.

Regards
Erik
www.deltaisis.nl

Regards Erik www.DinamiQs.com Dinamiqs is the home of VirtualStorm (www.virtualstorm.org)

*************************************************************
If your issue has been solved, Please mark it as solved
***********

-2
Login to vote
Jordan's picture

You'd want to use the meta directory in addition the the OnEvent funtion that erik mentioned. If you don't then the fonts won't get pulled out of the layer.

More info at: http://juice.altiris.com/article/1744/getting-more...

If a forum post solves your problem please flag is as the solution

0
Login to vote
brewsie's picture

Bit of a basic user so answers in a friendly format please! - I want to deploy the reg entry changes to multiple PCs, then deploy the layer containing the fonts, but the reg key varies depaending on what layers have been previously installed to a PC e.g. on computer1 the key might be 1 with a sublayer key 2, then Computer2 the key might be D with a sub key E. Obviously I have to specify the key in my regedit changes and if it doesn't match the computer, copyfont doesn't run. Any ideas?
Thanks

0
Login to vote
erikw's picture

Brewsie,

What you want is definetly possible, but you have to create a very good and stable VBS script to do the job for you.
I have no way to do this for you.
Sorry

Regards
Erik
www.dvs4sbc.nl

Regards Erik www.DinamiQs.com Dinamiqs is the home of VirtualStorm (www.virtualstorm.org)

*************************************************************
If your issue has been solved, Please mark it as solved
***********

0
Login to vote
Jordan's picture

Care to expound a little more?

What registory changes? And why do they need to be done before you run copyfont?

If a forum post solves your problem please flag is as the solution

+4
Login to vote
Brad Horrocks's picture

Just a thought.... we use the Deployment Server to deploy our SVS layers. With that I created a job that will deploy the Office layers then run copyfonts automatically so it doesn't matter what the key or sub-keys are. Reduces a tremendous amount of time and headaches for our dispatch techs!

0
Login to vote
brewsie's picture

Brad, thanks for the tip- it sounds like a sensible way to go- but! how do I get copyfont to run independenly of registry values or using the meta folder? If I just run the exe I get nothing? I've searched for info on how to use copyfont, but there isn't much out there! Help!

-4
Login to vote
brewsie's picture

Thanks for suggestion, I've had a play and I'm all sorted now. I deployed the layer containing the fonts, then runa separate job, copying the copyfonts.exe to the local machine then running a script to run c:\copyjob.exe . this runs a treat! Thanks

0
Login to vote
brewsie's picture

I am wanting to run copyfont on deployment of an svs layer, but the info from Jared Payne above suggests you need to know the registry key relating to the specific layer to do this. I'll try deploying the svs layer through DC then doing a separate deployment job as suggested to run copyfont- will this install fonts from all imported layers on the machine at the time of running?

+2
Login to vote
Jordan's picture

no, all you need to know is the layer's name or the guid. All this particular article talks about is how to make copyfonts run after you import in a layer--which is all you need the registry for.

http://juice.altiris.com/download/269/copyfonts has the syntax for running the exe is there, as long as copyfonts is in the base (or the layer's meta directory) the program will work as intended.

It's very simple and I think that you're overcomplicating it.

If a forum post solves your problem please flag is as the solution

-2
Login to vote
Gary_L's picture

How do you deal with the 'open file - security warning' that comes up when Copyfonts runs? This is the warning that sez 'the publisher could not be verified - are you sure you want to run this software?'

I would like to deploy this silently and have included it as a postimport onevent using Wise (copyfonts.exe has been delivered to the clients ahead of time).

Thank you for this solution and for any help with this question.

Gary

0
Login to vote
Jordan's picture

Outside of the person who created the app signing it (which won't happen) you'll have to disable the windows feature that causes the prompt. Not sure what it is, think it's a service, but I do know you can do it.

If a forum post solves your problem please flag is as the solution

0
Login to vote
erikw's picture

Jordan, I agree that copyfonts should be signed, but everybody can sign drivers. Just get yourself a certificate instance and follow the Microsoft WHQL certifiaction. Then you can doanlowd the opropiate software and you can sign your own drivers.
How did you think i managed to sign a 64bit svs driver?

Regards
Erik
www.DinamiQs.com

Regards Erik www.DinamiQs.com Dinamiqs is the home of VirtualStorm (www.virtualstorm.org)

*************************************************************
If your issue has been solved, Please mark it as solved
***********

+1
Login to vote
jdulle's picture

This is a great utility it really saved me packaging Excel 2007.  I have another package with Font issues that I am using it on I am having some oddities with.  I have confirmed copying the fonts locally than deleting them from the read-only layer of the package resolved the issue.  So I have a script I have added as a OnPostImport event.  It copies the copyfonts.exe to c:\windows\system32 than execute %SYS32%\copyfonts c9a81d0c-9ecb-4424-8cf4-34d9da923c0a -LAYER -REMOVE.  Its copying the fonts into the base but it is not deleting them from the read-only layer.  This seems a little odd to me.  I have run the script manually on machine and it does the same thing.  I don't have the ability to test the app myself to see if its ok I am dependent on the end user testing for me.  Anyone know why it would not be deleting from layer itself?  I am assuming the package will continue to look at the layer first and the base second and will have the same issue with fonts not showing up in the app until I remove from the layer.

0
Login to vote
Jordan's picture

the reason why it's not working is copyfonts is running from the layer.

When you use an OnEvent action to copy to c:\windows\system32 that copy action is getting saved in the layer.  To get around this place copyfonts in the meta directory of the layer (you'll have to create this yourself) and just run it from the meta folder, more information on the meta folder for onEvents is here on Connect just run a search for OnEvents and look for the article "Getting more from SVS's OnEvents Functionality".

If a forum post solves your problem please flag is as the solution

+1
Login to vote
Pascal KOTTE's picture

www-secure.symantec.com/connect/articles/getting-more-svss-onevent-functionality

~Pascal @ Kotte.net~ Do you speak French? Et utilisez Altiris: venez nous rejoindre sur le GUASF

+2
Login to vote
jrentas's picture

So... What exactly happens when CopyFonts run? Does it search "C:\WINDOWS\FONTS" in the layer or does it search the entire layer for fonts and then copies those fonts over to the font folder in the base system. If so what happens to the fonts that are in the layer when you activate the layer? Do they overlap with those fonts that were just copied to the base system and does that cause issues?

We believe that, because the fonts in the layer get copied to the base (pre-activate script), we should add to that pre-activate script a sequence to delete the fonts from the layer to avoid conflict upon activation.

-4
Login to vote
Jordan's picture

Copy fonts does have a flag that will delete the fonts from the layer.  It probably just over writes the font, if the names are the same, with the one in the layer.

Now not all fonts need to be removed from a layer with SWV 6.1 (SVS 2.x still requires this) only fonts that have the same name but different file sizes.  I wrote a blog post explaining this in more detail a few days ago.

If a forum post solves your problem please flag is as the solution

0
Login to vote