installer.nsh 1.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859
  1. !include "FileFunc.nsh"
  2. !include "LogicLib.nsh"
  3. !include "WinMessages.nsh"
  4. !macro preInit
  5. ; 检查是否正在运行并关闭程序
  6. ${If} ${FileExists} "$INSTDIR\智惠映.exe"
  7. ; 如果程序正在运行,先尝试关闭它
  8. ExecWait 'taskkill /f /im "智惠映.exe"' $0
  9. Sleep 1000
  10. ; 再次检查是否还有进程在运行
  11. ExecWait 'taskkill /f /im "智惠映.exe" /t' $0
  12. Sleep 500
  13. ${EndIf}
  14. !macroend
  15. !macro customInstall
  16. ; 检测是否已安装,如果是则进行覆盖安装
  17. ${If} ${FileExists} "$INSTDIR\智惠映.exe"
  18. ; 已安装,进行覆盖安装
  19. DetailPrint "检测到已安装版本,正在进行覆盖安装..."
  20. ${Else}
  21. ; 首次安装
  22. DetailPrint "首次安装智惠映..."
  23. ${EndIf}
  24. !macroend
  25. !macro customUnInstall
  26. ; 自定义卸载逻辑:保留output目录
  27. !macroend
  28. !macro customRemoveFiles
  29. ; 选择性删除文件,保留output目录
  30. ; 删除程序文件,但保留用户数据目录
  31. ; 删除资源文件
  32. RMDir /r "$INSTDIR\resources"
  33. RMDir /r "$INSTDIR\locales"
  34. RMDir /r "$INSTDIR\swiftshader"
  35. ; 删除其他程序文件
  36. Delete "$INSTDIR\*.pak"
  37. Delete "$INSTDIR\*.dll"
  38. Delete "$INSTDIR\*.dat"
  39. Delete "$INSTDIR\*.bin"
  40. Delete "$INSTDIR\*.html"
  41. Delete "$INSTDIR\*.json"
  42. Delete "$INSTDIR\*.exe"
  43. Delete "$INSTDIR\*.txt"
  44. Delete "$INSTDIR\*.ico"
  45. ; 保留用户数据目录 - 不要删除这些!
  46. ; $INSTDIR\output - 用户生成的图片和数据
  47. ; $INSTDIR\extraResources - 可能包含用户文件
  48. DetailPrint "保留用户数据目录: output"
  49. !macroend