Posts

Disabling Auto-Updates in the reMarkable Companion App: WinSparkle DLL Stub Method

Image
When deploying the reMarkable Companion App in an enterprise environment, the built-in auto-updater creates a recurring problem. The application uses the WinSparkle framework to check for updates on every launch. When a new version is found, it shows a dialog and attempts to download and install the update — which requires administrative privileges that standard users do not have.     [Picture 1] The update dialog appears on every launch when a newer version is available.   The “Skip this version” button does not work. The update downloads regardless, and when the installer attempts to run it fails for non-admin users, showing an error message. The update dialog then reappears on the next launch.     [Picture 2] The updater downloads the installer in the background before failing due to missing admin rights.   Method Overview Method Status Description WinSparkle DLL stub Current R...

How Does App Volumes Direct Mode Work via MSI

Image
In connection with another blog post I’m writing in a series about App Volumes Direct Mode, I wanted to find out exactly how the MSI we create during capture works and what it contains. In this post I have chosen to use a couple of App Volumes MSI-wrapped packages I made myself using their capture tool. After capture, you get a wrapped MSI that contains the App Volumes package (VHD + JSON), either embedded directly or stored inside an internal CAB stream. This also explains why you encounter a CAB file when the package exceeds 2GB. To get the most out of what I'm writing, you should have some familiarity with how MSI files work. In short, an MSI is a database with tables and logic that specifies where and how things should end up on the system. Custom Actions are the logic that performs custom operations within an MSI. This may not be rocket science, but I believe you need the right tools and a decent understanding of MSI to follow the flow. This was previously a gap in my ...