|
|
@@ -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
|