Files
pqAutomationApp/installer.nsi

94 lines
3.1 KiB
NSIS
Raw Permalink Normal View History

2026-04-16 16:51:05 +08:00
Unicode True
SetCompressor /SOLID lzma
2026-04-17 11:15:39 +08:00
SetCompressorDictSize 64
2026-04-16 16:51:05 +08:00
RequestExecutionLevel user
!include "MUI2.nsh"
!define PROJECT_ROOT "."
2026-04-17 11:15:39 +08:00
!define DIST_ROOT "${PROJECT_ROOT}\dist\pqAutomationApp"
2026-04-16 16:51:05 +08:00
!define APP_EXE "pqAutomationApp.exe"
!define APP_ID "PQAutomationApp"
!define PYTHON_CMD "python"
!system '"${PYTHON_CMD}" -c "import app_version; print(app_version.APP_NAME)" > app_name.txt'
!system '"${PYTHON_CMD}" -c "import app_version; print(app_version.APP_VERSION)" > app_version.txt'
!searchparse /file "app_name.txt" "" APP_NAME ""
!searchparse /file "app_version.txt" "" APP_VERSION ""
!delfile "app_name.txt"
!delfile "app_version.txt"
2026-04-17 11:15:39 +08:00
!if /FileExists "${DIST_ROOT}\${APP_EXE}"
!else
!error "Executable not found: ${DIST_ROOT}\${APP_EXE}. Please build using PyInstaller first."
!endif
!define UNINSTALL_REG_KEY "Software\Microsoft\Windows\CurrentVersion\Uninstall\${APP_ID}"
!define APP_REG_KEY "Software\${APP_ID}"
2026-04-16 16:51:05 +08:00
Name "${APP_NAME} ${APP_VERSION}"
2026-04-17 11:15:39 +08:00
OutFile "dist\PQAutomationApp_Setup_${APP_VERSION}.exe"
InstallDir "$LOCALAPPDATA\Programs\${APP_ID}"
2026-04-16 16:51:05 +08:00
InstallDirRegKey HKCU "${APP_REG_KEY}" "InstallDir"
!define MUI_ABORTWARNING
2026-04-17 11:15:39 +08:00
!define MUI_ICON "assets\pq.ico"
!define MUI_UNICON "assets\pq.ico"
2026-04-16 16:51:05 +08:00
!insertmacro MUI_PAGE_WELCOME
!insertmacro MUI_PAGE_DIRECTORY
!insertmacro MUI_PAGE_INSTFILES
!insertmacro MUI_PAGE_FINISH
!insertmacro MUI_UNPAGE_CONFIRM
!insertmacro MUI_UNPAGE_INSTFILES
!insertmacro MUI_UNPAGE_FINISH
2026-04-17 11:15:39 +08:00
!insertmacro MUI_LANGUAGE "SimpChinese"
2026-04-16 16:51:05 +08:00
Section "Main Installation" SEC_MAIN
SetOutPath "$INSTDIR"
2026-04-17 11:15:39 +08:00
File "${DIST_ROOT}\${APP_EXE}"
2026-04-16 16:51:05 +08:00
2026-04-17 11:15:39 +08:00
SetOutPath "$INSTDIR\internal"
File /r /x "*.pdb" /x "*.lib" /x "*.exp" /x "*.h" /x "__pycache__" /x "*.pyc" "${DIST_ROOT}\internal\*.*"
2026-04-16 16:51:05 +08:00
2026-04-17 11:15:39 +08:00
IfFileExists "$INSTDIR\settings\pq_config.json" +3 0
SetOutPath "$INSTDIR\settings"
File /oname=pq_config.json "${PROJECT_ROOT}\settings\pq_config.json"
2026-04-16 16:51:05 +08:00
2026-04-17 11:15:39 +08:00
WriteUninstaller "$INSTDIR\Uninstall.exe"
2026-04-16 16:51:05 +08:00
WriteRegStr HKCU "${APP_REG_KEY}" "InstallDir" "$INSTDIR"
WriteRegStr HKCU "${UNINSTALL_REG_KEY}" "DisplayName" "${APP_NAME}"
WriteRegStr HKCU "${UNINSTALL_REG_KEY}" "DisplayVersion" "${APP_VERSION}"
WriteRegStr HKCU "${UNINSTALL_REG_KEY}" "InstallLocation" "$INSTDIR"
2026-04-17 11:15:39 +08:00
WriteRegStr HKCU "${UNINSTALL_REG_KEY}" "DisplayIcon" "$INSTDIR\${APP_EXE}"
2026-04-16 16:51:05 +08:00
WriteRegStr HKCU "${UNINSTALL_REG_KEY}" "Publisher" "Moka"
2026-04-17 11:15:39 +08:00
WriteRegStr HKCU "${UNINSTALL_REG_KEY}" "UninstallString" "$\"$INSTDIR\Uninstall.exe$\""
2026-04-16 16:51:05 +08:00
WriteRegDWORD HKCU "${UNINSTALL_REG_KEY}" "NoModify" 1
WriteRegDWORD HKCU "${UNINSTALL_REG_KEY}" "NoRepair" 1
2026-04-17 11:15:39 +08:00
CreateDirectory "$SMPROGRAMS\${APP_NAME}"
CreateShortcut "$SMPROGRAMS\${APP_NAME}\${APP_NAME}.lnk" "$INSTDIR\${APP_EXE}"
CreateShortcut "$DESKTOP\${APP_NAME}.lnk" "$INSTDIR\${APP_EXE}"
2026-04-16 16:51:05 +08:00
SectionEnd
Section "Uninstall"
2026-04-17 11:15:39 +08:00
Delete "$DESKTOP\${APP_NAME}.lnk"
Delete "$SMPROGRAMS\${APP_NAME}\${APP_NAME}.lnk"
RMDir "$SMPROGRAMS\${APP_NAME}"
Delete "$INSTDIR\${APP_EXE}"
Delete "$INSTDIR\Uninstall.exe"
RMDir /r "$INSTDIR\internal"
RMDir /r "$INSTDIR\settings"
2026-04-16 16:51:05 +08:00
RMDir "$INSTDIR"
DeleteRegKey HKCU "${UNINSTALL_REG_KEY}"
DeleteRegKey HKCU "${APP_REG_KEY}"
SectionEnd