-
Notifications
You must be signed in to change notification settings - Fork 63
Expand file tree
/
Copy pathinstaller.nsi
More file actions
115 lines (94 loc) · 3.66 KB
/
Copy pathinstaller.nsi
File metadata and controls
115 lines (94 loc) · 3.66 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
;============================================
; CC Desktop Switch - NSIS installer script
;============================================
; Prerequisites:
; 1. Install NSIS 3.0+
; 2. Run: makensis installer.nsi
; 3. Output: CC-Desktop-Switch-Setup-1.0.25.exe
;============================================
!define PRODUCT_NAME "CC Desktop Switch"
!ifndef PRODUCT_VERSION
!define PRODUCT_VERSION "1.0.25"
!endif
!define PRODUCT_PUBLISHER "CC Desktop Switch"
!define PRODUCT_DIR "$PROGRAMFILES64\CC-Desktop-Switch"
!define PRODUCT_UNINST_KEY "Software\Microsoft\Windows\CurrentVersion\Uninstall\${PRODUCT_NAME}"
Name "${PRODUCT_NAME} ${PRODUCT_VERSION}"
OutFile "CC-Desktop-Switch-Setup-${PRODUCT_VERSION}.exe"
InstallDir "${PRODUCT_DIR}"
InstallDirRegKey HKLM "${PRODUCT_UNINST_KEY}" "InstallLocation"
RequestExecutionLevel admin
!include "MUI2.nsh"
!include "FileFunc.nsh"
!include "LogicLib.nsh"
!define MUI_ABORTWARNING
!ifdef ICON_FILE
!define MUI_ICON "${ICON_FILE}"
!define MUI_UNICON "${ICON_FILE}"
!endif
!insertmacro MUI_PAGE_WELCOME
!insertmacro MUI_PAGE_LICENSE "LICENSE.txt"
!insertmacro MUI_PAGE_DIRECTORY
!insertmacro MUI_PAGE_INSTFILES
!define MUI_FINISHPAGE_RUN "$INSTDIR\CC-Desktop-Switch.exe"
!define MUI_FINISHPAGE_RUN_TEXT "Launch ${PRODUCT_NAME}"
!insertmacro MUI_PAGE_FINISH
!insertmacro MUI_UNPAGE_CONFIRM
!insertmacro MUI_UNPAGE_INSTFILES
!insertmacro MUI_LANGUAGE "SimpChinese"
!insertmacro MUI_LANGUAGE "English"
Function .onInit
ReadRegStr $R1 HKLM "${PRODUCT_UNINST_KEY}" "InstallLocation"
ReadRegStr $R0 HKLM "${PRODUCT_UNINST_KEY}" "UninstallString"
${If} $R1 == ""
${AndIf} $R0 != ""
${GetParent} $R0 $R1
${EndIf}
${If} $R1 != ""
StrCpy $INSTDIR $R1
${EndIf}
Call CloseRunningApp
${If} $R0 != ""
DetailPrint "Existing version detected. The installer will uninstall it first."
ExecWait '"$R0" /S'
${EndIf}
FunctionEnd
Function CloseRunningApp
DetailPrint "Closing running ${PRODUCT_NAME} process if needed..."
nsExec::ExecToStack 'taskkill /IM "CC-Desktop-Switch.exe" /T /F'
Pop $0
Pop $1
FunctionEnd
Section "Main" SEC01
SetOutPath "$INSTDIR"
SetOverwrite ifnewer
File /r "dist\CC-Desktop-Switch\*.*"
CreateDirectory "$SMPROGRAMS\${PRODUCT_NAME}"
CreateShortCut "$SMPROGRAMS\${PRODUCT_NAME}\${PRODUCT_NAME}.lnk" "$INSTDIR\CC-Desktop-Switch.exe"
CreateShortCut "$SMPROGRAMS\${PRODUCT_NAME}\Uninstall ${PRODUCT_NAME}.lnk" "$INSTDIR\uninst.exe"
CreateShortCut "$DESKTOP\${PRODUCT_NAME}.lnk" "$INSTDIR\CC-Desktop-Switch.exe"
WriteRegStr HKLM "${PRODUCT_UNINST_KEY}" "DisplayName" "${PRODUCT_NAME}"
WriteRegStr HKLM "${PRODUCT_UNINST_KEY}" "UninstallString" "$INSTDIR\uninst.exe"
WriteRegStr HKLM "${PRODUCT_UNINST_KEY}" "InstallLocation" "$INSTDIR"
WriteRegStr HKLM "${PRODUCT_UNINST_KEY}" "DisplayIcon" "$INSTDIR\CC-Desktop-Switch.exe"
WriteRegStr HKLM "${PRODUCT_UNINST_KEY}" "DisplayVersion" "${PRODUCT_VERSION}"
WriteRegStr HKLM "${PRODUCT_UNINST_KEY}" "Publisher" "${PRODUCT_PUBLISHER}"
WriteRegDWORD HKLM "${PRODUCT_UNINST_KEY}" "NoModify" 1
WriteRegDWORD HKLM "${PRODUCT_UNINST_KEY}" "NoRepair" 1
${GetSize} "$INSTDIR" "/S=0K" $0 $1 $2
IntFmt $0 "0x%08X" $0
WriteRegDWORD HKLM "${PRODUCT_UNINST_KEY}" "EstimatedSize" "$0"
WriteUninstaller "$INSTDIR\uninst.exe"
SectionEnd
Section "Uninstall"
Call un.CloseRunningApp
Delete "$DESKTOP\${PRODUCT_NAME}.lnk"
RMDir /r "$SMPROGRAMS\${PRODUCT_NAME}"
RMDir /r "$INSTDIR"
DeleteRegKey HKLM "${PRODUCT_UNINST_KEY}"
SectionEnd
Function un.CloseRunningApp
nsExec::ExecToStack 'taskkill /IM "CC-Desktop-Switch.exe" /T /F'
Pop $0
Pop $1
FunctionEnd