feat(clean): NSIS uninstaller script and include it (#74)
This commit is contained in:
committed by
GitHub
Unverified
parent
e7a36320ee
commit
5946deec05
55
scripts/installer.nsh
Normal file
55
scripts/installer.nsh
Normal file
@@ -0,0 +1,55 @@
|
||||
; ClawX Custom NSIS Uninstaller Script
|
||||
; Provides a "Complete Removal" option during uninstallation
|
||||
; to delete .openclaw config and AppData resources.
|
||||
; Handles both per-user and per-machine (all users) installations.
|
||||
|
||||
!macro customUnInstall
|
||||
; Ask user if they want to completely remove all user data
|
||||
MessageBox MB_YESNO|MB_ICONQUESTION \
|
||||
"Do you want to completely remove all ClawX user data?$\r$\n$\r$\nThis will delete:$\r$\n • .openclaw folder (configuration & skills)$\r$\n • AppData\Local\ClawX (local app data)$\r$\n • AppData\Roaming\ClawX (roaming app data)$\r$\n$\r$\nSelect 'No' to keep your data for future reinstallation." \
|
||||
/SD IDNO IDYES _cu_removeData IDNO _cu_skipRemove
|
||||
|
||||
_cu_removeData:
|
||||
; --- Always remove current user's data first ---
|
||||
RMDir /r "$PROFILE\.openclaw"
|
||||
RMDir /r "$LOCALAPPDATA\ClawX"
|
||||
RMDir /r "$APPDATA\ClawX"
|
||||
|
||||
; --- For per-machine (all users) installs, enumerate all user profiles ---
|
||||
; Registry key HKLM\...\ProfileList contains a subkey for each user SID.
|
||||
; Each subkey has a ProfileImagePath value like "C:\Users\username"
|
||||
; (which may contain unexpanded env vars like %SystemDrive%).
|
||||
; We iterate all profiles, expand the path, skip the current user
|
||||
; (already cleaned above), and remove data for every other user.
|
||||
; RMDir /r silently does nothing if the directory doesn't exist or
|
||||
; we lack permissions, so this is safe for per-user installs too.
|
||||
|
||||
StrCpy $R0 0 ; Registry enum index
|
||||
|
||||
_cu_enumLoop:
|
||||
EnumRegKey $R1 HKLM "SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList" $R0
|
||||
StrCmp $R1 "" _cu_enumDone ; No more subkeys -> done
|
||||
|
||||
; Read ProfileImagePath for this SID
|
||||
ReadRegStr $R2 HKLM "SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList\$R1" "ProfileImagePath"
|
||||
StrCmp $R2 "" _cu_enumNext ; Skip entries without a path
|
||||
|
||||
; ProfileImagePath may contain unexpanded env vars (e.g. %SystemDrive%),
|
||||
; expand them to get the real path.
|
||||
ExpandEnvStrings $R2 $R2
|
||||
|
||||
; Skip the current user's profile (already cleaned above)
|
||||
StrCmp $R2 $PROFILE _cu_enumNext
|
||||
|
||||
; Remove .openclaw and AppData for this user profile
|
||||
RMDir /r "$R2\.openclaw"
|
||||
RMDir /r "$R2\AppData\Local\ClawX"
|
||||
RMDir /r "$R2\AppData\Roaming\ClawX"
|
||||
|
||||
_cu_enumNext:
|
||||
IntOp $R0 $R0 + 1
|
||||
Goto _cu_enumLoop
|
||||
|
||||
_cu_enumDone:
|
||||
_cu_skipRemove:
|
||||
!macroend
|
||||
Reference in New Issue
Block a user