]> git.netwichtig.de Git - user/henk/code/inspircd.git/blob - win/inspircd.nsi
Make two sections "Binaries" and "command handlers" manditory - you won't have a...
[user/henk/code/inspircd.git] / win / inspircd.nsi
1 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\r
2 \r
3                        ;;;; SET THE BUILD TO BE PACKAGED HERE ;;;;\r
4 \r
5 !define BUILD "release"\r
6 \r
7 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\r
8 \r
9 ; HM NIS Edit Wizard helper defines\r
10 !define PRODUCT_NAME "InspIRCd"\r
11 !define PRODUCT_VERSION "1.1"\r
12 !define PRODUCT_PUBLISHER "InspIRCd Development Team"\r
13 !define PRODUCT_WEB_SITE "http://www.inspircd.org/"\r
14 !define PRODUCT_DIR_REGKEY "Software\Microsoft\Windows\CurrentVersion\App Paths\inspircd.exe"\r
15 !define PRODUCT_UNINST_KEY "Software\Microsoft\Windows\CurrentVersion\Uninstall\${PRODUCT_NAME}"\r
16 !define PRODUCT_UNINST_ROOT_KEY "HKLM"\r
17 !define DOT_MAJOR "2"\r
18 !define DOT_MINOR "0"\r
19 \r
20 SetCompressor bzip2\r
21 \r
22 ; MUI 1.67 compatible ------\r
23 !include "MUI.nsh"\r
24 \r
25 ; MUI Settings\r
26 !define MUI_ABORTWARNING\r
27 !define MUI_ICON "inspircd.ico"\r
28 !define MUI_UNICON "inspircd.ico"\r
29 \r
30 ; Welcome page\r
31 !insertmacro MUI_PAGE_WELCOME\r
32 ; License page\r
33 !define MUI_LICENSEPAGE_CHECKBOX\r
34 !insertmacro MUI_PAGE_LICENSE "..\docs\COPYING"\r
35 ; Components page\r
36 !insertmacro MUI_PAGE_COMPONENTS\r
37 ; Directory page\r
38 !insertmacro MUI_PAGE_DIRECTORY\r
39 ; Instfiles page\r
40 !insertmacro MUI_PAGE_INSTFILES\r
41 ; Finish page\r
42 !define MUI_FINISHPAGE_RUN "$INSTDIR\InspGUI.exe"\r
43 !define MUI_FINISHPAGE_RUN_PARAMETERS "--nofork"\r
44 !insertmacro MUI_PAGE_FINISH\r
45 \r
46 ; Uninstaller pages\r
47 !insertmacro MUI_UNPAGE_INSTFILES\r
48 \r
49 ; Language files\r
50 !insertmacro MUI_LANGUAGE "English"\r
51 \r
52 ; Reserve files\r
53 !insertmacro MUI_RESERVEFILE_INSTALLOPTIONS\r
54 \r
55 ; MUI end ------\r
56 \r
57 Name "${PRODUCT_NAME} ${PRODUCT_VERSION}"\r
58 OutFile "Setup.exe"\r
59 InstallDir "$PROGRAMFILES\InspIRCd"\r
60 InstallDirRegKey HKLM "${PRODUCT_DIR_REGKEY}" ""\r
61 ShowInstDetails show\r
62 ShowUnInstDetails show\r
63 \r
64 Function IsDotNetInstalled\r
65  \r
66   StrCpy $0 "0"\r
67   StrCpy $1 "SOFTWARE\Microsoft\.NETFramework" ;registry entry to look in.\r
68   StrCpy $2 0\r
69  \r
70   StartEnum:\r
71     ;Enumerate the versions installed.\r
72     EnumRegKey $3 HKLM "$1\policy" $2\r
73     \r
74     ;If we don't find any versions installed, it's not here.\r
75     StrCmp $3 "" noDotNet notEmpty\r
76     \r
77     ;We found something.\r
78     notEmpty:\r
79       ;Find out if the RegKey starts with 'v'.  \r
80       ;If it doesn't, goto the next key.\r
81       StrCpy $4 $3 1 0\r
82       StrCmp $4 "v" +1 goNext\r
83       StrCpy $4 $3 1 1\r
84       \r
85       ;It starts with 'v'.  Now check to see how the installed major version\r
86       ;relates to our required major version.\r
87       ;If it's equal check the minor version, if it's greater, \r
88       ;we found a good RegKey.\r
89       IntCmp $4 ${DOT_MAJOR} +1 goNext yesDotNetReg\r
90       ;Check the minor version.  If it's equal or greater to our requested \r
91       ;version then we're good.\r
92       StrCpy $4 $3 1 3\r
93       IntCmp $4 ${DOT_MINOR} yesDotNetReg goNext yesDotNetReg\r
94  \r
95     goNext:\r
96       ;Go to the next RegKey.\r
97       IntOp $2 $2 + 1\r
98       goto StartEnum\r
99  \r
100   yesDotNetReg:\r
101     ;Now that we've found a good RegKey, let's make sure it's actually\r
102     ;installed by getting the install path and checking to see if the \r
103     ;mscorlib.dll exists.\r
104     EnumRegValue $2 HKLM "$1\policy\$3" 0\r
105     ;$2 should equal whatever comes after the major and minor versions \r
106     ;(ie, v1.1.4322)\r
107     StrCmp $2 "" noDotNet\r
108     ReadRegStr $4 HKLM $1 "InstallRoot"\r
109     ;Hopefully the install root isn't empty.\r
110     StrCmp $4 "" noDotNet\r
111     ;build the actuall directory path to mscorlib.dll.\r
112     StrCpy $4 "$4$3.$2\mscorlib.dll"\r
113     IfFileExists $4 yesDotNet noDotNet\r
114  \r
115   noDotNet:\r
116     MessageBox MB_OK "You do not have have v${DOT_MAJOR}.${DOT_MINOR} or greater of the .NET framework installed. This is required for the InspIRCd Monitor, however you can still launch the IRCd manually."\r
117  \r
118   yesDotNet:\r
119     ;Everything checks out.  Go on with the rest of the installation.\r
120     \r
121 FunctionEnd\r
122 \r
123 Section "Binary Executable" SEC01\r
124   Call IsDotNetInstalled\r
125   SetOutPath "$INSTDIR"\r
126   SetOverwrite ifnewer\r
127   File "..\bin\${BUILD}\InspGUI.exe"\r
128   CreateDirectory "$SMPROGRAMS\InspIRCd"\r
129   CreateShortCut "$SMPROGRAMS\InspIRCd\InspIRCd.lnk" "$INSTDIR\InspGUI.exe"\r
130   SetOutPath "$INSTDIR\bin"\r
131   SetOverwrite ifnewer\r
132   File "..\bin\${BUILD}\bin\inspircd.exe"\r
133 SectionEnd\r
134 \r
135 Section "Config Files" SEC02\r
136   SetOutPath "$INSTDIR\conf"\r
137   File "..\conf\inspircd.motd.example"\r
138   File "..\conf\inspircd.helpop-full.example"\r
139   File "..\conf\inspircd.helpop.example"\r
140   File "..\conf\inspircd.filter.example"\r
141   File "..\docs\inspircd.conf.example"\r
142   File "..\conf\inspircd.censor.example"\r
143   File "..\conf\inspircd.rules.example"\r
144   File "..\conf\inspircd.quotes.example"\r
145 SectionEnd\r
146 \r
147 Section "Command Handlers" SEC03\r
148   SetOutPath "$INSTDIR\lib"\r
149   File "..\bin\${BUILD}\lib\cmd_*.so"\r
150 SectionEnd\r
151 \r
152 Section "Modules" SEC04\r
153   SetOutPath "$INSTDIR\modules"\r
154   File "..\bin\${BUILD}\modules\*.so"\r
155 SectionEnd\r
156 \r
157 Section -AdditionalIcons\r
158   SetOutPath $INSTDIR\r
159   WriteIniStr "$INSTDIR\${PRODUCT_NAME}.url" "InternetShortcut" "URL" "${PRODUCT_WEB_SITE}"\r
160   CreateShortCut "$SMPROGRAMS\InspIRCd\InspIRCd Website.lnk" "$INSTDIR\${PRODUCT_NAME}.url"\r
161   CreateShortCut "$SMPROGRAMS\InspIRCd\Uninstall.lnk" "$INSTDIR\uninst.exe"\r
162 SectionEnd\r
163 \r
164 Section -Post\r
165   WriteUninstaller "$INSTDIR\uninst.exe"\r
166   WriteRegStr HKLM "${PRODUCT_DIR_REGKEY}" "" "$INSTDIR\bin\inspircd.exe"\r
167   WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "DisplayName" "$(^Name)"\r
168   WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "UninstallString" "$INSTDIR\uninst.exe"\r
169   WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "DisplayIcon" "$INSTDIR\bin\inspircd.exe"\r
170   WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "DisplayVersion" "${PRODUCT_VERSION}"\r
171   WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "URLInfoAbout" "${PRODUCT_WEB_SITE}"\r
172   WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "Publisher" "${PRODUCT_PUBLISHER}"\r
173   MessageBox MB_ICONINFORMATION|MB_OK "InspIRCd was successfully installed. Remember to edit your configuration file in $INSTDIR\conf!"\r
174 SectionEnd\r
175 \r
176 ; Section descriptions\r
177 !insertmacro MUI_FUNCTION_DESCRIPTION_BEGIN\r
178   !insertmacro MUI_DESCRIPTION_TEXT ${SEC01} "Actual Executable"\r
179   !insertmacro MUI_DESCRIPTION_TEXT ${SEC02} "Default Config Files"\r
180   !insertmacro MUI_DESCRIPTION_TEXT ${SEC03} "Command Modules"\r
181   !insertmacro MUI_DESCRIPTION_TEXT ${SEC04} "Optional Modules"\r
182 !insertmacro MUI_FUNCTION_DESCRIPTION_END\r
183 \r
184 \r
185 Function un.onUninstSuccess\r
186   HideWindow\r
187   MessageBox MB_ICONINFORMATION|MB_OK "$(^Name) was successfully removed from your computer."\r
188 FunctionEnd\r
189 \r
190 Function .onInit\r
191   SectionSetFlags ${SEC01} 17\r
192   SectionSetFlags ${SEC03} 17\r
193 FunctionEnd\r
194 \r
195 Function un.onInit\r
196   MessageBox MB_ICONQUESTION|MB_YESNO|MB_DEFBUTTON2 "Are you sure you want to completely remove $(^Name) and all of its components?" IDYES +2\r
197   Abort\r
198 FunctionEnd\r
199 \r
200 Section Uninstall\r
201   Delete "$INSTDIR\${PRODUCT_NAME}.url"\r
202   Delete "$INSTDIR\uninst.exe"\r
203   Delete "$INSTDIR\modules\m_*.so"\r
204   Delete "$INSTDIR\lib\cmd_*.so"\r
205   Delete "$INSTDIR\conf\inspircd.quotes.example"\r
206   Delete "$INSTDIR\conf\inspircd.rules.example"\r
207   Delete "$INSTDIR\conf\inspircd.censor.example"\r
208   Delete "$INSTDIR\conf\inspircd.conf.example"\r
209   Delete "$INSTDIR\conf\inspircd.filter.example"\r
210   Delete "$INSTDIR\conf\inspircd.helpop.example"\r
211   Delete "$INSTDIR\conf\inspircd.helpop-full.example"\r
212   Delete "$INSTDIR\conf\inspircd.motd.example"\r
213   Delete "$INSTDIR\bin\inspircd.exe"\r
214   Delete "$INSTDIR\InspGUI.exe"\r
215 \r
216   Delete "$SMPROGRAMS\InspIRCd\Uninstall.lnk"\r
217   Delete "$SMPROGRAMS\InspIRCd\InspIRCd Website.lnk"\r
218   Delete "$SMPROGRAMS\InspIRCd\InspIRCd.lnk"\r
219 \r
220   RMDir "$SMPROGRAMS\InspIRCd"\r
221   RMDir "$INSTDIR\modules"\r
222   RMDir "$INSTDIR\lib"\r
223   RMDir "$INSTDIR\conf"\r
224   RMDir "$INSTDIR\bin"\r
225   RMDir "$INSTDIR"\r
226 \r
227   DeleteRegKey ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}"\r
228   DeleteRegKey HKLM "${PRODUCT_DIR_REGKEY}"\r
229   SetAutoClose true\r
230 SectionEnd\r