Instead this process automatically downloads an .exe setup update file that attempts to execute, requiring administrative privileges typically unavailable to standard enterprise users. This results in users being frequently interrupted by update popups and needing IT support to install updates, which disrupts workflow.
Analyzing the exact Issue
After doing
some analyzing I found out that the Remarkable application's installer is
created using the free Qt installer framework, and the installed program uses the
WinSparkle
software update library to manage its updates. WinSparkle checks for updates
via a user registry key: HKCU\SOFTWARE\Remarkable\Winsparkle\CheckForUpdates=1
(reg_sz type).
Attempting to hit the “Skip this version” button doesn’t work, and changing the registry value from "1" to "0" to suppress updates is futile, as the application resets all values with each launch. Similarly, I tried removing write access to this registry key which leads to error messages about missing internet connections, which also isn't a viable workaround.
My solution: Create a PowerShell Script to autoclose the updater:
The correct
approach is always contacting the vendor and convince them to fix their own
software, so I contacted Remarkable's support, but they only responded with:
'As per consultation with our technical support specialists, any workaround to
bypass the desktop app's update prompt is not feasible, as every time the app
opens, it prompts for updates.'
In
response, I developed a PowerShell script, "Remarkable Update
Closer," which automatically dismisses the update dialog, thus maintaining
user workflow without interruptions. I recommend compiling it as an .EXE file to
remove all PowerShell windows.
Remarkable Update Closer
- Core Functionality: The script
identifies and closes dialog windows with specific titles generated by the
Remarkable application.
- API Usage: Uses Windows API
(User32.dll) to handle and manipulate windows.
Script Variants
- Remarkable-Update-Closer.ps1: Latest
version have some more CPU optimization, process-aware monitoring, logging
for behavior tracking, and error handling.
Installation and Use
- Prerequisites: PowerShell must
be installed, and for compiling to .exe, PS2EXE is recommended.
Compiling to .exe:
- Install PS2EXE with
Install-Module -Name PS2EXE -Scope CurrentUser.
- Compile with Invoke-PS2EXE
-InputFile "Remarkable-Update-Closer.ps1" -OutputFile
"Remarkable-Update-Closer.exe".
- To run without showing a console window and add an icon, use: Invoke-PS2EXE .\Remarkable-Update-Closer.ps1 -NoConsole -IconFile "C:\Temp\Icon.ico"
Usage:
- The script can be launched at system startup via a scheduled task or integrated into an App-V or MSIX package. My version of the script also checks if remarkable.exe is running; if not, it terminates itself to avoid unnecessary CPU usage. Therefore, if using a scheduled task that runs continuously, you might need to modify the script to remove this check. A startup script is a script that runs automatically each time a user logs in or a system starts, designed to execute specific tasks or configurations. An alternative to scheduled tasks or App-V userscript is to use such a startup script. With an App-V startup process script, you ensure the script only runs when Remarkable is launched, conserving CPU resources. Without App-V, you can create a startup script that first starts Remarkable and then this script, then update the shortcut to point to this new script instead of remarkable.exe.
- Winget and Automatic Updates While Winget could theoretically manage updates automatically, we do not allow Winget traffic through our proxy, and we only trust repositories owned by the software manufacturer. This stance might change with upcoming adjustments by Microsoft to how Winget operates, especially concerning security in Virtual Desktop Infrastructures (VDI).
You can find the complete PowerShell script I've developed here: Remarkable Update Closer on GitHub.
For more on configuring WinSparkle's behavior, particularly regarding updates, please refer directly to the WinSparkle Registry Settings. By implementing this solution, you can ensure that update dialogs no longer disrupt your user’s workflow, allowing them to use Remarkable seamlessly in an enterprise environment.
But beware there will always be a slight delay (1-3s on my test machine) from the update window shows until it closes because of scheduling to conserve CPU cycles and also PowerShell is not the most effective scripting language.