;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ; Installer script for Geany (Windows Installer) ; ; Script generated by the HM NIS Edit Script Wizard. : ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;;; ; helper defines ; ;;;;;;;;;;;;;;;;;;; !define PRODUCT_NAME "Geany" !define PRODUCT_VERSION "0.12svn" !define PRODUCT_VERSION_ID "0.11.9.0" !define PRODUCT_PUBLISHER "Enrico Tröger" !define PRODUCT_WEB_SITE "http://geany.uvena.de" !define PRODUCT_DIR_REGKEY "Software\Microsoft\Windows\CurrentVersion\App Paths\Geany.exe" !define PRODUCT_UNINST_KEY "Software\Microsoft\Windows\CurrentVersion\Uninstall\${PRODUCT_NAME}" !define PRODUCT_UNINST_ROOT_KEY "HKLM" !define PRODUCT_STARTMENU_REGVAL "NSIS:StartMenuDir" !define RESOURCEDIR "geany-${PRODUCT_VERSION}" ; only used when embedding GTK+ installer !define GTK_INSTALLER "gtk+-2.10.6-1-setup.exe" SetCompressor /SOLID lzma XPStyle on Name "${PRODUCT_NAME} ${PRODUCT_VERSION}" !ifdef INCLUDE_GTK OutFile "geany-${PRODUCT_VERSION}_setup.exe" !else OutFile "geany-${PRODUCT_VERSION}_nogtk_setup.exe" !endif InstallDir "$PROGRAMFILES\Geany" InstallDirRegKey HKLM "${PRODUCT_DIR_REGKEY}" "" ShowInstDetails hide ShowUnInstDetails hide ;;;;;;;;;;;;;;;;;;;;; ; Version resource ; ;;;;;;;;;;;;;;;;;;;;; VIProductVersion "${PRODUCT_VERSION_ID}" VIAddVersionKey "ProductName" "${PRODUCT_NAME}" VIAddVersionKey "FileVersion" "${PRODUCT_VERSION}" VIAddVersionKey "ProductVersion" "${PRODUCT_VERSION}" VIAddVersionKey "LegalCopyright" "Copyright 2005-2007 by Enrico Tröger" VIAddVersionKey "FileDescription" "${PRODUCT_NAME} Installer" ;;;;;;;;;;;;;;;; ; Init code ; ;;;;;;;;;;;;;;;; Function .onInit ; prevent running multiple instances of the installer System::Call 'kernel32::CreateMutexA(i 0, i 0, t "geany_installer") i .r1 ?e' Pop $R0 StrCmp $R0 0 +3 MessageBox MB_OK|MB_ICONEXCLAMATION "The installer is already running." Abort ; warn about a new install over an existing installation ReadRegStr $R0 ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "UninstallString" StrCmp $R0 "" done MessageBox MB_YESNO|MB_ICONEXCLAMATION \ "Geany has already been installed. $\nDo you want to remove the previous version before installing $(^Name) ?" \ IDNO done ;Run the uninstaller ClearErrors ExecWait '$R0 _?=$INSTDIR' ;Do not copy the uninstaller to a temp file done: FunctionEnd ;;;;;;;;;;;;;;;; ; MUI Settings ; ;;;;;;;;;;;;;;;; !include "MUI.nsh" !define MUI_ABORTWARNING !define MUI_ICON "pixmaps\geany.ico" !define MUI_UNICON "${NSISDIR}\Contrib\Graphics\Icons\modern-uninstall-full.ico" ; Welcome page !insertmacro MUI_PAGE_WELCOME ; License page ;!define MUI_LICENSEPAGE_RADIOBUTTONS !insertmacro MUI_PAGE_LICENSE "${RESOURCEDIR}\Copying.txt" ; Components page !insertmacro MUI_PAGE_COMPONENTS ; Directory page !define MUI_PAGE_CUSTOMFUNCTION_LEAVE OnDirLeave !insertmacro MUI_PAGE_DIRECTORY ; Start menu page var ICONS_GROUP !define MUI_STARTMENUPAGE_NODISABLE !define MUI_STARTMENUPAGE_DEFAULTFOLDER "Geany" !define MUI_STARTMENUPAGE_REGISTRY_ROOT "${PRODUCT_UNINST_ROOT_KEY}" !define MUI_STARTMENUPAGE_REGISTRY_KEY "${PRODUCT_UNINST_KEY}" !define MUI_STARTMENUPAGE_REGISTRY_VALUENAME "${PRODUCT_STARTMENU_REGVAL}" !insertmacro MUI_PAGE_STARTMENU Application $ICONS_GROUP ; Instfiles page !insertmacro MUI_PAGE_INSTFILES ; Finish page !define MUI_FINISHPAGE_RUN "$INSTDIR\Geany.exe" !insertmacro MUI_PAGE_FINISH ; Uninstaller pages !insertmacro MUI_UNPAGE_INSTFILES ; Language files !insertmacro MUI_LANGUAGE "English" ; Reserve files !insertmacro MUI_RESERVEFILE_INSTALLOPTIONS ; MUI end ------ ;;;;;;;;;;;;;;;;;;;;;;;;;;; ; Sections and InstTypes ; ;;;;;;;;;;;;;;;;;;;;;;;;;;; InstType "Full" InstType "Minimal" Section "!Program Files" SEC01 SectionIn RO 1 2 SetOutPath "$INSTDIR" SetOverwrite ifnewer File "${RESOURCEDIR}\Geany.exe" File "${RESOURCEDIR}\*.txt" SetOutPath "$INSTDIR\data" File "${RESOURCEDIR}\data\GPL-2" File "${RESOURCEDIR}\data\file*" SetOutPath "$INSTDIR\share" File /r "${RESOURCEDIR}\share\*" SetOutPath "$INSTDIR" !insertmacro MUI_STARTMENU_WRITE_BEGIN Application CreateDirectory "$SMPROGRAMS\$ICONS_GROUP" CreateShortCut "$SMPROGRAMS\$ICONS_GROUP\Geany.lnk" "$INSTDIR\Geany.exe" CreateShortCut "$DESKTOP\Geany.lnk" "$INSTDIR\Geany.exe" CreateShortCut "$QUICKLAUNCH\Geany.lnk" "$INSTDIR\Geany.exe" !insertmacro MUI_STARTMENU_WRITE_END SectionEnd Section "Plugins" SEC02 SectionIn 1 SetOverwrite ifnewer SetOutPath "$INSTDIR" File /r "${RESOURCEDIR}\plugins" SectionEnd Section "Language Files" SEC03 SectionIn 1 SetOutPath "$INSTDIR" File /r "${RESOURCEDIR}\lib" SectionEnd Section "Documentation" SEC04 SectionIn 1 SetOverwrite ifnewer SetOutPath "$INSTDIR" File /r "${RESOURCEDIR}\doc" ; Shortcuts !insertmacro MUI_STARTMENU_WRITE_BEGIN Application WriteIniStr "$INSTDIR\Documentation.url" "InternetShortcut" "URL" "$INSTDIR\doc\index.html" CreateShortCut "$SMPROGRAMS\$ICONS_GROUP\Documentation.lnk" "$INSTDIR\Documentation.url" !insertmacro MUI_STARTMENU_WRITE_END SectionEnd Section "Autocompletion Tags" SEC05 SectionIn 1 SetOutPath "$INSTDIR\data" SetOverwrite ifnewer File "${RESOURCEDIR}\data\php.tags" File "${RESOURCEDIR}\data\pascal.tags" File "${RESOURCEDIR}\data\latex.tags" File "${RESOURCEDIR}\data\html_entities.tags" File "${RESOURCEDIR}\data\global.tags" SectionEnd ; Include GTK runtime library but only if desired from command line !ifdef INCLUDE_GTK Section "GTK 2.10 Runtime Environment" SEC06 SectionIn 1 SetOutPath "$INSTDIR" SetOverwrite ifnewer File "gtk\*" SetOutPath "$INSTDIR\etc" File /r "gtk\etc\*" SetOutPath "$INSTDIR\lib" File /r "gtk\lib\*" SetOutPath "$INSTDIR\share" File /r "gtk\share\*" /* code to embed GTK+ installer executable File ${GTK_INSTALLER} ExecWait ${GTK_INSTALLER} */ SectionEnd !endif Section "Context menus" SEC07 SectionIn 1 WriteRegStr HKCR "*\shell\OpenWithGeany" "" "Open with Geany" WriteRegStr HKCR "*\shell\OpenWithGeany\command" "" '$INSTDIR\geany.exe "%1"' SectionEnd Section -AdditionalIcons SetOutPath $INSTDIR !insertmacro MUI_STARTMENU_WRITE_BEGIN Application WriteIniStr "$INSTDIR\${PRODUCT_NAME}.url" "InternetShortcut" "URL" "${PRODUCT_WEB_SITE}" CreateShortCut "$SMPROGRAMS\$ICONS_GROUP\Website.lnk" "$INSTDIR\${PRODUCT_NAME}.url" CreateShortCut "$SMPROGRAMS\$ICONS_GROUP\Uninstall.lnk" "$INSTDIR\uninst.exe" !insertmacro MUI_STARTMENU_WRITE_END SectionEnd Section -Post WriteUninstaller "$INSTDIR\uninst.exe" WriteRegStr HKLM "${PRODUCT_DIR_REGKEY}" "" "$INSTDIR\Geany.exe" WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "DisplayName" "$(^Name)" WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "UninstallString" "$INSTDIR\uninst.exe" WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "DisplayIcon" "$INSTDIR\Geany.exe" WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "DisplayVersion" "${PRODUCT_VERSION}" WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "URLInfoAbout" "${PRODUCT_WEB_SITE}" WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "URLUpdateInfo" "${PRODUCT_WEB_SITE}" WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "Publisher" "${PRODUCT_PUBLISHER}" SectionEnd ;;;;;;;;;;;;;;;;;;;;;;;;; ; Section descriptions ; ;;;;;;;;;;;;;;;;;;;;;;;;; !insertmacro MUI_FUNCTION_DESCRIPTION_BEGIN !insertmacro MUI_DESCRIPTION_TEXT ${SEC01} "Required program files. You cannot skip these files." !insertmacro MUI_DESCRIPTION_TEXT ${SEC02} "Available plugins like 'Class Builder' and 'Insert Special Characters'." !insertmacro MUI_DESCRIPTION_TEXT ${SEC03} "Various translations of Geany's interface." !insertmacro MUI_DESCRIPTION_TEXT ${SEC04} "Manual in Text and HTML format." !insertmacro MUI_DESCRIPTION_TEXT ${SEC05} "Symbol lists necessary for auto completion of symbols." !ifdef INCLUDE_GTK !insertmacro MUI_DESCRIPTION_TEXT ${SEC06} "You need this files to run Geany. If you have already installed a GTK Runtime Environment (2.6 or higher), you can skip it." !endif !insertmacro MUI_DESCRIPTION_TEXT ${SEC07} "Add context menu item 'Open With Geany'" !insertmacro MUI_FUNCTION_DESCRIPTION_END ;;;;;;;;;;;;;;;;;;;;; ; helper functions ; ;;;;;;;;;;;;;;;;;;;;; Function un.onUninstSuccess HideWindow MessageBox MB_ICONINFORMATION|MB_OK "$(^Name) was successfully removed from your computer." FunctionEnd Function un.onInit MessageBox MB_ICONQUESTION|MB_YESNO|MB_DEFBUTTON2 "Are you sure you want to completely remove $(^Name) and all of its components?" IDYES +2 Abort FunctionEnd Function OnDirLeave ClearErrors SetOutPath "$INSTDIR" ; what about IfError creating $INSTDIR? GetTempFileName $1 "$INSTDIR" ; creates tmp file (or fails) FileOpen $0 "$1" "w" ; error to open? FileWriteByte $0 "0" IfErrors notPossible possible notPossible: RMDir "$INSTDIR" ; removes folder if empty MessageBox MB_OK "The given directory is not writeable. Please choose another one!" Abort possible: FileClose $0 Delete "$1" FunctionEnd Section Uninstall !insertmacro MUI_STARTMENU_GETFOLDER "Application" $ICONS_GROUP Delete "$INSTDIR\${PRODUCT_NAME}.url" Delete "$INSTDIR\Documentation.url" Delete "$INSTDIR\uninst.exe" Delete "$INSTDIR\News.txt" Delete "$INSTDIR\ReadMe.txt" Delete "$INSTDIR\Thanks.txt" Delete "$INSTDIR\ToDo.txt" Delete "$INSTDIR\Authors.txt" Delete "$INSTDIR\ChangeLog.txt" Delete "$INSTDIR\Copying.txt" Delete "$INSTDIR\Geany.exe" ; GTK files Delete "$INSTDIR\charset.dll" Delete "$INSTDIR\gspawn-win32-helper.exe" Delete "$INSTDIR\gspawn-win32-helper-console.exe" Delete "$INSTDIR\iconv.dll" Delete "$INSTDIR\intl.dll" Delete "$INSTDIR\libgthread-2.0-0.dll" Delete "$INSTDIR\libgtk-win32-2.0-0.dll" Delete "$INSTDIR\libpangocairo-1.0-0.dll" Delete "$INSTDIR\libpangowin32-1.0-0.dll" Delete "$INSTDIR\libgobject-2.0-0.dll" Delete "$INSTDIR\libpango-1.0-0.dll" Delete "$INSTDIR\libpangoft2-1.0-0.dll" Delete "$INSTDIR\libpng13.dll" Delete "$INSTDIR\libatk-1.0-0.dll" Delete "$INSTDIR\libcairo-2.dll" Delete "$INSTDIR\libgdk_pixbuf-2.0-0.dll" Delete "$INSTDIR\libgdk-win32-2.0-0.dll" Delete "$INSTDIR\libglib-2.0-0.dll" Delete "$INSTDIR\libgmodule-2.0-0.dll" Delete "$INSTDIR\zlib1.dll" Delete "$SMPROGRAMS\$ICONS_GROUP\Uninstall.lnk" Delete "$SMPROGRAMS\$ICONS_GROUP\Website.lnk" Delete "$QUICKLAUNCH\Geany.lnk" Delete "$DESKTOP\Geany.lnk" Delete "$SMPROGRAMS\$ICONS_GROUP\Geany.lnk" Delete "$SMPROGRAMS\$ICONS_GROUP\Documentation.lnk" RMDir "$SMPROGRAMS\$ICONS_GROUP" RMDir /r "$INSTDIR\doc" RMDir /r "$INSTDIR\plugins" RMDir /r "$INSTDIR\data" RMDir /r "$INSTDIR\etc" RMDir /r "$INSTDIR\lib" RMDir /r "$INSTDIR\share" RMDir "$INSTDIR" DeleteRegKey HKCR "*\shell\OpenWithGeany" DeleteRegKey ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" DeleteRegKey HKLM "${PRODUCT_DIR_REGKEY}" SetAutoClose true SectionEnd