Adobe Auto Updater Service Issue
Tricerat's engineering team, through customer reports, has identified an issue with Adobe's auto updater that affects the ScrewDrivers Notification Service. This article explains the issue and Tricerat's recommended solution.
What Happened?
Adobe's auto updater — which updates applications like Adobe Reader and Adobe Acrobat — updates its PDF printer as part of the installation process. To do this, it stops the Windows Print Spooler service for the duration of the update, then restarts it when the update is complete.
How Does This Affect ScrewDrivers?
The ScrewDrivers Notification Service (the main Tricerat service responsible for building printers for users) depends on the Print Spooler to function. When the Print Spooler stops, the Notification Service stops with it.
Due to how Windows service dependencies work, there's no built-in mechanism for the ScrewDrivers Notification Service to automatically restart once the Print Spooler comes back up after an Adobe update. As a result, users won't see their ScrewDrivers print queues built after Adobe updater runs, and will likely contact their IT support teams for help.
What Is Tricerat's Response?
Tricerat's engineering team has identified a straightforward solution: a PowerShell script that checks whether the ScrewDrivers Notification Service is stopped and restarts it if the Print Spooler is running.
You can run this script as a one-time operation after the Adobe update process finishes, or set it up as a scheduled task if Adobe updates are automated in your environment.
Test this script in a non-production environment before deploying it broadly.
The PowerShell Script
$spoolerName = "Spooler"
$targetServiceName = "ScrewDrivers Notification Service"
$spooler = Get-Service -Name $spoolerName -ErrorAction SilentlyContinue
$targetService = Get-Service -Name $targetServiceName -ErrorAction SilentlyContinue
# If Print Spooler isn't running, do nothing
if (-not $spooler -or $spooler.Status -ne "Running") {
return
}
# If Spooler is running but ScrewDrivers Notification Service isn't, start it
if ($targetService -and $targetService.Status -ne "Running") {
Start-Service -Name $targetServiceName
}
How the Script Works
This script acts as a dependency watchdog — it ensures the ScrewDrivers Notification Service only restarts when the Print Spooler is already running.
Step 1 — Variable setup
$spoolerName = "Spooler"
$targetServiceName = "ScrewDrivers Notification Service"
Stores the two service names for reuse throughout the script.
Step 2 — Fetch the services
$spooler = Get-Service -Name $spoolerName -ErrorAction SilentlyContinue
$targetService = Get-Service -Name $targetServiceName -ErrorAction SilentlyContinue
Retrieves each service object. The -ErrorAction SilentlyContinue parameter means no error is thrown if a service doesn't exist — the variable simply ends up as $null.
Step 3 — Gate check: is the Spooler running?
if (-not $spooler -or $spooler.Status -ne "Running") {
return
}
If the Print Spooler is missing or not running, the script exits immediately and does nothing. The Spooler must be running before the script takes any action.
Step 4 — Start the ScrewDrivers Notification Service if needed
if ($targetService -and $targetService.Status -ne "Running") {
Start-Service -Name $targetServiceName
}
If the Spooler is running, the script checks the ScrewDrivers Notification Service. If it exists but isn't running, the script starts it.