R6.11 round 1 fix: the installer removes only what it installed
Reinstalling deleted files Ely never installed, and a busy file left a half-removed install. The installer now writes the top-level names it installs (.ely-files, from packaging/windows/files.sh); upgrades and uninstall remove only those, and releases before the list only in the folder the registry names. It checks that every listed file can be written, moves them all into .ely-old, and on any refusal puts them back and exits 2. A file that cannot be written fails the install, which removes what it created and restores the old release. tests/scripts/windows-installer.sh covers each case. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
1 parent
5dafa432f6
commit
23735aee3c
6 files changed
+365
-24
No files matched your search
@@ -20,10 +20,12 @@ stage=$root/target/stage/$slug
|
||||
"$root/packaging/stage.sh" "$slug" "$stage"
|
||||
types=$root/target/stage/$slug-types.nsh
|
||||
"$root/packaging/windows/types.sh" "$slug" >"$types"
|
||||
files=$root/target/stage/$slug-files.nsh
|
||||
"$root/packaging/windows/files.sh" "$stage" "$slug" >"$files"
|
||||
mkdir -p "$dist"
|
||||
out=$dist/$name-$version-windows-x86_64-setup.exe
|
||||
"$makensis" -V2 -INPUTCHARSET UTF8 -DAPP_NAME="$name" -DAPP_SLUG="$slug" -DVERSION="$version" \
|
||||
-DSTAGE="$(cygpath -w "$stage")" -DICON="$(cygpath -w "$root/assets/icons/$slug.ico")" \
|
||||
-DTYPES="$(cygpath -w "$types")" -DOUTFILE="$(cygpath -w "$out")" \
|
||||
-DTYPES="$(cygpath -w "$types")" -DFILES="$(cygpath -w "$files")" -DOUTFILE="$(cygpath -w "$out")" \
|
||||
"$(cygpath -w "$root/packaging/windows/installer.nsi")"
|
||||
echo "$out"
|
||||
Reference in new issue
Block a user