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