Fix the damaged uninstaller that blocked every update from 1.4.35 on
On the TV the update stopped at "Bible App cannot be closed", and uninstalling from Windows Settings showed "Installer integrity check has failed". The cause is the uninstaller, not anything running. An update runs the PREVIOUS version's uninstaller first. Versions 1.4.35-1.4.37 were built on macOS, where electron-builder can't run NSIS to write the uninstaller and rebuilds it in JavaScript (UninstallerReader) from the installer's stub — without NSIS's icon patch. makensis computes the uninstaller's CRC over the stub WITH the uninstaller icon in it, so whenever the two icons differ the result fails NSIS's integrity check. With no app icon configured, NSIS uses its two different default icons, so every Mac-built uninstaller was damaged. Verified with a reimplementation of NSIS's loadHeaders() check: the shipped installers pass; the captured uninstaller failed (0x4235c8f5 vs stored 0x90f7de2c) and passes with this fix (0xb37e533c). - build/installerIcon.ico: NSIS's own default install icon, so electron-builder uses ONE icon for installer and uninstaller (nothing looks different; the app's icon is unchanged). tools/build-win.cjs refuses to build without it. - build/installer.nsh: for installs of 1.4.35-1.4.37 only, clear the old UninstallString so the damaged uninstaller is not run; the new files are copied over the old ones and a fresh, valid uninstaller is written. Every other version keeps the normal uninstall-then-install path. - BUILD-AND-DEPLOY.md: why the icon file must stay. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
@@ -70,6 +70,12 @@ Notes:
|
||||
for you. The TV's updater compares versions numerically and only offers a HIGHER version.
|
||||
- If `WIN_CSC_LINK` / `CSC_LINK` / `CSC_KEY_PASSWORD` / `CSC_KEYCHAIN` exist in your environment,
|
||||
`build-win.cjs` removes them for the build (electron-builder aborts on an EMPTY `WIN_CSC_LINK`).
|
||||
- **Keep `build/installerIcon.ico`.** On macOS electron-builder rebuilds the uninstaller in JavaScript
|
||||
and leaves out NSIS's icon patch; if the installer and uninstaller icons differ, the uninstaller fails
|
||||
NSIS's integrity check, and that version can then never be updated or uninstalled. This file makes
|
||||
both use one icon (NSIS's own default, so nothing looks different). `build-win.cjs` refuses to build
|
||||
without it. Versions 1.4.35–1.4.37 shipped without it; `build/installer.nsh` installs over their
|
||||
damaged uninstallers instead of running them.
|
||||
- On Windows, if the build fails while extracting `winCodeSign` (symlink / permission errors), run the
|
||||
terminal as administrator or turn on Developer Mode, delete
|
||||
`%LOCALAPPDATA%\electron-builder\Cache\winCodeSign`, and build again.
|
||||
|
||||
Reference in New Issue
Block a user