How to deploy fonts using Configuration Manager 2012 R2

In this post we will see steps on how to deploy fonts using Configuration Manager 2012 R2. If you have been tasked with deploying fonts using SCCM this post should help you. A font is a set of printable or displayable text characters in a specific style and size. One of the most popular outline font software programs on today’s computers is TrueType fonts. TrueType fonts come with both Windows and Macintosh operating systems. Normally if you want to install a font the easiest way is to double-click on a font file to open the font preview and select ‘Install‘. But if you want to deploy the same font on multiple computers, we have to make use of script that does the job. When you deploy a script (SCCM Package) to install the font, the user that is logged on to the computer will not be able to use or see these new fonts until they log out and log in back. If you run this script on a standalone computer the fonts are installed and can be seen used by users. The strange thing is when SCCM deploys the same package and runs the same script the fonts gets installed correctly but they appear to be missing. After a log off and login the fonts can be seen.

As mentioned earlier we will use a script to deploy font. You can download the script by clicking on the link.

How to deploy fonts using Configuration Manager 2012 R2

Copy the script file and font to a shared folder. The font that I be deploying is Marlboro font which is available free for Download.

How to deploy fonts using Configuration Manager 2012 R2

Open the script file with notepad or any editor, set the font source path to the location where the font is located. You just need to specify the path up to the folder where the font is present. Save and close the file.

How to deploy fonts using Configuration Manager 2012 R2

In Configuration Manager console, choose Software Library. In the Software Library workspace, expand Application Management, and then choose Packages. Right click Packages and click Create Package. Specify the Name, Source folder and click Next.

How to deploy fonts using Configuration Manager 2012 R2

Choose the Program Type as Standard Program. Click Next.

How to deploy fonts using Configuration Manager 2012 R2

Specify the Name for the standard program, enter the Command line as cscript.exe filename.vbs. Choose the program to run whether or not a user is logged on. click Next.

How to deploy fonts using Configuration Manager 2012 R2

Click Next.

How to deploy fonts using Configuration Manager 2012 R2

The package has been created successfully. Click Close.

How to deploy fonts using Configuration Manager 2012 R2

After the package is created, click on the package and at the bottom pane, click the Programs tab. Right click the Program and click Properties. On the General tab, choose After running option to Configuration Manager logs user off. As I mentioned in the beginning of the post that when the script installs new font, until the user logs out and logs in back the font is not seen. Click Apply and OK.

How to deploy fonts using Configuration Manager 2012 R2

Your package is ready to be deployed. Right click on the package and Distribute the content to the DP. Once the content is available with the DP, right click the package and click Deploy. Deploy the package to the desired collection. Choose the deployment purpose as Available or Required. Since a log off is required after we deploy this package, I will be deploying this package as Available. A log off notification will be seen by user when the software is is installed from the Software Center. After you deploy the package, wait for few minutes, the package will be available for install in the software center. To install the software click Install Selected.

How to deploy fonts using Configuration Manager 2012 R2

After the software is installed, the status is now Pending Logoff. To log off click on Logoff.

How to deploy fonts using Configuration Manager 2012 R2

After the user logs in, on the client computer, launch the Control Panel, click on Fonts and in the search bar type the font name. You can see that the font Marlboro Regular is in list of fonts.

How to deploy fonts using Configuration Manager 2012 R2

On the client computer open execmgr.log file for troubleshooting the deployment. In the below screenshot we see that the Marlboro font has been installed successfully.

How to deploy fonts using Configuration Manager 2012 R2

So how do you verify whether the font is available for use ?. Open Ms Word or notepad, look for changing the default fonts and you will see the installed font under Fonts.

How to deploy fonts using Configuration Manager 2012 R2

 

