Browse Source

feat(installer): 更新安装程序配置以保留用户数据

- 添加 deleteAppDataOnUninstall 配置项,设置为 false 以保留用户数据
- 创建自定义安装脚本 installer.nsh 处理程序关闭和覆盖安装逻辑
- 实现自定义卸载逻辑,保留 output 目录中的用户生成图片和数据
- 添加程序运行检测和强制关闭功能
- 配置文件删除规则,仅删除程序文件而不删除用户数据目录
panqiuyao 5 days ago
parent
commit
6815192b0d
2 changed files with 62 additions and 1 deletions
  1. 59 0
      build/script/installer.nsh
  2. 3 1
      electron/config/builder.json

+ 59 - 0
build/script/installer.nsh

@@ -0,0 +1,59 @@
+!include "FileFunc.nsh"
+!include "LogicLib.nsh"
+!include "WinMessages.nsh"
+
+!macro preInit
+  ; 检查是否正在运行并关闭程序
+  ${If} ${FileExists} "$INSTDIR\智惠映.exe"
+    ; 如果程序正在运行,先尝试关闭它
+    ExecWait 'taskkill /f /im "智惠映.exe"' $0
+    Sleep 1000
+
+    ; 再次检查是否还有进程在运行
+    ExecWait 'taskkill /f /im "智惠映.exe" /t' $0
+    Sleep 500
+  ${EndIf}
+!macroend
+
+!macro customInstall
+  ; 检测是否已安装,如果是则进行覆盖安装
+  ${If} ${FileExists} "$INSTDIR\智惠映.exe"
+    ; 已安装,进行覆盖安装
+    DetailPrint "检测到已安装版本,正在进行覆盖安装..."
+  ${Else}
+    ; 首次安装
+    DetailPrint "首次安装智惠映..."
+  ${EndIf}
+!macroend
+
+!macro customUnInstall
+  ; 自定义卸载逻辑:保留output目录
+!macroend
+
+!macro customRemoveFiles
+  ; 选择性删除文件,保留output目录
+  ; 删除程序文件,但保留用户数据目录
+
+
+  ; 删除资源文件
+  RMDir /r "$INSTDIR\resources"
+  RMDir /r "$INSTDIR\locales"
+  RMDir /r "$INSTDIR\swiftshader"
+
+  ; 删除其他程序文件
+  Delete "$INSTDIR\*.pak"
+  Delete "$INSTDIR\*.dll"
+  Delete "$INSTDIR\*.dat"
+  Delete "$INSTDIR\*.bin"
+  Delete "$INSTDIR\*.html"
+  Delete "$INSTDIR\*.json"
+  Delete "$INSTDIR\*.exe"
+  Delete "$INSTDIR\*.txt"
+  Delete "$INSTDIR\*.ico"
+
+  ; 保留用户数据目录 - 不要删除这些!
+  ; $INSTDIR\output - 用户生成的图片和数据
+  ; $INSTDIR\extraResources - 可能包含用户文件
+
+  DetailPrint "保留用户数据目录: output"
+!macroend

+ 3 - 1
electron/config/builder.json

@@ -35,7 +35,9 @@
     "installerHeaderIcon": "build/icons/icon.ico",
     "createDesktopShortcut": true,
     "createStartMenuShortcut": true,
-    "shortcutName": "智惠映AI自动拍照机"
+    "shortcutName": "智惠映AI自动拍照机",
+    "deleteAppDataOnUninstall": false,
+    "include": "build/script/installer.nsh"
   },
   "publish": [
     {