; Script written by PhobosK. ; Released under GPLv3 ; ; WARNING: Distributing the installer or the binaries that you get via this script ; breaks the EULAs with Microsoft and this makes their distribution ILLEGAL. ; BTW the same issue is with the official SubDownloader installer/binaries... ; ; ; Definitions !define PRODUCT_NAME "SubDownloader" !define PRODUCT_VERSION "2.0.9" !define PRODUCT_PUBLISHER "PhobosK" !define PRODUCT_WEB_SITE "http://www.subdownloader.net/" !define PRODUCT_DIR_REGKEY "Software\Microsoft\Windows\CurrentVersion\App Paths\${PRODUCT_NAME}.exe" !define PRODUCT_UNINST_KEY "Software\Microsoft\Windows\CurrentVersion\Uninstall\${PRODUCT_NAME}" !define PRODUCT_UNINST_ROOT_KEY "HKLM" !define PRODUCT_STARTMENU_REGVAL "NSIS:StartMenuDir" SetCompressor lzma !include "MUI.nsh" !include "WordFunc.nsh" ; MUI Settings !define MUI_ABORTWARNING !define MUI_ABORTWARNING_CANCEL_DEFAULT !define MUI_LANGDLL_ALLLANGUAGES !define MUI_LANGDLL_ALWAYSSHOW !define MUI_ICON "${NSISDIR}\Contrib\Graphics\Icons\modern-install.ico" !define MUI_UNICON "${NSISDIR}\Contrib\Graphics\Icons\modern-uninstall.ico" ; Language Selection Dialog Settings !define MUI_LANGDLL_REGISTRY_ROOT "${PRODUCT_UNINST_ROOT_KEY}" !define MUI_LANGDLL_REGISTRY_KEY "${PRODUCT_UNINST_KEY}" !define MUI_LANGDLL_REGISTRY_VALUENAME "NSIS:Language" ; Welcome page !insertmacro MUI_PAGE_WELCOME ; License page !insertmacro MUI_PAGE_LICENSE "COPYING" ; Directory page !insertmacro MUI_PAGE_DIRECTORY ; Start menu page var ICONS_GROUP !define MUI_STARTMENUPAGE_DEFAULTFOLDER "${PRODUCT_NAME}" !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_NOAUTOCLOSE !define MUI_FINISHPAGE_RUN_NOTCHECKED !define MUI_FINISHPAGE_RUN "$INSTDIR\${PRODUCT_NAME}.exe" !insertmacro MUI_PAGE_FINISH ; Uninstaller pages !define MUI_UNFINISHPAGE_NOAUTOCLOSE !insertmacro MUI_UNPAGE_WELCOME !insertmacro MUI_UNPAGE_CONFIRM !insertmacro MUI_UNPAGE_INSTFILES !insertmacro MUI_UNPAGE_FINISH ; Reserve files !insertmacro MUI_RESERVEFILE_INSTALLOPTIONS ; Language files !insertmacro MUI_LANGUAGE "English" !insertmacro MUI_LANGUAGE "Bulgarian" !insertmacro MUI_LANGUAGE "French" !insertmacro MUI_LANGUAGE "German" !insertmacro MUI_LANGUAGE "Japanese" !insertmacro MUI_LANGUAGE "Portuguese" !insertmacro MUI_LANGUAGE "Russian" !insertmacro MUI_LANGUAGE "Spanish" ; MUI end ------ Name "${PRODUCT_NAME} ${PRODUCT_VERSION}" OutFile "${PRODUCT_NAME}_${PRODUCT_VERSION}-Installer.exe" InstallDir "$PROGRAMFILES\${PRODUCT_NAME}" InstallDirRegKey HKLM "${PRODUCT_DIR_REGKEY}" "" ShowInstDetails show ShowUnInstDetails show Function .onInit !insertmacro MUI_LANGDLL_DISPLAY ;Check to see if there is an old install ReadRegStr $R0 HKLM \ "${PRODUCT_UNINST_KEY}" \ "UninstallString" ReadRegStr $R1 HKLM \ "${PRODUCT_UNINST_KEY}2" \ "UninstallString" ${If} $R0 != "" ; Checks if it is an old FREE version MessageBox MB_OKCANCEL|MB_ICONEXCLAMATION \ "${PRODUCT_NAME} is already installed. $\n$\nClick `OK` to remove the \ existing version or `Cancel` to cancel this installation." \ IDOK +2 Abort ${WordFind} "$R0" "\" "-2{*" $R3 ${WordReplace} $R3 '"' "" "+" $R3 ClearErrors ExecWait "$R0 _?=$R3" ;Run the uninstaller of the old FREE version Delete "$R3\*.*" RMDir "$R3" IfErrors +1 done MessageBox MB_OKCANCEL|MB_ICONEXCLAMATION \ "The old installation of ${PRODUCT_NAME} could't be removed. $\n$\nClick `OK` to continue with \ this installation or `Cancel` to cancel installation." \ IDOK done Abort ${ElseIf} $R1 != "" ; Check if it is an old SHAREWARE version MessageBox MB_OKCANCEL|MB_ICONEXCLAMATION \ "An old SHAREWARE version of ${PRODUCT_NAME} is already installed. $\n$\nClick `OK` to remove the \ SHAREWARE version or `Cancel` to cancel this upgrade." \ IDOK +2 Abort ${WordFind} "$R1" "\" "-2{*" $R3 ${WordReplace} $R3 '"' "" "+" $R3 ClearErrors ExecWait "$R1 _?=$R3" ;Run the uninstaller of the old SHAREWARE version Delete "$R3\*.*" RMDir "$R3" IfErrors +1 done MessageBox MB_OKCANCEL|MB_ICONEXCLAMATION \ "The old SHAREWARE installation of ${PRODUCT_NAME} could't be removed. $\n$\nClick `OK` to continue with \ this FREE version installation or `Cancel` to cancel installation." \ IDOK done Abort ${EndIf} done: FunctionEnd Section "MainSection" SEC01 SetOutPath "$INSTDIR\gui\images" File "dist\gui\images\*.*" SetOutPath "$INSTDIR\languages\lm" File "dist\languages\lm\*.lm" SetOutPath "$INSTDIR\locale\de\LC_MESSAGES" File "dist\locale\de\LC_MESSAGES\subdownloader.mo" SetOutPath "$INSTDIR\locale\en\LC_MESSAGES" File "dist\locale\en\LC_MESSAGES\subdownloader.mo" File "dist\locale\en\LC_MESSAGES\subdownloader.pot" SetOutPath "$INSTDIR\locale\es\LC_MESSAGES" File "dist\locale\es\LC_MESSAGES\subdownloader.mo" SetOutPath "$INSTDIR\locale\eu\LC_MESSAGES" File "dist\locale\eu\LC_MESSAGES\subdownloader.mo" SetOutPath "$INSTDIR\locale\fi\LC_MESSAGES" File "dist\locale\fi\LC_MESSAGES\subdownloader.mo" SetOutPath "$INSTDIR\locale\fr\LC_MESSAGES" File "dist\locale\fr\LC_MESSAGES\subdownloader.mo" SetOutPath "$INSTDIR\locale\he\LC_MESSAGES" File "dist\locale\he\LC_MESSAGES\subdownloader.mo" SetOutPath "$INSTDIR\locale\hu\LC_MESSAGES" File "dist\locale\hu\LC_MESSAGES\subdownloader.mo" SetOutPath "$INSTDIR\locale\it\LC_MESSAGES" File "dist\locale\it\LC_MESSAGES\subdownloader.mo" SetOutPath "$INSTDIR\locale\nl\LC_MESSAGES" File "dist\locale\nl\LC_MESSAGES\subdownloader.mo" SetOutPath "$INSTDIR\locale\pl\LC_MESSAGES" File "dist\locale\pl\LC_MESSAGES\subdownloader.mo" SetOutPath "$INSTDIR\locale\pt\LC_MESSAGES" File "dist\locale\pt\LC_MESSAGES\subdownloader.mo" SetOutPath "$INSTDIR\locale\pt_BR\LC_MESSAGES" File "dist\locale\pt_BR\LC_MESSAGES\subdownloader.mo" SetOutPath "$INSTDIR\locale\ro\LC_MESSAGES" File "dist\locale\ro\LC_MESSAGES\subdownloader.mo" SetOutPath "$INSTDIR\locale\ru\LC_MESSAGES" File "dist\locale\ru\LC_MESSAGES\subdownloader.mo" SetOutPath "$INSTDIR\locale\sk\LC_MESSAGES" File "dist\locale\sk\LC_MESSAGES\subdownloader.mo" SetOutPath "$INSTDIR\locale\sv\LC_MESSAGES" File "dist\locale\sv\LC_MESSAGES\subdownloader.mo" SetOutPath "$INSTDIR\locale\vi\LC_MESSAGES" File "dist\locale\vi\LC_MESSAGES\subdownloader.mo" SetOutPath "$INSTDIR\locale\zh_TW\LC_MESSAGES" File "dist\locale\zh_TW\LC_MESSAGES\subdownloader.mo" SetOutPath "$INSTDIR" File "dist\*.exe" File "dist\*.dll" File "COPYING" ; Shortcuts !insertmacro MUI_STARTMENU_WRITE_BEGIN Application CreateDirectory "$SMPROGRAMS\$ICONS_GROUP" CreateShortCut "$SMPROGRAMS\$ICONS_GROUP\${PRODUCT_NAME}.lnk" "$INSTDIR\${PRODUCT_NAME}.exe" \ "" "$INSTDIR\gui\images\icon32.ico" CreateShortCut "$DESKTOP\${PRODUCT_NAME}.lnk" "$INSTDIR\${PRODUCT_NAME}.exe" \ "" "$INSTDIR\gui\images\icon32.ico" !insertmacro MUI_STARTMENU_WRITE_END SectionEnd Section -AdditionalIcons !insertmacro MUI_STARTMENU_WRITE_BEGIN Application WriteIniStr "$INSTDIR\${PRODUCT_NAME}.url" "InternetShortcut" "URL" "${PRODUCT_WEB_SITE}" CreateShortCut "$SMPROGRAMS\$ICONS_GROUP\${PRODUCT_NAME} Online.lnk" "$INSTDIR\${PRODUCT_NAME}.url" \ "" "$INSTDIR\gui\images\icon32.ico" CreateShortCut "$SMPROGRAMS\$ICONS_GROUP\Uninstall ${PRODUCT_NAME}.lnk" "$INSTDIR\uninst.exe" !insertmacro MUI_STARTMENU_WRITE_END SectionEnd Section -Post WriteUninstaller "$INSTDIR\uninst.exe" WriteRegStr HKLM "${PRODUCT_DIR_REGKEY}" "" "$INSTDIR\${PRODUCT_NAME}.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\${PRODUCT_NAME}.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}" "Publisher" "${PRODUCT_PUBLISHER}" SectionEnd Section Uninstall !insertmacro MUI_STARTMENU_GETFOLDER "Application" $ICONS_GROUP Delete "$INSTDIR\*.*" Delete "$SMPROGRAMS\$ICONS_GROUP\${PRODUCT_NAME}.lnk" Delete "$SMPROGRAMS\$ICONS_GROUP\${PRODUCT_NAME} Online.lnk" Delete "$SMPROGRAMS\$ICONS_GROUP\Uninstall ${PRODUCT_NAME}.lnk" Delete "$DESKTOP\${PRODUCT_NAME}.lnk" RMDir "$SMPROGRAMS\$ICONS_GROUP" RMDir /r "$INSTDIR\locale" RMDir /r "$INSTDIR\languages" RMDir /r "$INSTDIR\gui" RMDir "$INSTDIR" DeleteRegKey ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" DeleteRegKey HKLM "${PRODUCT_DIR_REGKEY}" SectionEnd