Welcome to our new blog post about How to deploy Fonts with Microsoft Intune. Fonts play an essential role in creating visually appealing and engaging content. However, managing fonts across multiple devices can be a challenging task for IT administrators. This is where Microsoft Intune comes in handy. Microsoft Intune is a cloud-based service that helps IT professionals manage and secure company devices. One of its features is the ability to deploy fonts to devices managed by Intune, making it easier for organizations to ensure consistency in branding and communication across all devices. In this blog post, we will explore how to deploy fonts using Microsoft Intune, and how this feature can benefit your organization.
Table of Contents
What are we going to set up?
In the first step, we will make sure, that we have the fonts files ready. For the install and uninstall we will use two PowerShell scripts which we will create. With the Intune Win App Utility we are going to compile the packages into a intunewin file which we then are going to upload and deploy with Micrsosoft Intune. If you need some more guidance, you can watch the YouTube video below. There you will find a step-by-step tutorial on how you can deploy Fonts.
How to deploy Fonts with Microsoft Intune
Step 1: Create a Win32 file
To deploy Fonts with Intune we first need to create the IntuneWin file. Follow these steps:
- Create a new folder called Output on C:
- Create a new folder called DeployFonts on C:
- In the Deployfonts folder create another called Fonts
- Copy all your Fonts into the C:\DeployFonts\Fonts folder
- We need to create two Powershell scripts
- Copy the bellow and name it InstallFonts.ps1
<#
.SYNOPSIS
Install Fonts on users devices
.NOTES
Name : Font Installation Script
Author : whackasstech.com
Version : 1.0.0
DateCreated: 13-Apr-2023
Blog : https://whackasstech.com
#>
#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
}
- Create a second Powershell script. Copy the bellow and name it UninstallFonts.ps1
<#
.SYNOPSIS
Uninstall Fonts from users devices
.NOTES
Name : Font Uninstallation Script
Author : whackasstech.com
Version : 1.0.0
DateCreated: 13-Apr-2023
Blog : https://whackasstech.com
.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 the official Microsoft Intune Win App Tool
- Open the Intune Win App Tool.
In the Intune Win App Tool define the following:
- Please specify the source folder: C:\DeployFonts
- Please specify the setup file: InstallFonts.ps1
- Please specify the output folder: C:\output
- Do you want to specify catalog folder: N
In your Output Folder, there should be a new file called InstallFonts.intunewin
We need this file in Step 2
Step 2: Import and deploy with Microsoft Intune
- Go to endpoint.microsoft.com
- Click on Apps
- Click on Windows
- Click on Add
- Chose App type Windows app (win32)
- Click on Select
- Click on Select app package file
- Upload your IntuneWin file which is located in C:\output
- Click on OK
- Click on Next
- Here you can change the Settings. I leave it as it is. Dont forget to enter a Publisher
- Click on Next
Enter the following Commands:
- 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
- Click on Next
On the Requirements tab enter:
- Operating system architecture: 64-bit
- Minimum operating system: Windows 10 1607
- Click on Next
For the Detection rule it can be a little bit tricky. Some fonts will be installed into the C:\windows\fonts folder but other will only be visible in the registry. Because of that we first need to validate where the font will be installed.
- Install the font on your own computer
- Check in C:\windows\fonts if the font is in that folder.
If your font is visible in the C:\windows\fonts folder you can use the detection rule with File. If not use the Detection Rule with Registry.
Detection Rule with File
Only use this detection rule when the font is installed in C:\windows\fonts folder.
- Rules format: Manually configure detection rules
- Click on Add
- Rule type: File
- Path: C:\windows\fonts
- File or Folder: [Enter here the name of the font File] In my case I enter akashi.ttf. If you have multiple Fonts, create for each Font a seperate Rule
- Detection method: File or folder exists
- Associated with a 32-bit app on 64-bit clients: No
- Click on Ok and on Next
Detection Rule with Registry
Use this detection rule when the font is NOT installed in C:\windows\fonts folder. We first need to get some information from the Registry.
- Open the Registry
- Navigate to Computer\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Fonts
Search for your font. We need to copy the Name of the font we want to deploy. For demonstration I will pick Arial Italic (TrueType)
- Rules format: Manually configure detection rules
- Click on Add
- Rule type: Registry
- Key path: HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Fonts
- Value name: [Enter here the name of the font] In my case I enter Arial Italic (TrueType). If you have multiple Fonts, create for each Font a seperate Rule
- Detection method: Value exists
- Associated with a 32-bit app on 64-bit clients: No
- Click on Ok and on Next
- In the Dependencies tab, enter the scope when applicable. Click on Next.
- In the Supersedence tab, enter the scope when applicable. Click on Next.
- On the Assignments tab assign the Policy to a Group or to All User
- Click on Next
- And Review + Create the Policy
Congratulations! You have successfully deployed the policy.
Conclusion
In this blog post we Learn aboutHow to deploy Fonts with Microsoft Intune. We first made sure, we have our Fonts and PowerShell scripts ready. After, we compiled the files with the official Microsoft Intune Win App Utility. And last we uploaded and deployed the Fonts with Microsoft Intune. We hope this guide has provided you with valuable insights to improve your device management strategy. Did you enjoy this article? Dont forget to follow us and share this article. If you have any questions or need further assistance, feel free to reach out or leave a comment below.
Thank you so much!
Thanks but it fails for me with error 0x80070001 in intune
Was the font installed despite the error code? Usually the detection rule is not quite correct.
Also make sure that your font name has no spaces. This also gave me an error once.
If you still have errors, you are welcome to send me an email with screenshots info@whackasstech.com. Then I can have a look at it.
Hi Max, thanks for the write up! I ran into an error message which was a detection error “0x87D1041C”. I was using c:\windows\font File detection method. Changed rule to Registry using “Computer\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Fonts”, Value name: “Your Font Name (TrueType)” and Value exists with success. Hope this helps some people, thank again.
Hey James, Thank you for your comment. I appreciate it very much. As I have received several comments I have adjusted this in the blog post. Thanks again, Regards Max