Files
DeskClaw/scripts/installer.nsh

72 lines
3.1 KiB
NSIS
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
; 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.
; Supports Chinese (Simplified/Traditional) and English UI.
!macro customUnInstall
; Detect language: Chinese Simplified (2052), Chinese Traditional (1028)
; $LANGUAGE is set by the NSIS installer/uninstaller language selection.
StrCmp $LANGUAGE "2052" _cu_useChinese
StrCmp $LANGUAGE "1028" _cu_useChinese
; --- English message (default) ---
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
Goto _cu_afterPrompt
; --- Chinese message ---
_cu_useChinese:
MessageBox MB_YESNO|MB_ICONQUESTION \
"是否完全移除所有 ClawX 用户数据?$\r$\n$\r$\n将删除以下内容$\r$\n • .openclaw 文件夹(配置和技能)$\r$\n • AppData\Local\clawx本地应用数据$\r$\n • AppData\Roaming\clawx漫游应用数据$\r$\n$\r$\n选择""可保留数据以便将来重新安装。" \
/SD IDNO IDYES _cu_removeData IDNO _cu_skipRemove
_cu_afterPrompt:
Goto _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