WinSparkle.dll with a stub DLL — no scripts, no delays, no update dialogs. The legacy script described in this post is kept for reference only. See the new post: Disabling Auto-Updates in the reMarkable Companion App: WinSparkle DLL Stub MethodWhen deploying the Remarkable desktop application within a Windows enterprise environment, it introduces challenges due to its update mechanism. The application automatically checks for new updates every time it starts from the internet using WinSparkle.dll, which we would like to control but cannot. The first launch gives us this screen if there is a newer version available. But “Skip this version” doesn’t work.
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
WinSparkle.dll, which is loaded by the application on every launch.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.


