2
; NSIS script for GtkGLExt Win32 binary installer.
4
; written by Naofumi Yasufuku <naofumi@users.sourceforge.net>
6
; about NSIS, see http://nsis.sourceforge.net/
9
!define GTKGLEXT_VERSION 1.0.6
10
!define GTKGLEXT_API_VERSION 1.0
11
!define GTKGLEXT_PUBLISHER "GtkGLExt"
12
!define GTKGLEXT_URL_INFO_ABOUT "http://gtkglext.sourceforge.net/"
13
!define GTKGLEXT_URL_UPDATE_INFO "http://sourceforge.net/projects/gtkglext/"
14
!define GTKGLEXT_HELP_LINK "mailto:gtkglext-list@gnome.org"
16
;--------------------------------
19
OutFile gtkglext-win32-${GTKGLEXT_VERSION}.exe
22
InstType "Full (Runtime w/ Development and Examples)"
23
InstType "Runtime (w/o Development and Examples)"
26
ShowUninstDetails show
29
; the default installation drive is changed by .onInit
30
InstallDir C:\GtkGLExt\${GTKGLEXT_API_VERSION}
31
InstallDirRegKey HKLM SOFTWARE\GtkGLExt\${GTKGLEXT_API_VERSION} "Path"
33
;--------------------------------
38
;--------------------------------
43
Caption "GtkGLExt ${GTKGLEXT_VERSION} Setup"
45
;--------------------------------
51
;--------------------------------
54
!define MUI_ABORTWARNING
56
!define MUI_COMPONENTSPAGE_SMALLDESC
58
!define MUI_FINISHPAGE_NOAUTOCLOSE
59
!define MUI_UNFINISHPAGE_NOAUTOCLOSE
61
;--------------------------------
65
!define MUI_WELCOMEPAGE_TEXT "This wizard will guide you through the installation of GtkGLExt, OpenGL Extension to GTK.\r\n\r\n\r\n$_CLICK"
66
!insertmacro MUI_PAGE_WELCOME
69
!insertmacro MUI_PAGE_LICENSE "COPYING.LIB"
72
!insertmacro MUI_PAGE_COMPONENTS
75
!insertmacro MUI_PAGE_DIRECTORY
77
;Start Menu Folder Page
78
!define MUI_STARTMENUPAGE_DEFAULTFOLDER "GtkGLExt ${GTKGLEXT_API_VERSION}"
79
!define MUI_STARTMENUPAGE_REGISTRY_ROOT "HKLM"
80
!define MUI_STARTMENUPAGE_REGISTRY_KEY "SOFTWARE\GtkGLExt\${GTKGLEXT_API_VERSION}"
81
!define MUI_STARTMENUPAGE_REGISTRY_VALUENAME "StartMenuFolder"
82
!insertmacro MUI_PAGE_STARTMENU StartMenu $STARTMENU_FOLDER
85
!insertmacro MUI_PAGE_INSTFILES
88
!define MUI_FINISHPAGE_NOREBOOTSUPPORT
89
!insertmacro MUI_PAGE_FINISH
91
;Uninstall Welcome Page
92
!insertmacro MUI_UNPAGE_WELCOME
94
;Uninstall Confirm Page
95
!insertmacro MUI_UNPAGE_CONFIRM
98
!insertmacro MUI_UNPAGE_INSTFILES
100
;Uninstall Finish Page
101
!insertmacro MUI_UNPAGE_FINISH
103
;--------------------------------
106
!insertmacro MUI_LANGUAGE "English"
108
;--------------------------------
111
;!insertmacro MUI_RESERVEFILE_INSTALLOPTIONS
113
;--------------------------------
116
Section "GtkGLExt Runtime" SecRuntime
119
SetOutPath $INSTDIR\bin
123
WriteRegStr HKLM "SOFTWARE\GtkGLExt\${GTKGLEXT_API_VERSION}\Runtime" "Path" "$INSTDIR"
124
WriteRegStr HKLM "SOFTWARE\GtkGLExt\${GTKGLEXT_API_VERSION}\Runtime" "Version" "${GTKGLEXT_VERSION}"
128
Section "GtkGLExt Development" SecDevelopment
131
SetOutPath $INSTDIR\include\gtkglext-${GTKGLEXT_API_VERSION}\gdk
132
File include\gtkglext-${GTKGLEXT_API_VERSION}\gdk\*.h
134
SetOutPath $INSTDIR\include\gtkglext-${GTKGLEXT_API_VERSION}\gdk\glext
135
File include\gtkglext-${GTKGLEXT_API_VERSION}\gdk\glext\*.h
137
SetOutPath $INSTDIR\include\gtkglext-${GTKGLEXT_API_VERSION}\gdk\win32
138
File include\gtkglext-${GTKGLEXT_API_VERSION}\gdk\win32\*.h
140
SetOutPath $INSTDIR\include\gtkglext-${GTKGLEXT_API_VERSION}\gtk
141
File include\gtkglext-${GTKGLEXT_API_VERSION}\gtk\*.h
143
SetOutPath $INSTDIR\lib\gtkglext-${GTKGLEXT_API_VERSION}\include
144
File lib\gtkglext-${GTKGLEXT_API_VERSION}\include\gdkglext-config.h
146
SetOutPath $INSTDIR\lib
150
SetOutPath $INSTDIR\lib\pkgconfig
151
File lib\pkgconfig\*.pc
153
SetOutPath $INSTDIR\share\aclocal
154
File share\aclocal\*.m4
156
SetOutPath $INSTDIR\share\gtk-doc\html\gtkglext
157
File share\gtk-doc\html\gtkglext\*.html
158
File share\gtk-doc\html\gtkglext\*.sgml
159
File share\gtk-doc\html\gtkglext\*.devhelp
160
File share\gtk-doc\html\gtkglext\*.png
163
; short name will cause a problem with current libtool :-<
164
;GetFullPathName /SHORT $0 $INSTDIR
167
Call ChangeDirSeparator
170
DetailPrint "Updating $INSTDIR\lib\pkgconfig\gdkglext-${GTKGLEXT_API_VERSION}.pc"
171
Push $INSTDIR\lib\pkgconfig\gdkglext-${GTKGLEXT_API_VERSION}.pc
176
DetailPrint "Updating $INSTDIR\lib\pkgconfig\gdkglext-win32-${GTKGLEXT_API_VERSION}.pc"
177
Push $INSTDIR\lib\pkgconfig\gdkglext-win32-${GTKGLEXT_API_VERSION}.pc
182
DetailPrint "Updating $INSTDIR\lib\pkgconfig\gtkglext-${GTKGLEXT_API_VERSION}.pc"
183
Push $INSTDIR\lib\pkgconfig\gtkglext-${GTKGLEXT_API_VERSION}.pc
188
DetailPrint "Updating $INSTDIR\lib\pkgconfig\gtkglext-win32-${GTKGLEXT_API_VERSION}.pc"
189
Push $INSTDIR\lib\pkgconfig\gtkglext-win32-${GTKGLEXT_API_VERSION}.pc
195
WriteRegStr HKLM "SOFTWARE\GtkGLExt\${GTKGLEXT_API_VERSION}\Development" "Path" "$INSTDIR"
196
WriteRegStr HKLM "SOFTWARE\GtkGLExt\${GTKGLEXT_API_VERSION}\Development" "Version" "${GTKGLEXT_VERSION}"
200
Section "GtkGLExt Examples" SecExamples
203
SetOutPath $INSTDIR\gtkglext-examples
204
File gtkglext-examples\Makefile.mingw
205
File gtkglext-examples\Makefile.msc
206
File gtkglext-examples\*.h
207
File gtkglext-examples\*.c
208
File gtkglext-examples\*.lwo
209
File gtkglext-examples\*.rgb
210
File gtkglext-examples\*.exe
214
Section "Start Menu" SecStartMenu
217
SetShellVarContext all
219
!insertmacro MUI_STARTMENU_WRITE_BEGIN StartMenu
221
CreateDirectory "$SMPROGRAMS\$STARTMENU_FOLDER"
223
WriteINIStr "$SMPROGRAMS\$STARTMENU_FOLDER\GtkGLExt Website.url" "InternetShortcut" "URL" "http://gtkglext.sourceforge.net/"
225
IfFileExists "$INSTDIR\share\gtk-doc\html\gtkglext\index.html" "" +2
226
CreateShortCut "$SMPROGRAMS\$STARTMENU_FOLDER\GtkGLExt Reference Manual.lnk" "$INSTDIR\share\gtk-doc\html\gtkglext\index.html"
228
CreateShortCut "$SMPROGRAMS\$STARTMENU_FOLDER\Uninstall GtkGLExt.lnk" "$INSTDIR\uninst-gtkglext.exe"
230
!insertmacro MUI_STARTMENU_WRITE_END
236
; Write $INSTDIR\bin\gtkglext-env.sh
237
DetailPrint "Generating $INSTDIR\bin\gtkglext-env.sh"
238
Push $INSTDIR\bin\gtkglext-env.sh
242
; Write $INSTDIR\bin\gtkglext-env.bat
243
DetailPrint "Generating $INSTDIR\bin\gtkglext-env.bat"
244
Push $INSTDIR\bin\gtkglext-env.bat
249
WriteRegStr HKLM "SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\GtkGLExt" "DisplayName" "GtkGLExt ${GTKGLEXT_VERSION}"
250
WriteRegStr HKLM "SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\GtkGLExt" "DisplayVersion" "${GTKGLEXT_VERSION}"
251
WriteRegStr HKLM "SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\GtkGLExt" "Publisher" "${GTKGLEXT_PUBLISHER}"
252
WriteRegStr HKLM "SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\GtkGLExt" "URLInfoAbout" "${GTKGLEXT_URL_INFO_ABOUT}"
253
WriteRegStr HKLM "SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\GtkGLExt" "URLUpdateInfo" "${GTKGLEXT_URL_UPDATE_INFO}"
254
WriteRegStr HKLM "SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\GtkGLExt" "HelpLink" "${GTKGLEXT_HELP_LINK}"
255
WriteRegExpandStr HKLM "SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\GtkGLExt" "UninstallString" "$INSTDIR\uninst-gtkglext.exe"
258
Delete $INSTDIR\uninst-gtkglext.exe
259
WriteUninstaller $INSTDIR\uninst-gtkglext.exe
263
;--------------------------------
266
!insertmacro MUI_FUNCTION_DESCRIPTION_BEGIN
267
!insertmacro MUI_DESCRIPTION_TEXT ${SecRuntime} "GtkGLExt runtime libraries"
268
!insertmacro MUI_DESCRIPTION_TEXT ${SecDevelopment} "GtkGLExt development headers, libraries, and documentations"
269
!insertmacro MUI_DESCRIPTION_TEXT ${SecExamples} "GtkGLExt example programs"
270
!insertmacro MUI_DESCRIPTION_TEXT ${SecStartMenu} "Adds icons to your start menu for easy access"
271
!insertmacro MUI_FUNCTION_DESCRIPTION_END
273
;--------------------------------
277
; Change the default installation drive
279
StrCpy $R1 $INSTDIR $R0 1
280
StrCpy $INSTDIR $PROGRAMFILES 1
281
StrCpy $INSTDIR "$INSTDIR$R1"
285
; input, top of stack (e.g. C:\Program Files\...)
286
; output, top of stack (replaces, with e.g. C:/Program Files/...)
287
; modifies no other variables.
288
Function ChangeDirSeparator
302
StrCmp $R3 "\" replace
314
; update pkg-config .pc file
315
Function UpdatePCFile
317
Pop $R1 ; target .pc file
322
FileOpen $R7 $R1.orig r
324
FileRead $R7 $R9 ; skip original prefix
325
FileWrite $R8 "prefix=$R0$\n"
342
Pop $R0 ; Output file
345
GetFullPathName /SHORT $R8 $INSTDIR
347
Call ChangeDirSeparator
350
FileWrite $R9 "#!/bin/sh$\n"
352
FileWrite $R9 "export GTKGLEXT_PREFIX=$R8$\n"
354
FileWrite $R9 "echo $\"Setting environment variables for GtkGLExt.$\"$\n"
355
FileWrite $R9 "echo $\"$\"$\n"
357
FileWrite $R9 "case $$TERM in$\n"
358
FileWrite $R9 "cygwin)$\n"
359
FileWrite $R9 " GTKGLEXT_PATH=`cygpath -u $${GTKGLEXT_PREFIX}/bin`$\n"
360
FileWrite $R9 " ;;$\n"
361
FileWrite $R9 "msys)$\n"
362
FileWrite $R9 " GTKGLEXT_PATH=/$${GTKGLEXT_PREFIX%:*}$${GTKGLEXT_PREFIX#*:}/bin$\n"
363
FileWrite $R9 " ;;$\n"
364
FileWrite $R9 "*)$\n"
365
FileWrite $R9 " echo $\"Unknown TERM$\"$\n"
366
FileWrite $R9 " ;;$\n"
367
FileWrite $R9 "esac$\n"
369
FileWrite $R9 "echo $\"export PATH=\$\"$${GTKGLEXT_PATH}:\$${PATH}\$\"$\"$\n"
370
FileWrite $R9 "export PATH=$\"$${GTKGLEXT_PATH}:$${PATH}$\"$\n"
372
FileWrite $R9 "echo $\"export PKG_CONFIG_PATH=\$\"$${GTKGLEXT_PREFIX}/lib/pkgconfig;\$${PKG_CONFIG_PATH}\$\"$\"$\n"
373
FileWrite $R9 "export PKG_CONFIG_PATH=$\"$${GTKGLEXT_PREFIX}/lib/pkgconfig;$${PKG_CONFIG_PATH}$\"$\n"
375
FileWrite $R9 "echo $\"$\"$\n"
383
Pop $R0 ; Output file
386
FileWrite $R9 "@set GTKGLEXT_PREFIX=$INSTDIR$\r$\n"
387
FileWrite $R9 "$\r$\n"
388
FileWrite $R9 "@echo Setting environment variables for GtkGLExt.$\r$\n"
389
FileWrite $R9 "@echo.$\r$\n"
390
FileWrite $R9 "$\r$\n"
391
FileWrite $R9 "@echo set PATH=%GTKGLEXT_PREFIX%\bin;%%PATH%%$\r$\n"
392
FileWrite $R9 "@set PATH=%GTKGLEXT_PREFIX%\bin;%PATH%$\r$\n"
393
FileWrite $R9 "$\r$\n"
394
FileWrite $R9 "@echo set PKG_CONFIG_PATH=%GTKGLEXT_PREFIX%\lib\pkgconfig;%%PKG_CONFIG_PATH%%$\r$\n"
395
FileWrite $R9 "@set PKG_CONFIG_PATH=%GTKGLEXT_PREFIX%\lib\pkgconfig;%PKG_CONFIG_PATH%$\r$\n"
396
FileWrite $R9 "$\r$\n"
397
FileWrite $R9 "@echo.$\r$\n"
402
;--------------------------------
408
SetShellVarContext all
409
!insertmacro MUI_STARTMENU_GETFOLDER StartMenu $MUI_TEMP
410
StrCmp $MUI_TEMP "" noshortcuts
411
Delete "$SMPROGRAMS\$MUI_TEMP\GtkGLExt Website.url"
412
Delete "$SMPROGRAMS\$MUI_TEMP\GtkGLExt Reference Manual.lnk"
413
Delete "$SMPROGRAMS\$MUI_TEMP\Uninstall GtkGLExt.lnk"
414
RMDir "$SMPROGRAMS\$MUI_TEMP" ;Only if empty, so it won't delete other shortcuts
417
DeleteRegKey HKLM "SOFTWARE\GtkGLExt\${GTKGLEXT_API_VERSION}"
418
DeleteRegKey HKLM "SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\GtkGLExt"
420
Delete $INSTDIR\uninst-gtkglext.exe
424
Delete $INSTDIR\bin\gtkglext-env.sh
425
Delete $INSTDIR\bin\gtkglext-env.bat
426
Delete $INSTDIR\bin\libgdkglext-win32-${GTKGLEXT_API_VERSION}-*.dll
427
Delete $INSTDIR\bin\libgtkglext-win32-${GTKGLEXT_API_VERSION}-*.dll
433
RMDir /r $INSTDIR\include\gtkglext-1.0
435
RMDir $INSTDIR\include
439
RMDir /r $INSTDIR\lib\gtkglext-1.0
441
Delete $INSTDIR\lib\libgdkglext-win32-${GTKGLEXT_API_VERSION}.dll.a
442
Delete $INSTDIR\lib\libgtkglext-win32-${GTKGLEXT_API_VERSION}.dll.a
443
Delete $INSTDIR\lib\gdkglext-win32-${GTKGLEXT_API_VERSION}.lib
444
Delete $INSTDIR\lib\gtkglext-win32-${GTKGLEXT_API_VERSION}.lib
446
Delete $INSTDIR\lib\pkgconfig\gdkglext-${GTKGLEXT_API_VERSION}.pc
447
Delete $INSTDIR\lib\pkgconfig\gdkglext-win32-${GTKGLEXT_API_VERSION}.pc
448
Delete $INSTDIR\lib\pkgconfig\gtkglext-${GTKGLEXT_API_VERSION}.pc
449
Delete $INSTDIR\lib\pkgconfig\gtkglext-win32-${GTKGLEXT_API_VERSION}.pc
450
RMDir $INSTDIR\lib\pkgconfig
456
Delete $INSTDIR\share\aclocal\gtkglext-${GTKGLEXT_API_VERSION}.m4
457
RMDir $INSTDIR\share\aclocal
459
RMDir /r $INSTDIR\share\gtk-doc\html\gtkglext
460
RMDir $INSTDIR\share\gtk-doc\html
461
RMDir $INSTDIR\share\gtk-doc
467
RMDir /r $INSTDIR\gtkglext-examples