31 COMMENTS

  1. I’m running this script, and looking in execmgr.log file it executes properly but looking in the fonts directory I cannot see the font.

    If I run the script manually it works. Any suggestions?

  2. Hi Prajwal,
    Excellent work, your script worked like magic for me. with the help of this script i deployed multiple fonts on over 3000 machines. Many Thanks again

      • Hi I have the same problem as Tom Any suggestions please

        Tom July 5, 2018 at 2:05 pm

        Iā€™m running this script, and looking in execmgr.log file it executes properly but looking in the fonts directory I cannot see the font.

        If I run the script manually it works. Any suggestions?

  3. SMarten – you can set that up with SCCM too, just use scheduled deployments. You can set it to run regularly with that. And then, you can just set it to “no” on ‘users can run it independently of assignments’ and you’re golden.

  4. I have an environment where we have to periodically add new client supplied fonts. I wrote a script that looks in an common folder where staff could add fonts for distribution and would install the font if the file wasn’t already on the machine. I want to move this to SCCM as we have since removed local admin rights. I like Prajwal’s having it available in Software Center for On Demand, but I would also like to have the script automatically run silently in the background on a schedule. How can I arrange that?

  5. It’s a lot easier in powershell. Just create a cmd file with this command
    powershell.exe -executionpolicy bypass -file “.\installfonts.ps1”

    #installfonts.ps1
    #########################################################################
    # INSTALL WINDOWS FONTS
    #########################################################################
    # Assumes all font files are in the current directory and/or subfolders

    $invocation = (Get-Variable MyInvocation).Value
    $directorypath = Split-Path $invocation.MyCommand.Path
    $FONTS = 0x14
    $objShell = New-Object -ComObject Shell.Application
    $objFolder = $objShell.Namespace($FONTS)
    # Search for valid Font File Extensions that can be installed in this manner
    $Fontslist = Get-ChildItem -path $directorypath -Recurse -Include *.ttf,*.otf,*.pfm
    # now copy each file
    foreach($FontFile in $FontsList) {
    # Ignore if Font File already exists in C:\Windows\Fonts
    If (!(Test-Path (“$($objFolder.Self.Path)\$($FontFile.Name)”))){
    #write-host $FontFile
    $objFolder.CopyHere($FontFile.FullName)
    }
    }
    $objShell = $null

  6. Hi Prajwal, it appears the download limit is reached, or the file is not available?
    Would you mind sharing it again please?

    Thanks in advance

  7. Hello the script is not available could you please upload it again and re assign the link to all readers of your blog ?
    or if you can share it with me on ( [email protected] )
    awaiting your response highly appreciated šŸ™‚

  8. Thank you Prajwal for this script! It works great with computers that do not have the font that I am deploying. However, I am deploying 30 fonts to around 500 machines that already have some of the fonts installed. When the script tries to install some of the fonts that are installed I’m getting the following pop up that is causing the deployment to time out: “Install Font. The ‘fontname’ font is already installed. Do you want to replace it?” I have made the script silent by using options //B and //Nologo, but is there text I can add to make the install completely silent? Either suppress the pop up or auto answer Yes?

  9. Hi Prajwal, thank you for this script! It works perfectly with computers that do not have the fonts that I am deploying. The issue I am having is I am deploying 31 fonts to almost 500 computers that already have some of the fonts installed. I’m able suppress the script prompts with //B and //Nologo options, but I’m getting the Windows prompt “Install Font. The ‘fontname’ font is already installed. Do you want to replace it. |Yes|No|”. Is there text I can add to the script to either suppress the Windows prompt or have Yes as the auto answer?

  10. This script works if you have read access to that share with your computeraccounts, without those, it will fail. SCCM package will anyways copy whole source directory to a local cache, why to do that twice? What if you dont have access to SMB share but only http?

    Best way is to change strFontSourcePath to point to the directory where this script is executed from, after that, SCCM will download everything to the local cache and do the installation from there.

    Something like:
    strFontSourcePath = objFso.GetParentFolderName(WScript.ScriptFullName)

  11. Hi Prajwal, I want to change the “\sccmsourcesinstall” path to the path the script is running from (in batch it’s “%~dp0”). How can I do this in your vbs?

LEAVE A REPLY

Please enter your comment!
Please enter your name here