# Deluge Windows installer script # # Copyright (C) 2009 Jesper Lund # Copyright (C) 2009 Andrew Resch # Copyright (C) 2009 John Garland # # This file is part of Deluge and is licensed under GNU General Public License 3.0, or later. # See LICENSE for more details. # # Set default compressor SetCompressor /FINAL /SOLID lzma SetCompressorDictSize 64 # Script version; displayed when running the installer !define DELUGE_INSTALLER_VERSION "0.8" # Deluge program information !define PROGRAM_NAME "Deluge" # Deluge program information !searchparse /file VERSION.tmp `build_version = "` PROGRAM_VERSION `"` !ifndef PROGRAM_VERSION !error "Program Version Undefined" !endif !define PROGRAM_WEB_SITE "http://deluge-torrent.org" # Python files generated with bbfreeze !define BUILD_DIR "build-win32" !define BBFREEZE_DIR "${BUILD_DIR}\deluge-bbfreeze-${PROGRAM_VERSION}" # --- Interface settings --- # Modern User Interface 2 !include MUI2.nsh # Installer !define MUI_ICON "..\..\deluge\ui\data\pixmaps\deluge.ico" !define MUI_HEADERIMAGE !define MUI_HEADERIMAGE_RIGHT !define MUI_HEADERIMAGE_BITMAP "installer-top.bmp" !define MUI_WELCOMEFINISHPAGE_BITMAP "installer-side.bmp" !define MUI_COMPONENTSPAGE_SMALLDESC !define MUI_FINISHPAGE_NOAUTOCLOSE !define MUI_ABORTWARNING # Uninstaller !define MUI_UNICON "${NSISDIR}\Contrib\Graphics\Icons\modern-uninstall.ico" !define MUI_HEADERIMAGE_UNBITMAP "installer-top.bmp" !define MUI_WELCOMEFINISHPAGE_UNBITMAP "installer-side.bmp" !define MUI_UNFINISHPAGE_NOAUTOCLOSE # --- Start of Modern User Interface --- # Welcome page !insertmacro MUI_PAGE_WELCOME # License page !insertmacro MUI_PAGE_LICENSE "..\..\LICENSE" # Components page !insertmacro MUI_PAGE_COMPONENTS # Let the user select the installation directory !insertmacro MUI_PAGE_DIRECTORY # Run installation !insertmacro MUI_PAGE_INSTFILES # Display 'finished' page !insertmacro MUI_PAGE_FINISH # Uninstaller pages !insertmacro MUI_UNPAGE_INSTFILES # Language files !insertmacro MUI_LANGUAGE "English" VIProductVersion "${DELUGE_INSTALLER_VERSION}.0.0" VIAddVersionKey ProductName "${PROGRAM_NAME}" VIAddVersionKey Comments "Deluge Bittorrent Client" VIAddVersionKey CompanyName "Deluge Team" VIAddVersionKey LegalCopyright "Deluge Team" VIAddVersionKey FileDescription "${PROGRAM_NAME} Application Installer" VIAddVersionKey FileVersion "${DELUGE_INSTALLER_VERSION}.0.0" VIAddVersionKey ProductVersion "${PROGRAM_VERSION}.0" VIAddVersionKey OriginalFilename "deluge-${PROGRAM_VERSION}-win32-setup.exe" # --- Functions --- Function .onInit System::Call 'kernel32::OpenMutex(i 0x100000, b 0, t "deluge") i .R0' IntCmp $R0 0 notRunning System::Call 'kernel32::CloseHandle(i $R0)' MessageBox MB_OK|MB_ICONEXCLAMATION "Deluge is running. Please close it first" /SD IDOK Abort notRunning: FunctionEnd Function un.onUninstSuccess HideWindow MessageBox MB_ICONINFORMATION|MB_OK "$(^Name) was successfully removed from your computer." /SD IDOK FunctionEnd Function un.onInit MessageBox MB_ICONQUESTION|MB_YESNO|MB_DEFBUTTON2 "Do you want to completely remove $(^Name)?" /SD IDYES IDYES +2 Abort FunctionEnd # --- Installation sections --- !define PROGRAM_UNINST_KEY "Software\Microsoft\Windows\CurrentVersion\Uninstall\${PROGRAM_NAME}" !define PROGRAM_UNINST_ROOT_KEY "HKLM" BrandingText "Deluge Windows Installer v${DELUGE_INSTALLER_VERSION}" Name "${PROGRAM_NAME} ${PROGRAM_VERSION}" OutFile "${BUILD_DIR}\deluge-${PROGRAM_VERSION}-win32-setup.exe" InstallDir "$PROGRAMFILES\Deluge" ShowInstDetails show ShowUnInstDetails show # Install main application Section "Deluge Bittorrent Client" Section1 SectionIn RO !include "install_files.nsh" SetOverwrite ifnewer SetOutPath "$INSTDIR" File "..\..\LICENSE" SectionEnd Section -StartMenu_Desktop_Links WriteIniStr "$INSTDIR\homepage.url" "InternetShortcut" "URL" "${PROGRAM_WEB_SITE}" # create shortcuts for all users SetShellVarContext all CreateDirectory "$SMPROGRAMS\Deluge" CreateShortCut "$SMPROGRAMS\Deluge\Deluge.lnk" "$INSTDIR\deluge.exe" CreateShortCut "$SMPROGRAMS\Deluge\Website.lnk" "$INSTDIR\homepage.url" CreateShortCut "$SMPROGRAMS\Deluge\Uninstall Deluge.lnk" "$INSTDIR\deluge-uninst.exe" CreateShortCut "$DESKTOP\Deluge.lnk" "$INSTDIR\deluge.exe" SectionEnd Section -Uninstaller WriteUninstaller "$INSTDIR\deluge-uninst.exe" WriteRegStr ${PROGRAM_UNINST_ROOT_KEY} "${PROGRAM_UNINST_KEY}" "DisplayName" "$(^Name)" WriteRegStr ${PROGRAM_UNINST_ROOT_KEY} "${PROGRAM_UNINST_KEY}" "UninstallString" "$INSTDIR\deluge-uninst.exe" SectionEnd # Create file association for .torrent Section "Associate .torrent files with Deluge" Section2 # Set up file association for .torrent files DeleteRegKey HKCR ".torrent" WriteRegStr HKCR ".torrent" "" "Deluge" WriteRegStr HKCR ".torrent" "Content Type" "application/x-bittorrent" DeleteRegKey HKCR "Deluge" WriteRegStr HKCR "Deluge" "" "Deluge" WriteRegStr HKCR "Deluge\Content Type" "" "application/x-bittorrent" WriteRegStr HKCR "Deluge\DefaultIcon" "" "$INSTDIR\deluge.exe,0" WriteRegStr HKCR "Deluge\shell" "" "open" WriteRegStr HKCR "Deluge\shell\open\command" "" '"$INSTDIR\deluge.exe" "%1"' SectionEnd # Create magnet uri association Section "Associate Magnet URI links with Deluge" Section3 DeleteRegKey HKCR "Magnet" WriteRegStr HKCR "Magnet" "" "URL:Magnet Protocol" WriteRegStr HKCR "Magnet" "URL Protocol" "" WriteRegStr HKCR "Magnet\shell\open\command" "" '"$INSTDIR\deluge.exe" "%1"' SectionEnd LangString DESC_Section1 ${LANG_ENGLISH} "Install Deluge Bittorrent client." LangString DESC_Section2 ${LANG_ENGLISH} "Select this option to let Deluge handle the opening of .torrent files." LangString DESC_Section3 ${LANG_ENGLISH} "Select this option to let Deluge handle Magnet URI links from the web-browser." !insertmacro MUI_FUNCTION_DESCRIPTION_BEGIN !insertmacro MUI_DESCRIPTION_TEXT ${Section1} $(DESC_Section1) !insertmacro MUI_DESCRIPTION_TEXT ${Section2} $(DESC_Section2) !insertmacro MUI_DESCRIPTION_TEXT ${Section3} $(DESC_Section3) !insertmacro MUI_FUNCTION_DESCRIPTION_END # --- Uninstallation section --- Section Uninstall Delete "$INSTDIR\LICENSE" Delete "$INSTDIR\homepage.url" Delete "$INSTDIR\deluge-uninst.exe" !include "uninstall_files.nsh" SetShellVarContext all Delete "$SMPROGRAMS\Deluge\Deluge.lnk" Delete "$SMPROGRAMS\Deluge\Uninstall Deluge.lnk" Delete "$SMPROGRAMS\Deluge\Deluge Website.lnk" RmDir "$SMPROGRAMS\Deluge" Delete "$DESKTOP\Deluge.lnk" DeleteRegKey ${PROGRAM_UNINST_ROOT_KEY} "${PROGRAM_UNINST_KEY}" # Only delete the .torrent association if Deluge owns it ReadRegStr $1 HKCR ".torrent" "" StrCmp $1 "Deluge" 0 DELUGE_skip_delete # Delete the key since it is owned by Deluge; afterwards there is no .torrent association DeleteRegKey HKCR ".torrent" DELUGE_skip_delete: # This key is only used by Deluge, so we should always delete it DeleteRegKey HKCR "Deluge" SectionEnd