[MERGE] Merged with main addons
[odoo/odoo.git] / setup.nsi
1 #####################################################################################\r
2 #\r
3 # Copyright (c) 2004-TODAY OpenERP S.A. (http://www.openerp.com) All Rights Reserved.\r
4 #\r
5 # WARNING: This program as such is intended to be used by professional\r
6 # programmers who take the whole responsability of assessing all potential\r
7 # consequences resulting from its eventual inadequacies and bugs\r
8 # End users who are looking for a ready-to-use solution with commercial\r
9 # garantees and support are strongly adviced to contract a Free Software\r
10 # Service Company\r
11 #\r
12 # This program is Free Software; you can redistribute it and/or\r
13 # modify it under the terms of the GNU General Public License\r
14 # as published by the Free Software Foundation; either version 3\r
15 # of the License, or (at your option) any later version.\r
16 #\r
17 # This program is distributed in the hope that it will be useful,\r
18 # but WITHOUT ANY WARRANTY; without even the implied warranty of\r
19 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r
20 # GNU General Public License for more details.\r
21 #\r
22 # You should have received a copy of the GNU General Public License\r
23 # along with this program; if not, write to the Free Software\r
24 # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.\r
25 #####################################################################################\r
26 \r
27 !include 'MUI2.nsh'\r
28 !include 'FileFunc.nsh'\r
29 !include 'LogicLib.nsh'\r
30 !include 'Sections.nsh'\r
31 \r
32 !define PUBLISHER 'OpenERP S.A.'\r
33 \r
34 !ifndef VERSION\r
35     !define VERSION '0'\r
36 !endif\r
37 #!define VERSION "${MAJOR_VERSION}.${MINOR_VERSION}.${REVISION_VERSION}"\r
38 \r
39 !define PRODUCT_NAME "OpenERP Server"\r
40 !define DISPLAY_NAME "${PRODUCT_NAME} ${VERSION}"\r
41 \r
42 !define UNINSTALL_REGISTRY_ROOT HKLM\r
43 !define UNINSTALL_REGISTRY_KEY "Software\Microsoft\Windows\CurrentVersion\Uninstall\${DISPLAY_NAME}"\r
44 \r
45 !define REGISTRY_KEY "Software\${DISPLAY_NAME}"\r
46 \r
47 !define DEFAULT_POSTGRESQL_HOSTNAME 'localhost'\r
48 !define DEFAULT_POSTGRESQL_PORT 5432\r
49 !define DEFAULT_POSTGRESQL_USERNAME 'openpg'\r
50 !define DEFAULT_POSTGRESQL_PASSWORD 'openpgpwd'\r
51 \r
52 Name '${DISPLAY_NAME}'\r
53 Caption "${PRODUCT_NAME} ${VERSION} Setup"\r
54 OutFile "openerp-server-setup-${VERSION}.exe"\r
55 SetCompressor /final /solid lzma\r
56 SetCompress auto\r
57 ShowInstDetails show\r
58 \r
59 XPStyle on\r
60 \r
61 InstallDir "$PROGRAMFILES\OpenERP ${VERSION}"\r
62 InstallDirRegKey HKCU "${REGISTRY_KEY}" ""\r
63 \r
64 BrandingText '${PRODUCT_NAME} ${VERSION}'\r
65 \r
66 RequestExecutionLevel admin\r
67 \r
68 #VIAddVersionKey "ProductName" "${PRODUCT_NAME}"\r
69 #VIAddVersionKey "CompanyName" "${PUBLISHER}"\r
70 #VIAddVersionKey "FileDescription" "Installer of ${DISPLAY_NAME}" \r
71 #VIAddVersionKey "LegalCopyright" "${PUBLISHER}"\r
72 #VIAddVersionKey "LegalTrademark" "OpenERP is a trademark of ${PUBLISHER}"\r
73 #VIAddVersionKey "FileVersion" "${MAJOR_VERSION}.${MINOR_VERSION}.${REVISION_VERSION}"\r
74 #VIProductVersion "${MAJOR_VERSION}.${MINOR_VERSION}.${REVISION_VERSION}"\r
75 \r
76 !insertmacro GetParameters\r
77 !insertmacro GetOptions\r
78 \r
79 Var Option_AllInOne\r
80 Var HasPostgreSQL\r
81 Var cmdLineParams\r
82 \r
83 Var TextPostgreSQLHostname\r
84 Var TextPostgreSQLPort\r
85 Var TextPostgreSQLUsername\r
86 Var TextPostgreSQLPassword\r
87 \r
88 Var HWNDPostgreSQLHostname\r
89 Var HWNDPostgreSQLPort\r
90 Var HWNDPostgreSQLUsername\r
91 Var HWNDPostgreSQLPassword\r
92 \r
93 Var MUI_TEMP\r
94 Var STARTMENU_FOLDER\r
95 \r
96 !define MUI_ABORTWARNING\r
97 !define MUI_ICON ".\install\openerp-icon.ico"\r
98 \r
99 !define MUI_WELCOMEFINISHPAGE_BITMAP ".\install\openerp-intro.bmp"\r
100 !define MUI_UNWELCOMEFINISHPAGE_BITMAP ".\install\openerp-intro.bmp"\r
101 !define MUI_HEADERIMAGE\r
102 !define MUI_HEADERIMAGE_BITMAP ".\install\openerp-slogan.bmp"\r
103 !define MUI_HEADERIMAGE_BITMAP_NOSTRETCH\r
104 !define MUI_HEADER_TRANSPARENT_TEXT ""\r
105 \r
106 !insertmacro MUI_PAGE_WELCOME\r
107 !insertmacro MUI_PAGE_LICENSE ".\LICENSE"\r
108 !define MUI_COMPONENTSPAGE_SMALLDESC\r
109 !insertmacro MUI_PAGE_DIRECTORY\r
110 Page Custom ShowPostgreSQL LeavePostgreSQL\r
111 \r
112 !define MUI_STARTMENUPAGE_REGISTRY_ROOT "HKLM" \r
113 !define MUI_STARTMENUPAGE_REGISTRY_KEY "${REGISTRY_KEY}"\r
114 !define MUI_STARTMENUPAGE_REGISTRY_VALUENAME "${DISPLAY_NAME}"\r
115 \r
116 !insertmacro MUI_PAGE_STARTMENU Application $STARTMENU_FOLDER\r
117 !insertmacro MUI_PAGE_INSTFILES\r
118 \r
119 !define MUI_FINISHPAGE_NOAUTOCLOSE\r
120 !define MUI_FINISHPAGE_LINK $(DESC_FinishPage_Link) \r
121 !define MUI_FINISHPAGE_LINK_LOCATION "http://www.openerp.com/contact"\r
122 !insertmacro MUI_PAGE_FINISH\r
123 \r
124 !insertmacro MUI_UNPAGE_WELCOME\r
125 !insertmacro MUI_UNPAGE_CONFIRM\r
126 !insertmacro MUI_UNPAGE_INSTFILES\r
127 !insertmacro MUI_UNPAGE_FINISH\r
128 \r
129 !insertmacro MUI_LANGUAGE "English"\r
130 !insertmacro MUI_LANGUAGE "French"\r
131 !insertmacro MUI_RESERVEFILE_LANGDLL\r
132 \r
133 !macro CreateInternetShortcut FILENAME URL\r
134         WriteINIStr "${FILENAME}.url" "InternetShortcut" "URL" "${URL}"\r
135 !macroend\r
136 \r
137 ; English\r
138 LangString DESC_FinishPage_Link ${LANG_ENGLISH} "Contact OpenERP for Partnership and/or Support"\r
139 LangString WARNING_HostNameIsEmpty ${LANG_ENGLISH} "The hostname for the connection to the PostgreSQL Server is empty"\r
140 LangString WARNING_UserNameIsEmpty ${LANG_ENGLISH} "The username for the connection to the PostgreSQL Server is empty"\r
141 LangString WARNING_PasswordIsEmpty ${LANG_ENGLISH} "The password for the connection to the PostgreSQL Server is empty"\r
142 LangString WARNING_PortIsWrong ${LANG_ENGLISH} "The port for the connexion to the PostgreSQL Server is wrong (default: 5432)"\r
143 LangString DESC_PostgreSQLPage ${LANG_ENGLISH} "Configure the information for the PostgreSQL connection"\r
144 LangString DESC_PostgreSQL_Hostname ${LANG_ENGLISH} "Hostname"\r
145 LangString DESC_PostgreSQL_Port ${LANG_ENGLISH} "Port"\r
146 LangString DESC_PostgreSQL_Username ${LANG_ENGLISH} "Username"\r
147 LangString DESC_PostgreSQL_Password ${LANG_ENGLISH} "Password"\r
148 \r
149 \r
150 ; French\r
151 LangString DESC_FinishPage_Link ${LANG_FRENCH} "Contactez OpenERP pour un Partenariat et/ou du Support"\r
152 LangString WARNING_HostNameIsEmpty ${LANG_FRENCH} "L'adresse pour la connection au serveur PostgreSQL est vide"\r
153 LangString WARNING_UserNameIsEmpty ${LANG_FRENCH} "Le nom d'utilisateur pour la connection au serveur PostgreSQL est vide"\r
154 LangString WARNING_PasswordIsEmpty ${LANG_FRENCH} "Le mot de passe pour la connection au serveur PostgreSQL est vide"\r
155 LangString WARNING_PortIsWrong ${LANG_FRENCH} "Le port pour la connection au serveur PostgreSQL est erron? (d?faut: 5432)"\r
156 LangString DESC_PostgreSQLPage ${LANG_FRENCH} "Configurez les informations de connection pour le serveur PostgreSQL"\r
157 LangString DESC_PostgreSQL_Hostname ${LANG_FRENCH} "H?te"\r
158 LangString DESC_PostgreSQL_Port ${LANG_FRENCH} "Port"\r
159 LangString DESC_PostgreSQL_Username ${LANG_FRENCH} "Utilisateur"\r
160 LangString DESC_PostgreSQL_Password ${LANG_FRENCH} "Mot de passe"\r
161 \r
162 Section -StopService\r
163     nsExec::Exec "net stop openerp-server-6.0"\r
164     sleep 2\r
165 SectionEnd\r
166 \r
167 Section OpenERP_Server SectionOpenERP_Server\r
168     SetOutPath '$INSTDIR\server'\r
169 \r
170     File /r "dist\*"\r
171 \r
172     SetOutPath "$INSTDIR\service"\r
173     File /r "win32\dist\*"\r
174     File "win32\start.bat"\r
175     File "win32\stop.bat"\r
176 \r
177     !insertmacro MUI_STARTMENU_WRITE_BEGIN Application\r
178         ;Create shortcuts\r
179         CreateDirectory "$SMPROGRAMS\$STARTMENU_FOLDER"\r
180 ;        CreateShortCut "$SMPROGRAMS\$STARTMENU_FOLDER\OpenERP Server.lnk" "$INSTDIR\openerp-server.exe"\r
181 ;        CreateShortCut "$SMPROGRAMS\$STARTMENU_FOLDER\Start service.lnk" "$INSTDIR\service\start.bat"\r
182 ;        CreateShortCut "$SMPROGRAMS\$STARTMENU_FOLDER\Stop service.lnk" "$INSTDIR\service\stop.bat"\r
183 ;        CreateShortCut "$SMPROGRAMS\$STARTMENU_FOLDER\Edit config.lnk" "notepad.exe" "$INSTDIR\openerp-server.conf"\r
184 ;        CreateShortCut "$SMPROGRAMS\$STARTMENU_FOLDER\View log.lnk" "notepad.exe" "$INSTDIR\openerp-server.log"\r
185 ;        CreateShortCut "$SMPROGRAMS\$STARTMENU_FOLDER\OpenERP.lnk" "start" "http://127.0.0.1:8069/"\r
186 ;        CreateShortCut "$SMPROGRAMS\$STARTMENU_FOLDER\Uninstall.lnk" "$INSTDIR\uninstall.exe"\r
187 ;        !insertmacro CreateInternetShortcut "$SMPROGRAMS\$STARTMENU_FOLDER\Forum" "http://www.openerp.com/forum"\r
188 ;        !insertmacro CreateInternetShortcut "$SMPROGRAMS\$STARTMENU_FOLDER\Translation" "https://translations.launchpad.net/openobject"\r
189         !insertmacro CreateInternetShortcut "$SMPROGRAMS\$STARTMENU_FOLDER\OpenERP" "http://127.0.0.1:8069/"\r
190     !insertmacro MUI_STARTMENU_WRITE_END\r
191 \r
192 \r
193     FileOpen $9 '$INSTDIR\install.log' w\r
194     FileWrite $9 "Hostname $TextPostgreSQLHostname$\r$\n"\r
195     FileWrite $9 "Port $TextPostgreSQLPort$\r$\n"\r
196     FileWrite $9 "Username $TextPostgreSQLUsername$\r$\n"\r
197     FileWrite $9 "Password $TextPostgreSQLPassword$\r$\n"\r
198     FileClose $9\r
199 \r
200 # If there is a previous install of the OpenERP Server, keep the login/password from the config file\r
201     WriteIniStr "$INSTDIR\server\openerp-server.conf" "options" "db_host" $TextPostgreSQLHostname\r
202     WriteIniStr "$INSTDIR\server\openerp-server.conf" "options" "db_user" $TextPostgreSQLUsername\r
203     WriteIniStr "$INSTDIR\server\openerp-server.conf" "options" "db_password" $TextPostgreSQLPassword\r
204     WriteIniStr "$INSTDIR\server\openerp-server.conf" "options" "db_port" $TextPostgreSQLPort\r
205     WriteIniStr "$INSTDIR\server\openerp-server.conf" "options" "pg_path" "$INSTDIR\PostgreSQL\bin"\r
206 \r
207     nsExec::Exec '"$INSTDIR\server\openerp-server.exe" --stop-after-init --logfile "$INSTDIR\server\openerp-server.log" -s'\r
208     nsExec::Exec '"$INSTDIR\service\OpenERPServerService.exe" -auto -install'\r
209 SectionEnd\r
210 \r
211 Section -RestartServer\r
212     nsExec::Exec "net start openerp-server-6.0"\r
213     sleep 2\r
214 SectionEnd\r
215 \r
216 Section -Post\r
217     WriteRegExpandStr HKLM "${UNINSTALL_REGISTRY_KEY}" "UninstallString" "$INSTDIR\Uninstall.exe"\r
218     WriteRegExpandStr HKLM "${UNINSTALL_REGISTRY_KEY}" "InstallLocation" "$INSTDIR"\r
219     WriteRegStr HKLM       "${UNINSTALL_REGISTRY_KEY}" "DisplayName" "${DISPLAY_NAME}"\r
220     WriteRegStr HKLM       "${UNINSTALL_REGISTRY_KEY}" "DisplayVersion" "${VERSION}"\r
221     WriteRegStr HKLM       "${UNINSTALL_REGISTRY_KEY}" "Publisher" "${PUBLISHER}"\r
222 ;    WriteRegDWORD HKLM     "${UNINSTALL_REGISTRY_KEY}" "Version" "${VERSION}"\r
223 ;    WriteRegDWORD HKLM     "${UNINSTALL_REGISTRY_KEY}" "VersionMajor" "${MAJOR_VERSION}.${MINOR_VERSION}"\r
224 ;    WriteRegDWORD HKLM     "${UNINSTALL_REGISTRY_KEY}" "VersionMinor" "${REVISION_VERSION}"\r
225 ;    WriteRegStr HKLM       "${UNINSTALL_REGISTRY_KEY}" "HelpLink" "support@openerp.com"\r
226 ;    WriteRegStr HKLM       "${UNINSTALL_REGISTRY_KEY}" "HelpTelephone" "+32.81.81.37.00"\r
227 ;    WriteRegStr HKLM       "${UNINSTALL_REGISTRY_KEY}" "URLInfoAbout" "http://www.openerp.com"\r
228 ;    WriteRegStr HKLM       "${UNINSTALL_REGISTRY_KEY}" "Contact" "sales@openerp.com"\r
229     WriteRegDWORD HKLM     "${UNINSTALL_REGISTRY_KEY}" "NoModify" "1"\r
230     WriteRegDWORD HKLM     "${UNINSTALL_REGISTRY_KEY}" "NoRepair" "1"\r
231     WriteUninstaller "$INSTDIR\Uninstall.exe"\r
232 SectionEnd\r
233 \r
234 Section "Uninstall"\r
235     ; Stop the NT Service\r
236     nsExec::Exec "net stop openerp-server-6.0"\r
237     sleep 2\r
238 \r
239     ; Uninstall the OpenERP Service\r
240     nsExec::Exec '"$INSTDIR\service\OpenERPServerService.exe" -remove'\r
241     sleep 2\r
242 \r
243     Rmdir /r "$INSTDIR"\r
244 \r
245     !insertmacro MUI_STARTMENU_GETFOLDER Application $MUI_TEMP\r
246 \r
247     Delete "$SMPROGRAMS\$MUI_TEMP\Forum.url"\r
248     Delete "$SMPROGRAMS\$MUI_TEMP\Translation.url"\r
249     Delete "$SMPROGRAMS\$MUI_TEMP\Uninstall.lnk"\r
250     Delete "$SMPROGRAMS\$MUI_TEMP\OpenERP Server.lnk"\r
251     Delete "$SMPROGRAMS\$MUI_TEMP\Uninstall.lnk"\r
252     Delete "$SMPROGRAMS\$MUI_TEMP\Start service.lnk"\r
253     Delete "$SMPROGRAMS\$MUI_TEMP\Stop service.lnk"\r
254     Delete "$SMPROGRAMS\$MUI_TEMP\Edit config.lnk"\r
255     Delete "$SMPROGRAMS\$MUI_TEMP\View log.lnk"\r
256     ;\r
257     ;Delete empty start menu parent diretories\r
258     StrCpy $MUI_TEMP "$SMPROGRAMS\$MUI_TEMP"\r
259  \r
260     startMenuDeleteLoop:\r
261         ClearErrors\r
262         RMDir $MUI_TEMP\r
263         GetFullPathName $MUI_TEMP "$MUI_TEMP\.."\r
264 \r
265         IfErrors startMenuDeleteLoopDone\r
266 \r
267         StrCmp $MUI_TEMP $SMPROGRAMS startMenuDeleteLoopDone startMenuDeleteLoop\r
268 \r
269     startMenuDeleteLoopDone:\r
270 \r
271     ; Clean the Registry\r
272     DeleteRegKey HKLM "${UNINSTALL_REGISTRY_KEY}"\r
273 SectionEnd\r
274 \r
275 Function .onInit\r
276     Push $R0\r
277 \r
278     ${GetParameters} $cmdLineParams\r
279     ClearErrors\r
280 \r
281     Pop $R0\r
282 \r
283     StrCpy $Option_AllInOne 0\r
284     StrCpy $HasPostgreSQL 0\r
285 \r
286     StrCpy $TextPostgreSQLHostname ${DEFAULT_POSTGRESQL_HOSTNAME}\r
287     StrCpy $TextPostgreSQLPort ${DEFAULT_POSTGRESQL_PORT}\r
288     StrCpy $TextPostgreSQLUsername ${DEFAULT_POSTGRESQL_USERNAME}\r
289     StrCpy $TextPostgreSQLPassword ${DEFAULT_POSTGRESQL_PASSWORD}\r
290 \r
291     Push $R0\r
292     ${GetOptions} $cmdLineParams '/allinone' $R0\r
293     IfErrors +2 0\r
294     StrCpy $Option_AllInOne 1\r
295     Pop $R0\r
296 \r
297     StrCmp $Option_AllInOne 1 AllInOneMode\r
298     StrCmp $Option_AllInOne 0 NoAllInOneMode\r
299 \r
300     AllInOneMode:\r
301         MessageBox MB_OK|MB_ICONINFORMATION "All In One"\r
302 \r
303     NoAllInOneMode:\r
304     \r
305     !insertmacro MUI_LANGDLL_DISPLAY\r
306 \r
307     ClearErrors\r
308     EnumRegKey $0 HKLM "SOFTWARE\PostgreSQL" 0\r
309     IfErrors DoInstallPostgreSQL 0\r
310         StrCpy $HasPostgreSQL 1\r
311 \r
312     DoInstallPostgreSQL:\r
313 FunctionEnd\r
314 \r
315 Function PostgreSQLOnBack\r
316 FunctionEnd\r
317 \r
318 Function ShowPostgreSQL\r
319     SectionGetFlags ${SectionOpenERP_Server} $0\r
320     IntOp $0 $0 & ${SF_SELECTED}\r
321     IntCmp $0 ${SF_SELECTED} LaunchPostgreSQLConfiguration\r
322     Abort\r
323     LaunchPostgreSQLConfiguration:\r
324 \r
325     nsDialogs::Create /NOUNLOAD 1018\r
326     Pop $0\r
327 \r
328     ${If} $0 == error\r
329         Abort\r
330     ${EndIf}\r
331 \r
332     GetFunctionAddress $0 PostgreSQLOnBack\r
333     nsDialogs::OnBack $0\r
334 \r
335     ${NSD_CreateLabel} 0 0 100% 10u $(DESC_PostgreSQLPage)\r
336     Pop $0\r
337 \r
338     ${NSD_CreateLabel} 0 45 60u 12u $(DESC_PostgreSQL_Hostname)\r
339     Pop $0\r
340     ${NSD_CreateText} 100 45 150u 12u $TextPostgreSQLHostname\r
341     Pop $HWNDPostgreSQLHostname\r
342 \r
343     ${NSD_CreateLabel} 0 75 60u 12u $(DESC_PostgreSQL_Port)\r
344     Pop $0\r
345     ${NSD_CreateNumber} 100 75 150u 12u $TextPostgreSQLPort\r
346     Pop $HWNDPostgreSQLPort\r
347     ${NSD_CreateLabel} 0 105 60u 12u $(DESC_PostgreSQL_Username)\r
348     Pop $0\r
349     ${NSD_CreateText} 100 105 150u 12u $TextPostgreSQLUsername\r
350     Pop $HWNDPostgreSQLUsername\r
351     ${NSD_CreateLabel} 0 135 60u 12u $(DESC_PostgreSQL_Password)\r
352     Pop $0\r
353     ${NSD_CreateText} 100 135 150u 12u $TextPostgreSQLPassword\r
354     Pop $HWNDPostgreSQLPassword\r
355 \r
356     nsDialogs::Show\r
357 FunctionEnd\r
358 \r
359 Function LeavePostgreSQL\r
360     # Before to leave the PostgreSQL configuration screen, we check the values\r
361     # from the inputs, to be sure we have the right values\r
362 \r
363     ${NSD_GetText} $HWNDPostgreSQLHostname $TextPostgreSQLHostname\r
364     ${NSD_GetText} $HWNDPostgreSQLPort $TextPostgreSQLPort\r
365     ${NSD_GetText} $HWNDPostgreSQLUsername $TextPostgreSQLUsername\r
366     ${NSD_GetText} $HWNDPostgreSQLPassword $TextPostgreSQLPassword\r
367 \r
368     StrLen $1 $TextPostgreSQLHostname\r
369     ${If} $1 == 0\r
370         MessageBox MB_ICONEXCLAMATION|MB_OK $(WARNING_HostNameIsEmpty)\r
371         Abort\r
372     ${EndIf}\r
373 \r
374     ${If} $TextPostgreSQLPort <= 0\r
375     ${OrIf} $TextPostgreSQLPort > 65535\r
376         MessageBox MB_ICONEXCLAMATION|MB_OK $(WARNING_PortIsWrong)\r
377         Abort\r
378     ${EndIf}\r
379 \r
380     StrLen $1 $TextPostgreSQLUsername\r
381     ${If} $1 == 0\r
382         MessageBox MB_ICONEXCLAMATION|MB_OK $(WARNING_UserNameIsEmpty)\r
383         Abort\r
384     ${EndIf}\r
385 \r
386     StrLen $1 $TextPostgreSQLPassword\r
387     ${If} $1 == 0\r
388         MessageBox MB_ICONEXCLAMATION|MB_OK $(WARNING_PasswordIsEmpty)\r
389         Abort\r
390     ${EndIf}\r
391 FunctionEnd\r
392 \r