[FIX] Avoid to update a field if this one is not stored
[odoo/odoo.git] / setup.nsi
1 ##############################################################################
2 #
3 # Copyright (c) 2004-2008 Tiny SPRL (http://tiny.be) All Rights Reserved.
4 #
5 # WARNING: This program as such is intended to be used by professional
6 # programmers who take the whole responsability of assessing all potential
7 # consequences resulting from its eventual inadequacies and bugs
8 # End users who are looking for a ready-to-use solution with commercial
9 # garantees and support are strongly adviced to contract a Free Software
10 # Service Company
11 #
12 # This program is Free Software; you can redistribute it and/or
13 # modify it under the terms of the GNU General Public License
14 # as published by the Free Software Foundation; either version 3
15 # of the License, or (at your option) any later version.
16 #
17 # This program is distributed in the hope that it will be useful,
18 # but WITHOUT ANY WARRANTY; without even the implied warranty of
19 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
20 # GNU General Public License for more details.
21 #
22 # You should have received a copy of the GNU General Public License
23 # along with this program; if not, write to the Free Software
24 # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
25 ###############################################################################
26 !ifndef VERSION
27     !error "Do not forget to specify the version of OpenERP - /DVERSION=<VERSION>"
28 !endif 
29
30 !include "MUI.nsh"
31
32 ;--------------------------------
33 ;General
34
35 ;Name and file
36 Name "OpenERP Server"
37 OutFile "openerp-server-setup-${VERSION}.exe"
38 SetCompressor lzma
39 SetCompress auto
40
41 ;Default installation folder
42 InstallDir "$PROGRAMFILES\OpenERP Server"
43
44 ;Get installation folder from registry if available
45 InstallDirRegKey HKLM "Software\OpenERP Server" ""
46
47 BrandingText "OpenERP Server ${VERSION}"
48
49 ;Vista redirects $SMPROGRAMS to all users without this
50 RequestExecutionLevel admin
51
52 ;--------------------------------
53 ;Variables
54
55 Var MUI_TEMP
56 Var STARTMENU_FOLDER
57
58 ;--------------------------------
59 ;Interface Settings
60
61 !define MUI_ABORTWARNING
62
63 !define REGKEY "SOFTWARE\$(^Name)"
64 !define MUI_LANGDLL_REGISTRY_ROOT HKLM
65 !define MUI_LANGDLL_REGISTRY_KEY ${REGKEY}
66 !define MUI_LANGDLL_REGISTRY_VALUENAME InstallerLanguage
67
68 !insertmacro MUI_RESERVEFILE_LANGDLL
69 ;--------------------------------
70 ;Pages
71
72 !define MUI_ICON ".\pixmaps\openerp-icon.ico"
73 !define MUI_WELCOMEFINISHPAGE_BITMAP ".\pixmaps\openerp-intro.bmp"
74 !define MUI_UNWELCOMEFINISHPAGE_BITMAP ".\pixmaps\openerp-intro.bmp"
75 !define MUI_HEADERIMAGE
76 !define MUI_HEADERIMAGE_BITMAP_NOSTRETCH
77 !define MUI_HEADER_TRANSPARENT_TEXT ""
78 !define MUI_HEADERIMAGE_BITMAP ".\pixmaps\openerp-slogan.bmp"
79 !define MUI_LICENSEPAGE_TEXT_BOTTOM "$(LicenseText)"
80 !define MUI_LICENSEPAGE_BUTTON "$(LicenseNext)"
81
82 !insertmacro MUI_PAGE_WELCOME
83 !insertmacro MUI_PAGE_LICENSE "doc\License.rtf"
84 !insertmacro MUI_PAGE_DIRECTORY
85
86 ;Start Menu Folder Page Configuration
87 !define MUI_STARTMENUPAGE_REGISTRY_ROOT "HKLM" 
88 !define MUI_STARTMENUPAGE_REGISTRY_KEY "Software\OpenERP Server"
89 !define MUI_STARTMENUPAGE_REGISTRY_VALUENAME "OpenERP Server"
90
91 !insertmacro MUI_PAGE_STARTMENU Application $STARTMENU_FOLDER
92
93 !insertmacro MUI_PAGE_INSTFILES
94
95 !define MUI_FINISHPAGE_NOAUTOCLOSE
96 !define MUI_FINISHPAGE_RUN
97 !define MUI_FINISHPAGE_RUN_CHECKED
98 !define MUI_FINISHPAGE_RUN_TEXT "$(FinishPageText)" 
99 !define MUI_FINISHPAGE_RUN_FUNCTION "LaunchLink"
100 !define MUI_FINISHPAGE_SHOWREADME_NOTCHECKED
101 !define MUI_FINISHPAGE_SHOWREADME $INSTDIR\README.txt
102 !insertmacro MUI_PAGE_FINISH
103
104
105 !insertmacro MUI_UNPAGE_WELCOME
106 !insertmacro MUI_UNPAGE_CONFIRM
107 !insertmacro MUI_UNPAGE_INSTFILES
108
109 ;--------------------------------
110 ;Languages
111
112 !insertmacro MUI_LANGUAGE "English"
113 !insertmacro MUI_LANGUAGE "French"
114
115 !macro CreateInternetShortcut FILENAME URL
116         WriteINIStr "${FILENAME}.url" "InternetShortcut" "URL" "${URL}"
117 !macroend
118
119 ;--------------------------------
120 ;Installer Sections
121 Function .onInit 
122 !ifndef ALLINONE
123     ;Language selection dialog
124     Push ""
125     Push ${LANG_ENGLISH}
126     Push English
127     Push ${LANG_FRENCH}
128     Push French
129     Push A ; A means auto count languages
130     ; for the auto count to work the first empty push (Push "") must remain
131     LangDLL::LangDialog "Installer Language" "Please select the language of the installer"
132
133     Pop $LANGUAGE
134     StrCmp $LANGUAGE "cancel" 0 +2
135         Abort
136 !endif
137
138     ClearErrors
139     ReadRegStr $0 HKLM "Software\OpenERP Server" ""
140     IfErrors DoInstall 0
141         MessageBox MB_OK "$(CannotInstallServerText)"
142         Quit
143     DoInstall:
144 FunctionEnd
145
146 Section "OpenERP Server" SecOpenERPServer
147     nsExec::Exec "net stop openerp-service"
148     sleep 2
149
150     SetOutPath "$INSTDIR"
151
152     ;ADD YOUR OWN FILES HERE...
153     File /r "dist\*"
154
155     SetOutPath "$INSTDIR\service"
156     File /r "win32\dist\*"
157     File "win32\start.bat"
158     File "win32\stop.bat"
159
160     ;Store installation folder
161     WriteRegStr HKLM "Software\OpenERP Server" "" $INSTDIR
162
163 !ifndef ALLINONE
164     ;Create uninstaller
165     WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\OpenERP Server" "DisplayName" "OpenERP Server ${VERSION}"
166     WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\OpenERP Server" "UninstallString" "$INSTDIR\Uninstall.exe"
167 !else
168     WriteRegStr HKLM  "Software\OpenERP AllInOne" "UninstallServer" "$INSTDIR\Uninstall.exe"
169 !endif
170     WriteUninstaller "$INSTDIR\Uninstall.exe"
171
172     !insertmacro MUI_STARTMENU_WRITE_BEGIN Application
173         ;Create shortcuts
174         CreateDirectory "$SMPROGRAMS\$STARTMENU_FOLDER"
175         CreateShortCut "$SMPROGRAMS\$STARTMENU_FOLDER\OpenERP Server.lnk" "$INSTDIR\openerp-server.exe"
176         CreateShortCut "$SMPROGRAMS\$STARTMENU_FOLDER\Start service.lnk" "$INSTDIR\service\start.bat"
177         CreateShortCut "$SMPROGRAMS\$STARTMENU_FOLDER\Stop service.lnk" "$INSTDIR\service\stop.bat"
178         CreateShortCut "$SMPROGRAMS\$STARTMENU_FOLDER\Edit config.lnk" "notepad.exe" "$INSTDIR\openerp-server.conf"
179         CreateShortCut "$SMPROGRAMS\$STARTMENU_FOLDER\View log.lnk" "notepad.exe" "$INSTDIR\openerp-server.log"
180 !ifndef ALLINONE
181         CreateShortCut "$SMPROGRAMS\$STARTMENU_FOLDER\Uninstall.lnk" "$INSTDIR\uninstall.exe"
182 !endif
183         !insertmacro CreateInternetShortcut "$SMPROGRAMS\$STARTMENU_FOLDER\Forum" "http://www.openerp.com/forum"
184         !insertmacro CreateInternetShortcut "$SMPROGRAMS\$STARTMENU_FOLDER\Translation" "https://translations.launchpad.net/openobject"
185     !insertmacro MUI_STARTMENU_WRITE_END
186
187     nsExec::Exec '"$INSTDIR\openerp-server.exe" --stop-after-init --logfile "$INSTDIR\openerp-server.log" -s'
188     nsExec::Exec '"$INSTDIR\service\OpenERPServerService.exe" -auto -install'
189
190 SectionEnd
191
192 ;Descriptions
193
194  
195 ;--------------------------------
196 ;Uninstaller Section
197
198 Section "Uninstall"
199     nsExec::Exec "net stop openerp-service"
200     sleep 2
201     nsExec::Exec '"$INSTDIR\service\OpenERPServerService.exe" -remove'
202     sleep 2
203
204     RMDIR /r "$INSTDIR" 
205     !insertmacro MUI_STARTMENU_GETFOLDER Application $MUI_TEMP
206
207     Delete "$SMPROGRAMS\$MUI_TEMP\Forum.url"
208     Delete "$SMPROGRAMS\$MUI_TEMP\Translation.url"
209 !ifndef ALLINONE
210     Delete "$SMPROGRAMS\$MUI_TEMP\Uninstall.lnk"
211 !endif 
212     Delete "$SMPROGRAMS\$MUI_TEMP\OpenERP Server.lnk"
213     Delete "$SMPROGRAMS\$MUI_TEMP\Uninstall.lnk"
214     Delete "$SMPROGRAMS\$MUI_TEMP\Start service.lnk"
215     Delete "$SMPROGRAMS\$MUI_TEMP\Stop service.lnk"
216     Delete "$SMPROGRAMS\$MUI_TEMP\Edit config.lnk"
217     Delete "$SMPROGRAMS\$MUI_TEMP\View log.lnk"
218
219     ;Delete empty start menu parent diretories
220     StrCpy $MUI_TEMP "$SMPROGRAMS\$MUI_TEMP"
221  
222     startMenuDeleteLoop:
223         ClearErrors
224         RMDir $MUI_TEMP
225         GetFullPathName $MUI_TEMP "$MUI_TEMP\.."
226
227         IfErrors startMenuDeleteLoopDone
228
229         StrCmp $MUI_TEMP $SMPROGRAMS startMenuDeleteLoopDone startMenuDeleteLoop
230
231     startMenuDeleteLoopDone:
232
233 !ifndef ALLINONE
234         DeleteRegKey HKEY_LOCAL_MACHINE "SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\OpenERP Server"
235 !else 
236         DeleteRegKey HKLM "Software\OpenERP AllInOne\UninstallServer"
237 !endif
238         DeleteRegKey /ifempty HKLM "Software\OpenERP Server"
239
240 SectionEnd
241
242 Function LaunchLink
243     nsExec::Exec "net start openerp-service"
244 FunctionEnd
245
246 LangString LicenseText ${LANG_ENGLISH} "Usually, a proprietary license is provided with the software: limited number of users, limited in time usage, etc. This Open Source license is the opposite: it garantees you the right to use, copy, study, distribute and modify Open ERP for free."
247 LangString LicenseText ${LANG_FRENCH} "Normalement, une licence propriétaire est fournie avec le logiciel: limitation du nombre d'utilisateurs, limitation dans le temps, etc. Cette licence Open Source est l'opposé: Elle vous garantie le droit d'utiliser, de copier, d'étudier, de distribuer et de modifier Open ERP librement."
248
249 LangString LicenseNext ${LANG_ENGLISH} "Next >"
250 LangString LicenseNext ${LANG_FRENCH} "Suivant >"
251
252 LangString FinishPageText ${LANG_ENGLISH} "Start OpenERP Server"
253 LangString FinishPageText ${LANG_FRENCH} "Lancer le serveur OpenERP"
254
255 ;Language strings
256 LangString DESC_SecOpenERPServer ${LANG_ENGLISH} "OpenERP Server."
257 LangString DESC_SecOpenERPServer ${LANG_FRENCH} "Serveur OpenERP."
258
259 LangString CannotInstallServerText ${LANG_ENGLISH} "Can not install the Open ERP Server because a previous installation already exists on this system. Please uninstall your current installation and relaunch this setup wizard."
260 LangString CannotInstallServerText ${LANG_FRENCH} "Ne peut pas installer le serveur Open ERP parce qu'une installation existe déjà  sur ce système. S'il vous plait, désinstallez votre installation actuelle et relancer l'installeur."
261
262
263 ;Assign language strings to sections
264 !insertmacro MUI_FUNCTION_DESCRIPTION_BEGIN
265     !insertmacro MUI_DESCRIPTION_TEXT ${SecOpenERPServer} $(DESC_SecOpenERPServer)
266 !insertmacro MUI_FUNCTION_DESCRIPTION_END