source: orange/install-scripts/install3.nsi @ 10222:ba0d61857ad7

Revision 10222:ba0d61857ad7, 8.4 KB checked in by Janez Demšar <janez.demsar@…>, 2 years ago (diff)

merge

Line 
1Name "Orange"
2Icon OrangeInstall.ico
3UninstallIcon OrangeInstall.ico
4licensedata license.txt
5licensetext "Acknowledgments and License Agreement"
6
7OutFile ${OUTFILENAME}
8
9!include "LogicLib.nsh"
10
11!ifdef COMPLETE
12    !macro installmodule modulename installfile checkfile
13        ${Unless} ${FileExists} ${checkfile}
14            File ${PARTY}\${installfile}
15            ExecWait $DESKTOP\${installfile}
16            Delete $DESKTOP\${installfile}
17        ${EndUnless}
18    !macroend
19!else
20    Var MissingModules
21    !macro installmodule modulename installfile checkfile
22        ${Unless} ${FileExists} ${checkfile}
23        ${AndUnless} modulename == ""
24            ${If} $MissingModules == ""
25                StrCpy $MissingModules ${modulename}
26            ${Else}
27                StrCpy $MissingModules "$MissingModules, ${modulename}"
28            ${EndIf}
29        ${EndUnless}
30    !macroend
31!endif
32
33!include "${PARTY}\names.inc"
34
35AutoCloseWindow true
36ShowInstDetails nevershow
37
38Var PythonDir
39Var AdminInstall
40Var SITEDIR
41
42Page license
43Page instfiles
44
45!define SHELLFOLDERS \
46  "Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders"
47 
48
49Section Uninstall
50    MessageBox MB_YESNO "Are you sure you want to remove Orange?$\r$\n$\r$\nThis won't remove any 3rd party software possibly installed with Orange, such as Python or Qt,$\r$\n$\r$\nbut make sure you have not left any of your files in Orange's directories!" /SD IDYES IDNO abort
51    RmDir /R "$INSTDIR"
52    ${If} $AdminInstall = 0
53        SetShellVarContext all
54    ${Else}
55        SetShellVarContext current     
56    ${Endif}
57    RmDir /R "$SMPROGRAMS\Orange"
58
59    ReadRegStr $0 HKCU "${SHELLFOLDERS}" AppData
60    StrCmp $0 "" 0 +2
61      ReadRegStr $0 HKLM "${SHELLFOLDERS}" "Common AppData"
62    StrCmp $0 "" +2 0
63      RmDir /R "$0\Orange"
64   
65    ReadRegStr $PythonDir HKLM Software\Python\PythonCore\${NPYVER}\InstallPath ""
66    ${If} $PythonDir != ""
67        DeleteRegKey HKLM "SOFTWARE\Python\PythonCore\${NPYVER}\PythonPath\Orange"
68        DeleteRegKey HKLM "SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\Orange"
69    ${Else}
70        DeleteRegKey HKCU "SOFTWARE\Python\PythonCore\${NPYVER}\PythonPath\Orange"
71        DeleteRegKey HKCU "SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\Orange"
72    ${Endif}
73   
74    Delete "$DESKTOP\Orange Canvas.lnk"
75
76    DeleteRegKey HKEY_CLASSES_ROOT ".ows"
77    DeleteRegKey HKEY_CLASSES_ROOT "OrangeCanvas"
78
79    MessageBox MB_OK "Orange has been succesfully removed from your system.$\r$\nPython and other applications need to be removed separately.$\r$\n$\r$\nYou may now continue without rebooting your machine." /SD IDOK
80  abort:
81SectionEnd
82
83
84!macro GetPythonDir
85    ${If} $AdminInstall == 0
86        ReadRegStr $PythonDir HKCU Software\Python\PythonCore\${NPYVER}\InstallPath ""
87        StrCmp $PythonDir "" 0 trim_backslash
88        ReadRegStr $PythonDir HKLM Software\Python\PythonCore\${NPYVER}\InstallPath ""
89        StrCmp $PythonDir "" return
90        MessageBox MB_OK "Please ask the administrator to install Orange$\r$\n(this is because Python was installed by him, too)."
91        Quit
92    ${Else}
93        ReadRegStr $PythonDir HKLM Software\Python\PythonCore\${NPYVER}\InstallPath ""
94        StrCmp $PythonDir "" 0 trim_backslash
95        ReadRegStr $PythonDir HKCU Software\Python\PythonCore\${NPYVER}\InstallPath ""
96        StrCmp $PythonDir "" return
97        StrCpy $AdminInstall 0
98    ${EndIf}
99
100    trim_backslash:
101    StrCpy $0 $PythonDir "" -1
102    ${If} $0 == "\"
103        StrLen $0 $PythonDir
104        IntOp $0 $0 - 1
105        StrCpy $PythonDir $PythonDir $0 0
106    ${EndIf}
107
108    return:
109!macroend
110       
111!ifdef COMPLETE
112
113Section ""
114        StrCmp $PythonDir "" 0 have_python
115
116        SetOutPath $DESKTOP
117        StrCpy $0 ""
118        askpython:
119            MessageBox MB_YESNOCANCEL "Orange installer will first launch installation of Python ${NPYVER}.$\r$\nWould you like it to install automatically?$\r$\n(Press No for Custom installation of Python, Cancel to cancel installation of Orange." /SD IDYES IDYES installsilently IDNO installpython
120                MessageBox MB_YESNO "Orange cannot run without Python.$\r$\nAbort the installation?" IDNO askpython
121                    Quit
122        installsilently:
123            StrCpy $0 "/Qb-"
124        installpython:
125            File ${PARTY}\${NAME_PYTHON}
126            ${If} $AdminInstall == 1
127                ExecWait 'msiexec.exe /i "$DESKTOP\${NAME_PYTHON}" ALLUSERS=1 $0' $0
128            ${Else}
129                ExecWait 'msiexec.exe /i "$DESKTOP\${NAME_PYTHON}" $0' $0
130            ${EndIf}
131            Delete "$DESKTOP\${NAME_PYTHON}"
132       
133            !insertMacro GetPythonDir
134            StrCmp $PythonDir "" 0 have_python
135                MessageBox MB_OK "Python installation failed.$\r$\nOrange installation cannot continue."
136                Quit
137
138        have_python:
139
140        IfFileExists $PythonDir\lib\site-packages\PythonWin have_pythonwin
141            MessageBox MB_YESNO "Do you want to install PythonWin (recommended)?$\r$\n(Orange installation will continue afterwards.)" /SD IDYES IDNO have_pythonwin
142            IfFileExists "$SysDir\${NAME_MFC}" have_mfc
143                SetOutPath $SysDir
144                File ${PARTY}\${NAME_MFC}
145            have_mfc:
146            SetOutPath $DESKTOP
147            File ${PARTY}\${NAME_PYTHONWIN}
148            ExecWait "$DESKTOP\${NAME_PYTHONWIN}"
149            Delete "$DESKTOP\${NAME_PYTHONWIN}"
150           
151        have_pythonwin:
152
153        MessageBox MB_OK "Installation will check for various needed libraries$\r$\nand launch their installers if needed."
154        SetOutPath $DESKTOP
155        !insertMacro modules
156SectionEnd
157!endif
158
159
160Section ""
161    ReadRegStr $0 HKCU "${SHELLFOLDERS}" AppData
162    StrCmp $0 "" 0 +2
163      ReadRegStr $0 HKLM "${SHELLFOLDERS}" "Common AppData"
164    StrCmp $0 "" not_installed_before 0
165
166    IfFileExists "$0\Orange" 0 not_installed_before
167        ask_remove_old:
168        MessageBox MB_YESNOCANCEL "Another version of Orange has been found on the computer.$\r$\nDo you want to keep the existing settings for canvas and widgets?$\r$\n$\r$\nYou can usually safely answer 'Yes'; in case of problems, re-run this installation." /SD IDYES IDYES not_installed_before IDNO remove_old_settings
169            MessageBox MB_YESNO "Abort the installation?" IDNO ask_remove_old
170                Quit
171
172        remove_old_settings:
173        RmDir /R "$0\Orange"
174
175    not_installed_before:
176
177    StrCpy $SITEDIR "$PythonDir\lib\site-packages"
178   
179    IfFileExists "$SITEDIR\orange\orngEnviron.py" 0 no_old_orange_conflict
180        Rename "$SITEDIR\orange" "$SITEDIR\orange-old-backup"
181       
182    no_old_orange_conflict:
183   
184    StrCpy $INSTDIR  "$PythonDir\lib\site-packages\Orange"
185    SetOutPath "$INSTDIR"
186    File /r /x .hg ${ORANGEDIR}\*
187
188    CreateDirectory "$SMPROGRAMS\Orange"
189    CreateShortCut "$SMPROGRAMS\Orange\Orange for Beginners.lnk" "$INSTDIR\doc\ofb\default.htm"
190    CreateShortCut "$SMPROGRAMS\Orange\Orange Modules Reference.lnk" "$INSTDIR\doc\modules\default.htm"
191    CreateShortCut "$SMPROGRAMS\Orange\Orange Reference Guide.lnk" "$INSTDIR\doc\reference\default.htm"
192
193    CreateShortCut "$SMPROGRAMS\Orange\Orange.lnk" "$INSTDIR"
194    CreateShortCut "$SMPROGRAMS\Orange\Uninstall Orange.lnk" "$INSTDIR\uninst.exe"
195
196    SetOutPath $INSTDIR\OrangeCanvas
197    CreateShortCut "$DESKTOP\Orange Canvas.lnk" "$PythonDir\pythonw.exe" "$INSTDIR\OrangeCanvas\orngCanvas.pyw" $INSTDIR\OrangeCanvas\icons\orange.ico 0
198    CreateShortCut "$SMPROGRAMS\Orange\Orange Canvas.lnk" "$PythonDir\pythonw.exe" "$INSTDIR\OrangeCanvas\orngCanvas.pyw" $INSTDIR\OrangeCanvas\icons\orange.ico 0
199
200    WriteRegStr SHELL_CONTEXT "SOFTWARE\Python\PythonCore\${NPYVER}\PythonPath\Orange" "" "$INSTDIR\orng"
201    WriteRegStr SHELL_CONTEXT "Software\Microsoft\Windows\CurrentVersion\Uninstall\Orange" "DisplayName" "Orange (remove only)"
202    WriteRegStr SHELL_CONTEXT "Software\Microsoft\Windows\CurrentVersion\Uninstall\Orange" "UninstallString" '"$INSTDIR\uninst.exe"'
203
204    WriteRegStr HKEY_CLASSES_ROOT ".ows" "" "OrangeCanvas"
205    WriteRegStr HKEY_CLASSES_ROOT "OrangeCanvas\DefaultIcon" "" "$INSTDIR\OrangeCanvas\icons\OrangeOWS.ico"
206    WriteRegStr HKEY_CLASSES_ROOT "OrangeCanvas\Shell\Open\Command\" "" '$PythonDir\python.exe $INSTDIR\OrangeCanvas\orngCanvas.pyw "%1"'
207
208    WriteUninstaller "$INSTDIR\uninst.exe"
209
210SectionEnd 
211
212Function .onInit
213    StrCpy $AdminInstall 1
214
215    UserInfo::GetAccountType
216    Pop $1
217    SetShellVarContext all
218    ${If} $1 != "Admin"
219        SetShellVarContext current
220        StrCpy $AdminInstall 0
221    ${Else}
222        SetShellVarContext all
223        StrCpy $AdminInstall 1
224    ${EndIf}
225
226    !insertMacro GetPythonDir
227
228    !ifndef COMPLETE
229        StrCmp $PythonDir "" 0 have_python
230            MessageBox MB_OK "Please install Python first (www.python.org)$\r$\nor download Orange distribution that includes Python."
231            Quit
232        have_python:
233
234        !insertMacro modules
235        StrCmp $MissingModules "" continueinst
236            MessageBox MB_YESNO "Missing module(s): $MissingModules$\r$\n$\r$\nWithout these modules you can still scripts in Orange, but Orange Canvas will not work without them.$\r$\nYou can download and install them later or obtain the Orange installation that includes them.$\r$\n$\r$\nContinue with installation?" /SD IDYES IDYES continueinst
237            Quit
238
239        continueinst:
240    !endif
241FunctionEnd
242
243
244Function .onInstSuccess
245    MessageBox MB_OK "Orange has been successfully installed." /SD IDOK
246FunctionEnd
Note: See TracBrowser for help on using the repository browser.