This blog post will delve into the font deployment process on Windows 10 and 11 devices via the Intune admin center. Various deployment methods exist, including the Win32 App method, the Master Packager tool, and the PowerShell script.
To install a font on Windows devices, download the font file. You can download it from many websites, such as Google Fonts. After you download the font file, Right-click on it, then select the Install option to make it available across the device for use in all applications.
When you install a font on the Windows device, it gets copied into C:\Windows\fonts directory. It will also create a registry entry at HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Fonts location.
We will use the Win32 App deployment method [Recommended] in the upcoming sections. For information on other deployment methods, please refer to the step-by-step guide Simplify Fonts Deployment in Intune: 3 Methods.
Step-by-Step guide
Table of Contents
Ways to Install Fonts on Windows Devices using Intune
Multiple methods are available to install fonts on Windows devices. Let’s explore the various ways in the list below:
- Using Win32App Deployment – The best method for deploying font files on Windows devices involves the Win32 App deployment method. While this method requires PowerShell scripts, it offers improved deployment reporting, and you can easily uninstall fonts from users’ devices.
- Using Master Packager – The Master Packager tool allows you to create and edit MSI files. We will use the community edition of this tool to create an MSI Installer file that includes our custom Font files. Then, using the Line of Business App option, we will deploy this MSI file.
- Using a Powershell Script – This method involves creating a PowerShell script to deploy font files. The script essentially copies the font file to the C:\Windows\fonts directory. You can then deploy the script using Intune. For a step-by-step guide on deploying a PowerShell script, refer to the following guide: How to deploy a PowerShell script using Intune
Method 1 – Deploy Fonts Using Win32 App Method [Recommended]
The first method we will discuss involves using the Win32 App method on the Intune admin center. This approach requires PowerShell scripts to deploy font files on Windows 10 and 11 devices. This is the best option, and my recommended method as well. Let’s check the steps:
STEP 1 – Download Font files
You can download font files from Google Fonts open-source font library. Notably, a license is not necessary to use Google fonts. To gain further insights into their licensing and usage, refer to the FAQs page on their website.
STEP 2 – Create an IntuneWin file
Follow the steps below to create the IntuneWin file for the deployment. For more detailed information on creating an IntuneWin file, refer to How to create an IntuneWin file.
- Create an empty folder named DeployFonts or any name you like.
- Create a subfolder under DeployFonts and call it Fonts.
- Copy all font files with .ttf or .otf extension to the Fonts folder.
- Create two PowerShell scripts, InstallFonts.ps1 and Uninstallfonts.ps1, in the DeployFonts folder. [Copy and Paste the script code below into these files].
InstallFonts.ps1
<# .SYNOPSIS Install Fonts on users devices .DESCRIPTION Below script will Install all fonts copied inside Fonts directory to a target device .NOTES Name : Font Installation Script Author : Jatin Makhija Version : 1.0.0 DateCreated: 31-Jan-2023 Blog : https://cloudinfra.net .LINK https://cloudinfra.net #> #Get all fonts from Fonts Folder $Fonts = Get-ChildItem .\Fonts $regpath = "HKLM:\Software\Microsoft\Windows NT\CurrentVersion\Fonts" foreach ($Font in $Fonts) { $fontbasename = $font.basename If ($Font.Extension -eq ".ttf") {$fontvalue = $Font.Basename + " (TrueType)"} elseif($Font.Extension -eq ".otf") {$fontvalue = $Font.Basename + " (OpenType)"} else {Write-Host " Font Extenstion not supported " -ForegroundColor blue -backgroundcolor white; break} $fontname = $font.name if (Test-path C:\windows\fonts\$fontname) { Write-Host "$fontname already exists." } Else { Write-Host "Installing $fontname" #Installing Font $null = Copy-Item -Path $Font.fullname -Destination "C:\Windows\Fonts" -Force -EA Stop } Write-Host "Creating reg keys..." #Creating Font Registry Keys $null = New-ItemProperty -Name $fontvalue -Path $regpath -PropertyType string -Value $Font.name -Force -EA Stop }
UninstallFonts.ps1
<# .SYNOPSIS Uninstall Fonts from users devices .DESCRIPTION Below script will Uninstall all fonts copied inside Fonts directory to a target device .NOTES Name : Font Uninstallation Script Author : Jatin Makhija Version : 1.0.0 DateCreated: 31-Jan-2023 Blog : https://cloudinfra.net .LINK https://cloudinfra.net #> #Get all fonts from Fonts Folder $Fonts = Get-ChildItem .\Fonts $regpath = "HKLM:\Software\Microsoft\Windows NT\CurrentVersion\Fonts" foreach ($Font in $Fonts) { $fontname = $font.name $fontbasename = $font.basename If ($Font.Extension -eq ".ttf") {$fontvalue = $Font.Basename + " (TrueType)"} elseif($Font.Extension -eq ".otf") {$fontvalue = $Font.Basename + " (OpenType)"} else {Write-Host " Font Extenstion not supported " -ForegroundColor blue -backgroundcolor white; break} #Remove Font from Windows folder Remove-Item C:\windows\fonts\$fontname -force -EA SilentlyContinue #Delete corresponding registry keys for the font Remove-ItemProperty -Path $regpath -Name $fontvalue -force -EA SilentlyContinue }
- Download Microsoft Win32 Content Prep Tool. It’s a zip file, Extract its contents into a folder.
- Create an empty folder, for example, C:\output, or anywhere else.
- Repackage the DeployFonts folder to a .intunewin file using IntuneWinAppUtil.exe in the Microsoft Win32 Content Prep Tool.
.\IntuneWinAppUtil.exe -c "C:\DeployFonts\" -s InstallFonts.ps1 -o C:\output
- Once the command is executed successfully, you can check the c:\output folder where the .intunewin file is created. We will use this file later to create a Windows app (win32) deployment.
STEP 3: Create Win32 App Deployment to Deploy Fonts
Now, we have .Intunewin file created, Let’s check the deployment steps:
- Sign in to the Intune admin center.
- Click on Apps and then click on All Apps.
- Click on + Add and Select Windows app (Win32) from the app type.
App Information
Click on Select app package file and browse .Intunewin file. Provide Information in the mandatory fields below. The rest of the fields are optional but useful for application documentation and troubleshooting issues.
- Name – Provide a unique name of the application. This name will show up on the Company portal app. For example, Fonts Installation
- Description – Provide a useful description.
- Publisher – Provide Publisher information. For example, Microsoft.
Program Tab
Provide the Install command, uninstall command, Install behavior, and Device restart behavior. Click on Next to proceed.
- Install command: powershell.exe -Executionpolicy Bypass -File .\Installfonts.ps1
- Uninstall command: powershell.exe -Executionpolicy Bypass -File .\Uninstallfonts.ps1
- Install behavior: System
- Device restart behavior: No specific Action
Requirements Tab
You can specify the requirements that devices must meet to deploy the app. If your devices mix 32-bit and 64-bit types, check the boxes for 32-bit and 64-bit in the Operating system architecture drop-down. Else, go with 64-bit.
- Operating System Architecture: 64-bit
- Minimum operating system: Select the minimum OS requirement for this deployment.
Detection Rules
Select Manually configure detection rules and click on +Add to add a detection rule.
- Rules Format: Select Manually configure detection rules
- Rule Type: File
- Path: Provide the location of C:\windows\fonts and the name of the font file to detect.
Create one rule for each font file to detect all fonts under C:\windows\fonts directory. For example:
- Rule type: File
- Path: C:\windows\fonts\
- File or folder: Alata-Regular.ttf
- Detection Method: File or Folder exists.
- As I will deploy 4 font files, four detection rules will be required to detect each font file to confirm the Installation.
Assignments Tab
Select Add groups and opt for an Entra security group containing Windows 10/11 devices or Entra ID users. Adding devices to the group and targeting them is recommended for a controlled deployment. Once testing proves successful, you can expand the deployment by including additional devices in the group.
Review + Create
Review the deployment and click on Create to start the deployment process.
STEP 4 – Monitoring Fonts Deployment Progress
You can follow the below steps to monitor the installation:
From the Intune admin center > Apps > All apps. Click on the deployment and check the Overview page to show the deployment status.
Method 2 – Use Master Packager Tool to Deploy Fonts
The Master Packager Tool is an application packaging tool used to Create and Edit Microsoft Windows Installer (MSI) files. In the following steps, we will learn how to package custom font files into the .MSI installer file. Subsequently, we can deploy this MSI installer to install our custom font files on Windows 10 and 11 devices.
This method is ideal if you prefer not to use PowerShell scripts and seek a straightforward way to deploy font files. Additionally, it offers the flexibility to easily edit the MSI file, allowing you to add or remove font files from the package.
For detailed information and a step-by-step guide on deploying fonts via Intune using the Master Packager Tool, refer to the link: Simplify Fonts Deployment in Intune: 3 Methods.
Method 3 – Using Powershell Script to Deploy Fonts
The last method involves deploying font files using a PowerShell script through the Intune admin center. Follow the steps below:
- Download the Powershell script from my Github Repo: InstallFonts.ps1
- Modify the script to download the fonts from the Internet or a shared location.
- Deploy the Powershell script using the reference guide: How to deploy a PowerShell script using Intune.
Sync Intune Policies
The device check-in process might not begin immediately. If you’re testing this policy on a test device, you can manually kickstart Intune sync from the device itself or remotely through the Intune admin center.
Alternatively, you can use PowerShell to force the Intune sync on Windows devices. Restarting the device is another way to trigger the Intune device check-in process.
End-user Experience
After the deployment, Fonts will be installed silently in the background on the user’s devices. Users may see a pop-up notification related to the deployment, which is configurable using the Show all toast notifications setting.
1. Verifying fonts installation from C:\windows\fonts directory
As we have deployed below 4 fonts on the devices, Let’s verify if the fonts are installed on target devices successfully. Login on one of the target devices and follow the below steps:
- Go to the folder C:\windows\fonts and check the font files.
- Alata-Regular.ttf
- Monda-Bold.ttf
- Monda-Regular.ttf
- Paprika-Regular.ttf
2. Verifying fonts Installation using Registry Editor
You can also verify the installation of fonts from the registry editor, by using below steps:
- Press Win + R to open a Run dialog box.
- Type regedit and press Enter.
- Browse to
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Fonts
and search for the Font names on the right-hand side to ensure the deployed fonts entries exist.
3. Verify the fonts Installation using Microsoft Word
You can launch one of the Microsoft Office applications, e.g., Word, and confirm if the font is showing in the list. This will also confirm the font has been deployed successfully via Intune.
4. Verify the fonts Installation using IntuneManagementExtension Logs file
You can verify the font installation using the IntuneManagementExtension log file as well. Go to C:\ProgramData\Microsoft\IntuneManagementExtension\Logs and open the most recent IntuneManagementExtention.log file.
Search for the app name or PowerShell script name (Installfonts.ps1) to find the log related to Font Installation deployment.
How to Uninstall fonts using Intune
Using the same fonts deployment created in previous steps, we can remove these fonts from the devices. We have already configured powershell.exe -Executionpolicy Bypass -File .\Uninstallfonts.ps1
command in the Program tab while creating the deployment.
Please note you can uninstall the same fonts deployed using Intune, as the font files are contained in the .intunewin file. As we deployed 4 fonts using intune Alata-Regular.ttf, Monda-Bold.ttf, Monda-Regular.ttf, Paprika-Regular.ttf, we can uninstall these fonts using below steps:
- From the Intune admin center, Click on Apps on the left-hand side.
- Click on All apps.
- Click on your fonts deployment app.
- Click on Properties under Manage.
- Scroll down to find Assignments and click on Edit next to it.
To uninstall these fonts from the devices, remove the devices from the required list and include them in the uninstall section.
I have tried through Win32, and it worked fine.
Thanks