/[svn]/misc/trunk/win32_installer/linuxsampler_all.nsi
ViewVC logotype

Annotation of /misc/trunk/win32_installer/linuxsampler_all.nsi

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1891 - (hide annotations) (download)
Tue Apr 28 14:13:06 2009 UTC (14 years, 11 months ago) by schoenebeck
File size: 14218 byte(s)
* preparations for the next installer, carrying one native 64 bit
  and two native 32 bit binary types (686 SSE and 686 no SSE)

1 schoenebeck 1547 ; LinuxSampler Windows installer
2     ;
3 schoenebeck 1891 ; Copyright (C) 2007-2009, The LinuxSampler Developers
4 schoenebeck 1547 ;
5     ; All-in-one Installer for all subprojects / software components of the
6     ; LinuxSampler Project.
7 schoenebeck 1891 ;
8     ; PREREQUISITES:
9     ;
10     ; -> You must install the file cpudesc\cpudesc.dll into the NSIS's
11     ; plugin directory before being able to compile this installer!
12     ;
13     ; -> The compiled binaries must be placed into the respecitve directories
14     ; under bin\ (you have to read this file in order to get those exact
15     ; locations and expected file names).
16 schoenebeck 1547
17     ; Probably the best compression ratio
18     SetCompressor lzma
19    
20     ;Include Modern UI
21     !include "MUI.nsh"
22    
23 schoenebeck 1891 !define RELEASE_DATE "20090428"
24 schoenebeck 1581
25 schoenebeck 1547 ; The name of the installer
26 schoenebeck 1581 Name "LinuxSampler (${RELEASE_DATE})"
27 schoenebeck 1547
28     ; The file to write
29 schoenebeck 1581 OutFile "linuxsampler_${RELEASE_DATE}_setup.exe"
30 schoenebeck 1547
31     ; Java Runtime Environment, needed for JSampler
32     !define JRE_VERSION "1.6"
33     !define JRE_URL "http://javadl.sun.com/webapps/download/AutoDL?BundleId=11292"
34    
35     ; The default installation directory
36     InstallDir $PROGRAMFILES\LinuxSampler
37    
38     ; Get installation folder from registry if available
39     InstallDirRegKey HKCU "Software\LinuxSampler" ""
40    
41     ;--------------------------------
42     ;Interface Settings
43    
44     !define MUI_HEADERIMAGE
45     !define MUI_HEADERIMAGE_BITMAP "linuxsampler.bmp"
46     !define MUI_ABORTWARNING
47    
48     ;--------------------------------
49     ;Version Information
50    
51     VIProductVersion "0.0.0.0"
52 schoenebeck 1581 VIAddVersionKey /LANG=${LANG_ENGLISH} "ProductName" "all-in-one installer"
53 schoenebeck 1547 VIAddVersionKey /LANG=${LANG_ENGLISH} "Comments" "http://linuxsampler.org"
54     VIAddVersionKey /LANG=${LANG_ENGLISH} "CompanyName" "The LinuxSampler Project"
55     VIAddVersionKey /LANG=${LANG_ENGLISH} "LegalTrademarks" ""
56 schoenebeck 1891 VIAddVersionKey /LANG=${LANG_ENGLISH} "LegalCopyright" "� 2003-2009 The LinuxSampler Project"
57 schoenebeck 1581 VIAddVersionKey /LANG=${LANG_ENGLISH} "FileDescription" "LinuxSampler Installer (${RELEASE_DATE})"
58 schoenebeck 1547 VIAddVersionKey /LANG=${LANG_ENGLISH} "FileVersion" "0.0.0"
59    
60 schoenebeck 1891 !define BIN_TYPE_64BIT "64 bit"
61     !define BIN_TYPE_686SSE "686 SSE"
62     !define BIN_TYPE_686 "686"
63    
64 schoenebeck 1547 ;--------------------------------
65     ; Pages
66    
67     !insertmacro MUI_PAGE_LICENSE "license.rtf"
68     !insertmacro MUI_PAGE_COMPONENTS
69     !insertmacro MUI_PAGE_DIRECTORY
70     !insertmacro MUI_PAGE_INSTFILES
71     !insertmacro MUI_UNPAGE_CONFIRM
72     !insertmacro MUI_UNPAGE_INSTFILES
73    
74     ;--------------------------------
75     ;Languages
76    
77     !insertmacro MUI_LANGUAGE "English"
78    
79     ;--------------------------------
80    
81 schoenebeck 1581 Function .onInit
82     Var /GLOBAL installingLinuxSampler
83     Var /GLOBAL installingJSampler
84     Var /GLOBAL installingQSampler
85     Var /GLOBAL installinggigedit
86     StrCpy $installingLinuxSampler "0"
87     StrCpy $installingJSampler "0"
88     StrCpy $installingQSampler "0"
89     StrCpy $installinggigedit "0"
90     FunctionEnd
91    
92 schoenebeck 1891 ; detects CPU capabilities and determmines which native binary type to install
93     Function DetectSystemType
94     Var /GLOBAL binType
95    
96     ; check if this is a 64 bit windows
97     System::Call "kernel32::GetCurrentProcess() i .s"
98     System::Call "kernel32::IsWow64Process(i s, *i .r0)"
99     IntCmp $0 0 not64bit
100     StrCpy $binType BIN_TYPE_64BIT
101     DetailPrint "64 bit Windows detected."
102     Goto DetectSystemDone
103    
104     not64bit: ; a 32 bit system
105    
106     ; check if CPU supports SSE
107     cpudesc::tell
108     Pop $0 ; full identification string in $0
109     StrCpy $1 $0 1, 34 ; pull out one character after SSE=
110     IntFmt $2 "%u" $1 ; and turn it into a number
111     IntCmpU $2 1 +1 +4 +4
112     StrCpy $binType BIN_TYPE_686SSE
113     DetailPrint "32 bit Windows, SSE CPU detected."
114     Goto DetectSystemDone
115     StrCpy $binType BIN_TYPE_686
116     DetailPrint "32 bit Windows (no SSE support) detected."
117    
118     DetectSystemDone:
119     FunctionEnd
120    
121 schoenebeck 1547 ; Check for the presence of gtkmm, and if false, ask the user whether to
122     ; download and install gtkmm now from the internet.
123     Function CheckForGtkmm
124     Var /GLOBAL gtkmmSetupFile
125    
126 schoenebeck 1581 ClearErrors
127 schoenebeck 1547 ; This is just a lazy check for the presence of gtkmm, we should better use:
128     ; System::Call function (NSI internal function) to actually call an arbitrary
129     ; gtkmm function (/method) from a gtkmm DLL to make it certain
130     ReadRegStr $0 HKCU "Software\gtkmm\2.4" "Installer Language"
131     IfErrors +2 0
132     goto NoAbort
133     MessageBox MB_YESNO "gtkmm not found. Install it now (internet connection needed)?" IDYES InstallGtkmm
134     MessageBox MB_YESNO "gigedit won't work without gtkmm. Continue anyway?" IDYES NoAbort
135     Abort ; causes installer to quit
136     InstallGtkmm:
137     ClearErrors
138     StrCpy $gtkmmSetupFile $TEMP\gtkmm-win32-runtime-2.10.11-1.exe
139     NSISdl::download "http://ftp.gnome.org/pub/gnome/binaries/win32/gtkmm/2.10/gtkmm-win32-runtime-2.10.11-1.exe" $gtkmmSetupFile
140     IfErrors 0 +2
141     Goto InstallGtkmmFailed
142     ExecWait $gtkmmSetupFile
143     Delete $gtkmmSetupFile ; we don't need it anymore
144     IfErrors 0 +2
145     Goto InstallGtkmmFailed
146     Goto NoAbort
147     InstallGtkmmFailed:
148     MessageBox MB_YESNO "Could not download gtkmm. gigedit won't work without gtkmm. Continue anyway?" IDYES NoAbort
149     Abort ; causes installer to quit
150     NoAbort:
151     FunctionEnd
152    
153     ; Downloads and launches the JRE installer from the internet
154     Function GetJRE
155     MessageBox MB_OK "JSampler requires Java ${JRE_VERSION}, it will now \
156     be downloaded and installed"
157    
158     StrCpy $2 "$TEMP\Java Runtime Environment.exe"
159     nsisdl::download /TIMEOUT=30000 ${JRE_URL} $2
160     Pop $R0 ;Get the return value
161     StrCmp $R0 "success" +3
162     MessageBox MB_OK "Download failed: $R0"
163     Quit
164     ExecWait $2
165     Delete $2
166     FunctionEnd
167    
168     ; Checks if the JRE is already installed, if not it will download and install it from the internet
169     Function DetectJRE
170     ReadRegStr $2 HKLM "SOFTWARE\JavaSoft\Java Runtime Environment" \
171     "CurrentVersion"
172     StrCmp $2 ${JRE_VERSION} done
173    
174     Call GetJRE
175    
176     done:
177     FunctionEnd
178    
179     ;--------------------------------
180    
181 schoenebeck 1891 ; primer things to do
182     Section ""
183     Call DetectSystemType
184     SectionEnd
185    
186     ;--------------------------------
187    
188 schoenebeck 1547 ; The stuff to install
189     Section "LinuxSampler 0.5.1" SecLinuxSampler
190 schoenebeck 1891 DetailPrint "Installing LinuxSampler binaries ..."
191 schoenebeck 1581 StrCpy $installingLinuxSampler "1"
192 schoenebeck 1891
193 schoenebeck 1547 ; Set output path to the installation directory.
194     SetOutPath $INSTDIR
195 schoenebeck 1891
196     StrCmp $binType BIN_TYPE_64BIT linuxsampler64
197     StrCmp $binType BIN_TYPE_686SSE linuxsampler686sse
198     Goto linuxsampler686
199    
200 schoenebeck 1547 ; Files to install
201 schoenebeck 1891
202     linuxsampler64:
203     ;File bin\64\linuxsampler.exe
204     ;File bin\64\liblinuxsampler-1.dll
205     Goto done
206    
207     linuxsampler686sse:
208     ;File bin\686sse\linuxsampler.exe
209     ;File bin\686sse\liblinuxsampler-1.dll
210     Goto done
211    
212     linuxsampler686:
213     ;File bin\686\linuxsampler.exe
214     ;File bin\686\liblinuxsampler-1.dll
215     Goto done
216    
217     done:
218 schoenebeck 1547 SectionEnd
219    
220 schoenebeck 1581 Section "JSampler 'Fantasia' 0.8a" SecJSampler
221 schoenebeck 1891 DetailPrint "Installing JSampler binaries ..."
222 schoenebeck 1547 ; make sure JRE is installed
223     Call DetectJRE
224 schoenebeck 1581 StrCpy $installingJSampler "1"
225 schoenebeck 1547 ; Set output path to the installation directory.
226     SetOutPath $INSTDIR
227     ; Files to install
228 schoenebeck 1891 ;File bin\Fantasia-0.8a.jar
229     ;File jsampler.ico
230 schoenebeck 1547 SectionEnd
231    
232 schoenebeck 1581 Section "QSampler 0.2.1" SecQSampler
233 schoenebeck 1891 DetailPrint "Installing QSampler binaries ..."
234 schoenebeck 1581 StrCpy $installingQSampler "1"
235 schoenebeck 1547 ; Set output path to the installation directory.
236     SetOutPath $INSTDIR
237     ; Files to install
238 schoenebeck 1891 ;File bin\qsampler.exe
239     ;File bin\QtCore4.dll
240     ;File bin\QtGui4.dll
241     ;File bin\mingwm10.dll
242     ;File qsampler.ico
243 schoenebeck 1547 SectionEnd
244    
245     Section "gigedit 0.1.1" Secgigedit
246 schoenebeck 1891 DetailPrint "Installing gigedit binaries ..."
247 schoenebeck 1581 StrCpy $installinggigedit "1"
248 schoenebeck 1891
249 schoenebeck 1547 ; make sure gtkmm is installed
250     Call CheckForGtkmm
251     ; Set output path to the installation directory.
252     SetOutPath $INSTDIR
253 schoenebeck 1891
254     StrCmp $binType BIN_TYPE_64BIT gigedit64
255     StrCmp $binType BIN_TYPE_686SSE gigedit686sse
256     Goto gigedit686
257    
258 schoenebeck 1547 ; Files to install
259 schoenebeck 1891
260     gigedit64:
261     ;File bin\64\gigedit.exe
262     SetOutPath "$INSTDIR\Plugins"
263     ;File bin\64\libgigedit.dll
264     Goto done
265    
266     gigedit686sse:
267     ;File bin\686sse\gigedit.exe
268     SetOutPath "$INSTDIR\Plugins"
269     ;File bin\686sse\libgigedit.dll
270     Goto done
271    
272     gigedit686:
273     ;File bin\686\gigedit.exe
274     SetOutPath "$INSTDIR\Plugins"
275     ;File bin\686\libgigedit.dll
276     Goto done
277    
278     done:
279 schoenebeck 1547 SectionEnd
280    
281     Section "libgig 3.2.1" Seclibgig
282 schoenebeck 1891 DetailPrint "Installing libgig binaries ..."
283 schoenebeck 1547 ; We make this a mandatory component
284     SectionIn RO
285     ; Set output path to the installation directory.
286     SetOutPath $INSTDIR
287 schoenebeck 1891
288     StrCmp $binType BIN_TYPE_64BIT libgig64
289     StrCmp $binType BIN_TYPE_686SSE libgig686sse
290     Goto libgig686
291    
292 schoenebeck 1547 ; Files to install
293 schoenebeck 1891
294     libgig64:
295     ;File bin\64\libgig-6.dll
296     ;File bin\64\rifftree.exe
297     ;File bin\64\dlsdump.exe
298     ;File bin\64\gigdump.exe
299     ;File bin\64\gigextract.exe
300     Goto done
301    
302     libgig686sse:
303     ;File bin\686sse\libgig-6.dll
304     ;File bin\686sse\rifftree.exe
305     ;File bin\686sse\dlsdump.exe
306     ;File bin\686sse\gigdump.exe
307     ;File bin\686sse\gigextract.exe
308     Goto done
309    
310     libgig686:
311     ;File bin\686\libgig-6.dll
312     ;File bin\686\rifftree.exe
313     ;File bin\686\dlsdump.exe
314     ;File bin\686\gigdump.exe
315     ;File bin\686\gigextract.exe
316     Goto done
317    
318     done:
319    
320 schoenebeck 1547 ; As this is a mandatory component, we misuse it to install the uninstaller as well ...
321     ; Write the uninstall keys for Windows
322 schoenebeck 1581 WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\LinuxSampler" "DisplayName" "LinuxSampler ${RELEASE_DATE}"
323 schoenebeck 1547 WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\LinuxSampler" "UninstallString" '"$INSTDIR\uninstall.exe"'
324     WriteRegDWORD HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\LinuxSampler" "NoModify" 1
325     WriteRegDWORD HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\LinuxSampler" "NoRepair" 1
326     WriteUninstaller "uninstall.exe"
327     ;Store installation folder
328     WriteRegStr HKCU "Software\LinuxSampler" "" $INSTDIR
329     SectionEnd
330    
331 schoenebeck 1891 Section "libsndfile 1.0.17" Seclibsndfile
332     DetailPrint "Installing libsndfile binaries ..."
333     ; We make this a mandatory component
334     SectionIn RO
335     ; Set output path to the installation directory.
336     SetOutPath $INSTDIR
337    
338     StrCmp $binType BIN_TYPE_64BIT libsndfile64
339     ; I think we don't need a SSE optimized 32 bit binary for libsndfile, one 64bit and one simple 32 bit DLL should be sufficient
340     ;StrCmp $binType BIN_TYPE_686SSE libsndfile686sse
341     Goto libsndfile686
342    
343     ; Files to install
344    
345     libsndfile64:
346     ;File bin\64\libsndfile-1.dll
347     Goto done
348    
349     libsndfile686:
350     ;File bin\686\libsndfile-1.dll
351     Goto done
352    
353     done:
354     SectionEnd
355    
356 schoenebeck 1547 Section "Start Menu Shortcuts" SecShortcuts
357     CreateDirectory "$SMPROGRAMS\LinuxSampler"
358 schoenebeck 1891
359 schoenebeck 1547 CreateShortCut "$SMPROGRAMS\LinuxSampler\Uninstall.lnk" "$INSTDIR\uninstall.exe" "" "$INSTDIR\uninstall.exe" 0
360 schoenebeck 1891
361 schoenebeck 1581 StrCmp $installingLinuxSampler '1' 0 +2
362     CreateShortCut "$SMPROGRAMS\LinuxSampler\LinuxSampler 0.5.1 (backend).lnk" "$INSTDIR\linuxsampler.exe" "" "$INSTDIR\linuxsampler.exe" 0
363 schoenebeck 1891
364 schoenebeck 1581 StrCmp $installingJSampler '1' 0 +2
365     CreateShortCut '$SMPROGRAMS\LinuxSampler\JSampler Fantasia 0.8a (frontend).lnk' 'javaw' '-jar "$INSTDIR\Fantasia-0.8a.jar"' '$INSTDIR\jsampler.ico' 0
366 schoenebeck 1891
367 schoenebeck 1581 StrCmp $installingQSampler '1' 0 +2
368 schoenebeck 1587 CreateShortCut "$SMPROGRAMS\LinuxSampler\QSampler 0.2.1 (frontend).lnk" "$INSTDIR\qsampler.exe" "" "$INSTDIR\qsampler.ico" 0
369 schoenebeck 1891
370 schoenebeck 1581 StrCmp $installinggigedit '1' 0 +2
371     CreateShortCut "$SMPROGRAMS\LinuxSampler\gigedit 0.1.1 (stand alone).lnk" "$INSTDIR\gigedit.exe" "" "$INSTDIR\gigedit.exe" 0
372 schoenebeck 1547 SectionEnd
373    
374     ;--------------------------------
375    
376     ; Uninstaller
377    
378     Section "Uninstall"
379     ; Remove registry keys
380     DeleteRegKey HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\LinuxSampler"
381     ; Remove files and uninstaller
382     Delete $INSTDIR\*.*
383 schoenebeck 1581 Delete $INSTDIR\plugins\*.*
384 schoenebeck 1547 ; Remove shortcuts, if any
385     Delete "$SMPROGRAMS\LinuxSampler\*.*"
386     ; Remove directories used
387     RMDir "$SMPROGRAMS\LinuxSampler"
388 schoenebeck 1581 RMDir "$INSTDIR\plugins"
389 schoenebeck 1547 RMDir "$INSTDIR"
390     SectionEnd
391    
392     ;--------------------------------
393     ;Descriptions
394    
395     ;Language strings
396     LangString DESC_SecLinuxSampler ${LANG_ENGLISH} "Sampler backend, including sampler engine, MIDI and audio drivers, native C++ API as well as network (LSCP) API. Use a frontend application like JSampler or QSampler to control the sampler."
397     LangString DESC_SecJSampler ${LANG_ENGLISH} "Graphical frontend (user interface) for LinuxSampler written in Java, supporting all current features of LinuxSampler. This is the 'Fantasia' distribution of JSampler, offering a modern skin based look."
398     LangString DESC_SecQSampler ${LANG_ENGLISH} "Graphical light-weight frontend (user interface) for LinuxSampler written in C++, offering a fast native user interface. NOTE: QSampler doesn't support all LinuxSampler features yet!"
399     LangString DESC_Secgigedit ${LANG_ENGLISH} "Graphical instrument editor for Gigasampler format v2 and v3 files. Can be used stand-alone or in conjunction with LinuxSampler. NOTE: this is yet an early development version!"
400     LangString DESC_Seclibgig ${LANG_ENGLISH} "C++ program library for accessing DLS (Level 1 and Level 2) and Gigasampler format (v2 and v3) files. This library is required by LinuxSampler, gigedit and QSampler."
401 schoenebeck 1891 LangString DESC_Seclibsndfile ${LANG_ENGLISH} "C program library for reading and writing files containing sampled sound (such as MS Windows WAV and the Apple/SGI AIFF format), used by gigedit to import samples."
402 schoenebeck 1547 LangString DESC_SecShortcuts ${LANG_ENGLISH} "Installs start menu shortcuts for all applications."
403    
404     ;Assign language strings to sections
405     !insertmacro MUI_FUNCTION_DESCRIPTION_BEGIN
406     !insertmacro MUI_DESCRIPTION_TEXT ${SecLinuxSampler} $(DESC_SecLinuxSampler)
407     !insertmacro MUI_DESCRIPTION_TEXT ${SecJSampler} $(DESC_SecJSampler)
408     !insertmacro MUI_DESCRIPTION_TEXT ${SecQSampler} $(DESC_SecQSampler)
409     !insertmacro MUI_DESCRIPTION_TEXT ${Secgigedit} $(DESC_Secgigedit)
410     !insertmacro MUI_DESCRIPTION_TEXT ${Seclibgig} $(DESC_Seclibgig)
411 schoenebeck 1891 !insertmacro MUI_DESCRIPTION_TEXT ${Seclibsndfile} $(DESC_Seclibsndfile)
412 schoenebeck 1547 !insertmacro MUI_DESCRIPTION_TEXT ${SecShortcuts} $(DESC_SecShortcuts)
413     !insertmacro MUI_FUNCTION_DESCRIPTION_END

Properties

Name Value
svn:executable *

  ViewVC Help
Powered by ViewVC