forked from codebndr/python-websocket-daemon
-
Notifications
You must be signed in to change notification settings - Fork 0
/
install_script.nsi
175 lines (124 loc) · 3.46 KB
/
install_script.nsi
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
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
; GetWindowsVersion 3.0 (2013-02-07)
;
; Based on Yazno's function, http://yazno.tripod.com/powerpimpit/
; Update by Joost Verburg
; Update (Macro, Define, Windows 7 detection) - John T. Haller of PortableApps.com - 2008-01-07
; Update (Windows 8 detection) - Marek Mizanin (Zanir) - 2013-02-07
;
; Usage: ${GetWindowsVersion} $R0
;
; $R0 contains: 95, 98, ME, NT x.x, 2000, XP, 2003, Vista, 7, 8 or '' (for unknown)
Function GetWindowsVersion
Push $R0
Push $R1
ClearErrors
ReadRegStr $R0 HKLM \
"SOFTWARE\Microsoft\Windows NT\CurrentVersion" CurrentVersion
IfErrors 0 lbl_winnt
; we are not NT
ReadRegStr $R0 HKLM \
"SOFTWARE\Microsoft\Windows\CurrentVersion" VersionNumber
StrCpy $R1 $R0 1
StrCmp $R1 '4' 0 lbl_error
StrCpy $R1 $R0 3
StrCmp $R1 '4.0' lbl_win32_95
StrCmp $R1 '4.9' lbl_win32_ME lbl_win32_98
lbl_win32_95:
StrCpy $R0 '95'
Goto lbl_done
lbl_win32_98:
StrCpy $R0 '98'
Goto lbl_done
lbl_win32_ME:
StrCpy $R0 'ME'
Goto lbl_done
lbl_winnt:
StrCpy $R1 $R0 1
StrCmp $R1 '3' lbl_winnt_x
StrCmp $R1 '4' lbl_winnt_x
StrCpy $R1 $R0 3
StrCmp $R1 '5.0' lbl_winnt_2000
StrCmp $R1 '5.1' lbl_winnt_XP
StrCmp $R1 '5.2' lbl_winnt_2003
StrCmp $R1 '6.0' lbl_winnt_vista
StrCmp $R1 '6.1' lbl_winnt_7
StrCmp $R1 '6.2' lbl_winnt_8 lbl_error
lbl_winnt_x:
StrCpy $R0 "NT $R0" 6
Goto lbl_done
lbl_winnt_2000:
Strcpy $R0 '2000'
Goto lbl_done
lbl_winnt_XP:
Strcpy $R0 'XP'
Goto lbl_done
lbl_winnt_2003:
Strcpy $R0 '2003'
Goto lbl_done
lbl_winnt_vista:
Strcpy $R0 'Vista'
Goto lbl_done
lbl_winnt_7:
Strcpy $R0 '7'
Goto lbl_done
lbl_winnt_8:
Strcpy $R0 '8'
Goto lbl_done
lbl_error:
Strcpy $R0 ''
lbl_done:
Pop $R1
Exch $R0
FunctionEnd
!macro GetWindowsVersion OUTPUT_VALUE
Call GetWindowsVersion
Pop `${OUTPUT_VALUE}`
!macroend
!define GetWindowsVersion '!insertmacro "GetWindowsVersion"'
# define installer name
outFile "installer.exe"
# set install directory
InstallDir "$PROGRAMFILES\codebender"
# default section start
section
# define output path
setOutPath $INSTDIR
# specify file to go in output path
File /r dist\*
${GetWindowsVersion} $R0
StrCmp $R0 "XP" isxp isnotxp
isxp:
; Install Windows Visual Studio 2008 Runtime (includes the .dlls py2exe needs)
;MessageBox MB_OK "Windows XP detected"
ExecWait '"$INSTDIR\vcredist_x86.exe" /q'
isnotxp:
!include x64.nsh
${if} ${RunningX64}
; 64 bits go here
ExecWait '"$INSTDIR\drivers\Windows\dpinst-amd64.exe" /sw'
${Else}
; 32 bits go here
ExecWait '"$INSTDIR\drivers\Windows\dpinst-x86.exe" /sw'
${EndIf}
# define uninstaller name
writeUninstaller $INSTDIR\uninstaller.exe
SimpleSC::InstallService "codebender" "codebender daemon" "16" "2" "$PROGRAMFILES\codebender\mywinserver.exe" "" "" ""
Pop $0 ; returns an errorcode (<>0) otherwise success (0)
SimpleSC::StartService "codebender" "" 30
Pop $0 ; returns an errorcode (<>0) otherwise success (0)
#-------
# default section end
sectionEnd
# create a section to define what the uninstaller does.
# the section will always be named "Uninstall"
section "Uninstall"
; Stop a service and waits for file release
SimpleSC::StopService "codebender" 1 30
Pop $0 ; returns an errorcode (<>0) otherwise success (0)
SimpleSC::RemoveService "codebender"
Pop $0 ; returns an errorcode (<>0) otherwise success (0)
# Always delete uninstaller first
delete $INSTDIR\uninstaller.exe
# now delete installed file
RMDir /r $INSTDIR
sectionEnd