base.nsi
5.5 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
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
; NSIS script - ONLY for use with AutoPublish/AutoUpdate system
; //keitsi
;--------------------------------
;Include Modern UI
!include "MUI.nsh"
;--------------------------------
;Configuration
SetCompressor lzma
Name "<$PROJECTNAME$> <$CUSTOMER$> v<$VERSION$>"
; DO NOT CHANGE OutFile "installer_temp.exe" !!! AutoPublish requires this.
; AutoPublish will move the installer according to autopublish.xml file.
OutFile "installer_temp.exe"
;Folder selection page
; InstallDir "$PROGRAMFILES\<$PROJECTNAME$>_<$CUSTOMER$>"
ShowInstDetails show
;--------------------------------
;Interface Settings
!define MUI_ABORTWARNING
;--------------------------------
;Pages
; !insertmacro MUI_PAGE_LICENSE "license.txt"
!insertmacro MUI_PAGE_COMPONENTS
!insertmacro MUI_PAGE_DIRECTORY
!insertmacro MUI_PAGE_INSTFILES
; !define MUI_FINISHPAGE_RUN $INSTDIR\<$BINARYNAMEORIG$>
!insertmacro MUI_PAGE_FINISH
!insertmacro MUI_UNPAGE_CONFIRM
!insertmacro MUI_UNPAGE_INSTFILES
;--------------------------------
;Languages
!insertmacro MUI_LANGUAGE "English"
;--------------------------------
;Installer Sections
Function GetDotNet
IfFileExists "$WINDIR\Microsoft.NET\Framework\v2.0.50727\installUtil.exe" NextStep
MessageBox MB_OK|MB_ICONEXCLAMATION "You must have the Microsoft .NET Framework 2.0 Installed to use this application. $\n$\nClick 'Open' in the following file dialog to download and run the Microsoft .NET Framework Installer..."
ExecShell Open "http://www.microsoft.com/downloads/info.aspx?na=90&p=&SrcDisplayLang=en&SrcCategoryId=&SrcFamilyId=0856eacb-4362-4b0d-8edd-aab15c5e04f5&u=http%3a%2f%2fdownload.microsoft.com%2fdownload%2f5%2f6%2f7%2f567758a3-759e-473e-bf8f-52154438565a%2fdotnetfx.exe" SW_SHOWNORMAL
Quit
NextStep:
FunctionEnd
Function .onInit
; Uber users are so uber that they do not need checks ;)
; Call GetDotNet
Call DetectInstallDir
FunctionEnd
Function DetectInstallDir
;Try to get install folder from obsoleted registry key first, if available
ClearErrors
ReadRegStr $INSTDIR HKCU "Software\<$PROJECTNAME$>" ""
IfErrors 0 instdirfound
ClearErrors
; No obsoleted regkey present, try to read the correct one
ReadRegStr $INSTDIR HKCU "Software\<$PROJECTNAME$>_<$CUSTOMER$>" ""
IfErrors 0 instdirfound
ClearErrors
; No installation dir regkey present at all - use default installation directory.
StrCpy $INSTDIR "$PROGRAMFILES\<$PROJECTNAME$>_<$CUSTOMER$>"
instdirfound:
FunctionEnd
Function .onInstSuccess
Exec '"$INSTDIR\<$BINARYNAMEORIG$>"'
FunctionEnd
Function WaitProgramClose
IfFileExists "$INSTDIR\<$BINARYNAMEORIG$>" loop NotInstalled
loop:
ClearErrors
Delete "$INSTDIR\<$BINARYNAMEORIG$>"
${If} ${Errors}
; Delete failed - means the program is still running. Sleep 2 seconds and retry.
Sleep 3000
ClearErrors
Delete "$INSTDIR\<$BINARYNAMEORIG$>"
${If} ${Errors}
MessageBox MB_OK "Program <$BINARYNAMEORIG$> didn't close in 2 seconds. Automatic update can't continue before it's closed. Please close the program manually and hit OK to retry."
goto loop
${EndIf}
${EndIf}
NotInstalled:
FunctionEnd
Section "!<$PROJECTNAME$> <$CUSTOMER$> <$VERSIONGROUP$> v<$VERSION$>" SecMain
SetShellVarContext current
SetOutPath "$INSTDIR"
Call WaitProgramClose
; SetOverwrite Off
SetOverwrite On
File /oname=cvextern.dll "<$BINARYDIR$>\Resources\cvextern.dll"
File /oname=opencv_highgui220.dll "<$BINARYDIR$>\opencv_highgui220.dll"
File /oname=opencv_core220.dll "<$BINARYDIR$>\opencv_core220.dll"
File /oname=autoupdate.xml "<$BINARYDIR$>\autoupdate.<$CUSTOMER$>.xml"
File /oname=<$BINARYNAMEORIG$> "<$BINARYDIR$>\<$BINARYNAMEOBF$>"
File autoupdate.crt
; this line will be replicated for every non-default existing assembly
; that is referenced to the main project.
File "<$REFERENCEDASSEMBLY$>"
File "<$DEBUGDATABASES$>"
; Write install path to registry (projectname_customer_versiongroup)
WriteRegStr HKCU "Software\<$PROJECTNAME$>_<$CUSTOMER$>" "" $INSTDIR
; Remove obsoleted registry key on install
DeleteRegKey HKCU "Software\<$PROJECTNAME$>"
;Create uninstaller
WriteUninstaller "$INSTDIR\Uninstall.exe"
;Create shortcuts
CreateDirectory "$SMPROGRAMS\<$PROJECTNAME$> <$CUSTOMER$>"
CreateShortCut "$SMPROGRAMS\<$PROJECTNAME$> <$CUSTOMER$>\<$PROJECTNAME$>.lnk" "$INSTDIR\<$BINARYNAMEORIG$>"
CreateShortCut "$SMPROGRAMS\<$PROJECTNAME$> <$CUSTOMER$>\Uninstall <$PROJECTNAME$>.lnk" "$INSTDIR\Uninstall.exe"
; Remove shortcuts from old shortcut naming scheme path, if any
SetShellVarContext all
Delete "$SMPROGRAMS\<$PROJECTNAME$>\<$PROJECTNAME$>.lnk"
Delete "$SMPROGRAMS\<$PROJECTNAME$>\Uninstall <$PROJECTNAME$>.lnk"
RMDir "$SMPROGRAMS\<$PROJECTNAME$>"
SetShellVarContext current
Delete "$SMPROGRAMS\<$PROJECTNAME$>\<$PROJECTNAME$>.lnk"
Delete "$SMPROGRAMS\<$PROJECTNAME$>\Uninstall <$PROJECTNAME$>.lnk"
RMDir "$SMPROGRAMS\<$PROJECTNAME$>"
SectionEnd
;--------------------------------
;Descriptions
LangString DESC_SecMain ${LANG_ENGLISH} "Base (required)"
;--------------------------------
;Uninstaller Section
Section "Uninstall"
Delete "$SMPROGRAMS\<$PROJECTNAME$> <$CUSTOMER$>\*"
RMDir "$SMPROGRAMS\<$PROJECTNAME$> <$CUSTOMER$>"
Delete "$INSTDIR\<$BINARYNAMEORIG$>"
Delete "$INSTDIR\autoupdate.xml"
Delete "$INSTDIR\autoupdate.crt"
; this line will be replicated for every non-default existing assembly
; that is referenced to the main project.
Delete "$INSTDIR\<$REFERENCEDASSEMBLY$>"
Delete "$INSTDIR\<$DEBUGDATABASES$>"
Delete "$INSTDIR\Uninstall.exe"
RMDir "$INSTDIR"
SectionEnd