;---------------------------------------------------------; ;Created 08-24 april 2013 by ; ;(C) Kravtsov Konstantin Ivanovich, Novokuznetsk, Russia ; ;State of Art edition version - see below NSI_VER ; ;LogicLib and Winver applied by Leon Bottou ; ; ;---------------------------------------------------------- ;Used software: ;-------------- ;NSIS 2.46 (http://sourceforge.net/projects/nsis/files/NSIS%202/2.46/nsis-2.46-setup.exe/download) ;add-on NSIS 2.46+log (http://sourceforge.net/projects/nsis/files/NSIS%202/2.46/nsis-2.46-log.zip/download) ;HM NIS Edit 2.0.3 -- it's good IDE for NSI building (http://prdownloads.sourceforge.net/hmne/nisedit2.0.3.exe?download) ;with 2.46 NSIS update (http://nsis.sourceforge.net/mediawiki/images/6/64/HMnsiSyntaxConfig.zip) ;Notepad ++ 6.3 (http://download.tuxfamily.org/notepadplus/6.3/npp.6.3.Installer.exe) ;Used docs ;--------- ;NSIS docs and manuals at http://forum.oszone.net/thread-248731.html ;NSIS help at http://forum.oszone.net/thread-168287.html ;NSIS 2.46 User Manual shipped with NSIS ;INSTALLER START ;--------------- ;prepare names RequestExecutionLevel admin !define NSI_VER "9.2" !define DJVULIBRE_NAME "DjVuLibre" !define DJVULIBRE_VERSION "3.5.27" !define CLASSES "Software\Classes\" !define DJVIEW_NAME "DjView" !define DJVIEW_VERSION "4.10" !define VI_PRODUCT_VERSION "4.10.0.0" !define PRODUCT_NAME "${DJVULIBRE_NAME} ${DJVIEW_NAME}" !define UNINST_NAME "${DJVULIBRE_NAME}+${DJVIEW_NAME}" ; for uninstaller !define MENU_NAME "${DJVULIBRE_NAME}" !define PRODUCT_VERSION "${DJVULIBRE_VERSION}+${DJVIEW_VERSION}" ;provide other info !define PRODUCT_PUBLISHER "DjVuZone" !define DJVULIBRE_WEB_SITE "http://djvu.sourceforge.net" !define DJVUORG_WEB_SITE "http://djvu.org" !define DJVIEW_OPTS "--outline --continuous" !define PRODUCT_DOWNLOAD_PAGE "http://sourceforge.net/projects/djvu/files/DjVuLibre_Windows/" !define PRODUCT_ONLINEHELP_PAGE "http://djvu.sourceforge.net/doc/index.html" !define PRODUCT_DIR_REGKEY "Software\Microsoft\Windows\CurrentVersion\App Paths\djview.exe" !define PRODUCT_UNINST_KEY "Software\Microsoft\Windows\CurrentVersion\Uninstall\${UNINST_NAME}" !define PRODUCT_UNINST_ROOT_KEY "HKLM" ;label for HCR !define FILEID "Djview.DjVuFile" !define NO_EXT "no key" !define BACKUP_EXT "DjView.Backup" ;const for url.lnk !define RUN_URL "$WINDIR\system32\rundll32.exe" !define ICO_URL "$WINDIR\system32\url.dll" !define URL_PAR " url.dll,FileProtocolHandler" ;vars Var Djvu_EXT ; ext var Var COUNT ; counter var Var KEY_VAL ; readed key valuse Var TMP_EXT ; for temp reading ext val from reg Var INST_LOG_REN ; flag of exist install.log ;fill installer description VIProductVersion "${VI_PRODUCT_VERSION}" ;end-user doesnot see ;djvulibre version anywhere except installer ;dll's and utils doesn't report any VIAddVersionKey "DjvuLibreVersion" ${DJVULIBRE_VERSION} VIAddVersionKey "DjViewVersion" ${DJVIEW_VERSION} VIAddVersionKey "Installer by" "Konstantin Kravtsov (C) 2013" VIAddVersionKey "FileVersion" ${PRODUCT_VERSION} VIAddVersionKey "ProductName" "${PRODUCT_NAME}" VIAddVersionKey "LegalCopyright" "GPL v2+" VIAddVersionKey "CompanyName" ${PRODUCT_PUBLISHER} VIAddVersionKey "FileDescription" "DjVu view, edit and create tools for Windows" ;---------------- ;Includes section ;---------------- !include "LogicLib.nsh" !include "WinVer.nsh" ;--------------- ;Install section ;--------------- SetCompressor /SOLID lzma Name "${PRODUCT_NAME} ${PRODUCT_VERSION}" OutFile "..\DjVuLibre-${DJVULIBRE_VERSION}_DjView-${DJVIEW_VERSION}_Setup.exe" InstallDir "$PROGRAMFILES\DjVuLibre" InstallDirRegKey HKLM "${PRODUCT_DIR_REGKEY}" "" ShowInstDetails show ShowUnInstDetails show ; MUI 1.67 compatible ------ !include "MUI.nsh" ;settings !define MUI_ABORTWARNING !define MUI_HEADERIMAGE !define MUI_ICON "${NSISDIR}\Contrib\Graphics\Icons\win-install.ico" !define MUI_UNICON "${NSISDIR}\Contrib\Graphics\Icons\win-uninstall.ico" ;language selection dialog settings !define MUI_LANGDLL_ALWAYSSHOW !define MUI_LANGDLL_REGISTRY_ROOT "${PRODUCT_UNINST_ROOT_KEY}" !define MUI_LANGDLL_REGISTRY_KEY "${PRODUCT_UNINST_KEY}" !define MUI_LANGDLL_REGISTRY_VALUENAME "NSIS:Language" ;workaround lang change effect !define MUI_PAGE_CUSTOMFUNCTION_PRE preWelcomePage ;set components decription layout bottom !define MUI_COMPONENTSPAGE_SMALLDESC ;welcome page !define MUI_WELCOMEPAGE_TITLE_3LINES !insertmacro MUI_PAGE_WELCOME ;license page !insertmacro MUI_PAGE_LICENSE "COPYING.txt" ;directory page !insertmacro MUI_PAGE_DIRECTORY ;install options page !insertmacro MUI_PAGE_COMPONENTS ;instfiles page !insertmacro MUI_PAGE_INSTFILES ;finish page !define MUI_FINISHPAGE_RUN " " !define MUI_FINISHPAGE_RUN_TEXT $(Launch_LAB) !define MUI_FINISHPAGE_RUN_NOTCHECKED !define MUI_FINISHPAGE_RUN_FUNCTION "LaunchReadme" !define MUI_FINISHPAGE_NOAUTOCLOSE !define MUI_FINISHPAGE_TITLE_3LINES !insertmacro MUI_PAGE_FINISH ;uninstaller pages !insertmacro MUI_UNPAGE_INSTFILES ;reserve files !insertmacro MUI_RESERVEFILE_INSTALLOPTIONS ;language files !insertmacro MUI_LANGUAGE "English" !insertmacro MUI_LANGUAGE "Russian" ; end MUI 1.67 compatible ------ Function .onInit ;check language !insertmacro MUI_LANGDLL_DISPLAY FunctionEnd Function preWelcomePage ReadRegStr $KEY_VAL ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "UninstallString" ${If} "$KEY_VAL" != "" ReadRegStr $COUNT ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "DisplayVersion" ${If} "$COUNT" == "${PRODUCT_VERSION}" MessageBox MB_YESNO|MB_ICONEXCLAMATION $(Message_AlreadyInstalled) IDNO done ${ElseIf} "$COUNT" S< "${PRODUCT_VERSION}" MessageBox MB_YESNO|MB_ICONEXCLAMATION $(Message_OldFound) IDNO done ${ElseIf} "$COUNT" S> "${PRODUCT_VERSION}" MessageBox MB_YESNO|MB_ICONEXCLAMATION $(Message_NewFound) IDNO done ${EndIf} ;Run the uninstaller ClearErrors ExecWait '"$KEY_VAL" /S' ;; silent ${EndIf} done: FunctionEnd Function RegisterExt ; Kravtsov Konstantin Ivanovich (C) 2013 ; for register ext. Push EXT with ext and call Pop $Djvu_EXT ClearErrors ReadRegStr $TMP_EXT HKLM "${CLASSES}$Djvu_EXT" "" ${If} ${Errors} WriteRegStr HKLM "${CLASSES}$Djvu_EXT" ${BACKUP_EXT} "${NO_EXT}" ${ElseIf} "$TMP_EXT" != "${FILEID}" WriteRegStr HKLM "${CLASSES}$Djvu_EXT" "${BACKUP_EXT}" "$TMP_EXT" ${EndIf} WriteRegStr HKLM "${CLASSES}$Djvu_EXT" "" "${FILEID}" FunctionEnd Function LaunchReadme Exec '"$INSTDIR\djview.exe" --outline --continuous "$INSTDIR\doc\djvulibre-book-en.djvu"' FunctionEnd ;---install files Section "-!DjVuLibre" scDjVuLibre SectionIn RO SetOutPath "$INSTDIR" SetOverwrite try StrCpy $INST_LOG_REN 0 ;set var to zero StrCpy $TMP_EXT "$INSTDIR\install.log" ${If} ${FileExists} $TMP_EXT Rename $TMP_EXT $INSTDIR\install.kik StrCpy $INST_LOG_REN 1 ;set var to rename was ${EndIf} StrCpy $TMP_EXT "$INSTDIR\uninstall.${PRODUCT_VERSION}" ${If} ${FileExists} $TMP_EXT Rename $INSTDIR\uninstall.${PRODUCT_VERSION} $INSTDIR\install.log ${EndIf} ;; all files are installed now Logset on File "*.exe" File "*.dll" File "*.lib" File /r "include" File /r "doc" File /r "plugins" File /r "share" File "qt.conf" File "djvulibre*.ns?" File "COPYING.txt" Logset off SectionEnd ;--- registry Section "-registry" SectionIn RO DetailPrint "Updating registry" ;; app registration WriteRegStr HKLM "${PRODUCT_DIR_REGKEY}" "" "$INSTDIR\djview.exe" WriteRegStr HKLM "${PRODUCT_DIR_REGKEY}" "Path" "$INSTDIR" WriteRegStr HKLM "${CLASSES}Applications\djview.exe" "FriendlyAppName" "DjView" WriteRegStr HKLM "${CLASSES}Applications\djview.exe\SupportedTypes\.djvu" "" "" WriteRegStr HKLM "${CLASSES}Applications\djview.exe\SupportedTypes\.djv" "" "" WriteRegStr HKLM "${CLASSES}Applications\djview.exe\shell\open\command" "" '"$INSTDIR\djview.exe" "%1"' ${If} ${AtLeastWin7} WriteRegDWORD HKLM "${PRODUCT_DIR_REGKEY}" "UseUrl" 1 WriteRegStr HKLM "${CLASSES}Applications\djview.exe\SupportedProtocols\http" "" "" WriteRegStr HKLM "${CLASSES}Applications\djview.exe\SupportedProtocols\https" "" "" ${EndIf} ;; fileid DeleteRegKey HKLM "${CLASSES}${FILEID}" WriteRegStr HKLM "${CLASSES}${FILEID}" "" "DjVu File" WriteRegStr HKLM "${CLASSES}${FILEID}\DefaultIcon" "" "$INSTDIR\djview.exe,1" WriteRegStr HKLM "${CLASSES}${FILEID}\shell\open\command" "" '"$INSTDIR\djview.exe" "%1"' ;; open with WriteRegStr HKLM "${CLASSES}.djv\OpenWithProgids" ${FILEID} "" WriteRegStr HKLM "${CLASSES}.djvu\OpenWithProgids" ${FILEID} "" ClearErrors ReadRegStr $TMP_EXT HKLM "${CLASSES}DjVu.Document" "" ${IfNot} ${Errors} WriteRegStr HKLM "${CLASSES}.djv\OpenWithProgids" "DjVu.Document" "" WriteRegStr HKLM "${CLASSES}.djvu\OpenWithProgids" "DjVu.Document" "" ${EndIf} SectionEnd ;--- associations Section "$(secAssoc)" scAssoc DetailPrint "Creating associations" push ".djvu" Call RegisterExt push ".djv" Call RegisterExt SectionEnd ;--- shortcuts Section "-menuentries" SectionIn RO DetailPrint "Creating menu entries" ;clear old menu rmdir /r "$SMPROGRAMS\${MENU_NAME}" ;; all menu entries LogSet on SetShellVarContext all CreateDirectory "$SMPROGRAMS\${MENU_NAME}" CreateShortCut "$SMPROGRAMS\${MENU_NAME}\DjView.lnk" "$INSTDIR\djview.exe" CreateDirectory "$SMPROGRAMS\${MENU_NAME}\$(Uninst_DIR)" CreateShortCut "$SMPROGRAMS\${MENU_NAME}\$(Uninst_DIR)\$(Uninst_LNK).lnk" "$INSTDIR\uninst.exe" CreateDirectory "$SMPROGRAMS\${MENU_NAME}\$(Doc_DIR)" CreateShortCut "$SMPROGRAMS\${MENU_NAME}\$(Doc_DIR)\$(WEB_LNK) Djvu.org.lnk" ${RUN_URL} "${URL_PAR} ${DJVUORG_WEB_SITE}" ${ICO_URL} 0 CreateShortCut "$SMPROGRAMS\${MENU_NAME}\$(Doc_DIR)\$(WEB_LNK) DjvuLibre.lnk" ${RUN_URL} "${URL_PAR} ${DJVULIBRE_WEB_SITE}" ${ICO_URL} 0 CreateShortCut "$SMPROGRAMS\${MENU_NAME}\$(Doc_DIR)\$(WEB_LNK) DjVuLibre $(WebDL_LNK).lnk" ${RUN_URL} "${URL_PAR} ${PRODUCT_DOWNLOAD_PAGE}" ${ICO_URL} 0 CreateShortCut "$SMPROGRAMS\${MENU_NAME}\$(Doc_DIR)\Online documentation.lnk" ${RUN_URL} "${URL_PAR} ${PRODUCT_ONLINEHELP_PAGE}" ${ICO_URL} 0 CreateShortCut "$SMPROGRAMS\${MENU_NAME}\$(Doc_DIR)\$(Lic_TXT).lnk" "$INSTDIR\COPYING.txt" CreateShortCut "$SMPROGRAMS\${MENU_NAME}\$(Doc_DIR)\DjVuLibre documentation.lnk" "$INSTDIR\djview.exe" '${DJVIEW_OPTS} "$INSTDIR\doc\djvulibre-book-en.djvu"' CreateShortCut "$SMPROGRAMS\${MENU_NAME}\$(Doc_DIR)\Specification of the DjVu format (v2).lnk" "$INSTDIR\djview.exe" '${DJVIEW_OPTS} "$INSTDIR\doc\djvu2spec.djvu"' CreateShortCut "$SMPROGRAMS\${MENU_NAME}\$(Doc_DIR)\Specification of the DjVu format (v3).lnk" "$INSTDIR\djview.exe" '${DJVIEW_OPTS} "$INSTDIR\doc\djvu3spec.djvu"' CreateShortCut "$SMPROGRAMS\${MENU_NAME}\$(Doc_DIR)\Specification of the DjVu format (changes).lnk" "$INSTDIR\doc\djvuchanges.txt" CreateShortCut "$SMPROGRAMS\${MENU_NAME}\$(Doc_DIR)\Lizardtech License Notes 2002.lnk" "$INSTDIR\djview.exe" '"$INSTDIR\doc\lizard2002.djvu"' CreateShortCut "$SMPROGRAMS\${MENU_NAME}\$(Doc_DIR)\Lizardtech License Notes 2007.lnk" "$INSTDIR\djview.exe" '"$INSTDIR\doc\lizard2007.djvu"' ${If} $Language == ${LANG_RUSSIAN} CreateShortCut "$SMPROGRAMS\${MENU_NAME}\$(Doc_DIR)\$(Doc_LNK) ${DJVULIBRE_NAME}.lnk" "$INSTDIR\djview.exe" '${DJVIEW_OPTS} "$INSTDIR\doc\djvulibre-book-ru.djvu"' ${EndIf} LogSet off SectionEnd Section "$(secDesk)" scDesk DetailPrint "Creating desktop shortcut" SetShellVarContext all LogSet on CreateShortCut "$DESKTOP\DjView.lnk" "$INSTDIR\djview.exe" Logset off SectionEnd Section /o "$(secQuick)" scQuick DetailPrint "Creating quick launch shortcut" SetShellVarContext all LogSet on CreateShortCut "$QUICKLAUNCH\DjView.lnk" "$INSTDIR\djview.exe" LogSet off SectionEnd ; --- post install Section -Post WriteUninstaller "$INSTDIR\uninst.exe" WriteRegStr HKLM "${PRODUCT_DIR_REGKEY}" "" "$INSTDIR\djview.exe" WriteRegStr HKLM "${PRODUCT_DIR_REGKEY}" "Path" "$INSTDIR" WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "DisplayName" "${PRODUCT_NAME} ${PRODUCT_VERSION}" WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "UninstallString" "$INSTDIR\uninst.exe" WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "DisplayIcon" "$INSTDIR\djview.exe,0" WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "DisplayVersion" "${PRODUCT_VERSION}" WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "URLInfoAbout" "${DJVULIBRE_WEB_SITE}" WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "Publisher" "${PRODUCT_PUBLISHER}" ;protect install log Rename $INSTDIR\install.log $INSTDIR\uninstall.${PRODUCT_VERSION} SetFileAttributes $INSTDIR\uninstall.${PRODUCT_VERSION} HIDDEN|READONLY|SYSTEM ${If} $INST_LOG_REN == "1" Rename $INSTDIR\install.kik $INSTDIR\install.log ${EndIf} DetailPrint "-----------------------------------------------------------------------------------------------" DetailPrint "Installer NSI V.${NSI_VER} by Kravtsov Konstantin Ivanovich, Novokuznetsk, Russia." DetailPrint "-----------------------------------------------------------------------------------------------" SectionEnd ;------------ ; Uninstaller ;------------ !define UnStrLoc "!insertmacro UnStrLoc" !macro UnStrLoc ResultVar String SubString StartPoint Push "${String}" Push "${SubString}" Push "${StartPoint}" Call un.StrLoc Pop "${ResultVar}" !macroend Function un.StrLoc ; After this point: ; $R0 = StartPoint (input) ; $R1 = SubString (input) ; $R2 = String (input) ; $R3 = SubStringLen (temp) ; $R4 = StrLen (temp) ; $R5 = StartCharPos (temp) ; $R6 = TempStr (temp)*/ ;Get input from user Exch $R0 Exch Exch $R1 Exch 2 Exch $R2 Push $R3 Push $R4 Push $R5 Push $R6 ;Get "String" and "SubString" length StrLen $R3 $R1 StrLen $R4 $R2 ;Start "StartCharPos" counter StrCpy $R5 0 ;Loop until "SubString" is found or "String" reaches its end ${Do} ;Remove everything before and after the searched part ("TempStr") StrCpy $R6 $R2 $R3 $R5 ;Compare "TempStr" with "SubString" ${If} $R6 == $R1 ${If} $R0 == `<` IntOp $R6 $R3 + $R5 IntOp $R0 $R4 - $R6 ${Else} StrCpy $R0 $R5 ${EndIf} ${ExitDo} ${EndIf} ;If not "SubString", this could be "String"'s end ${If} $R5 >= $R4 StrCpy $R0 `` ${ExitDo} ${EndIf} ;If not, continue the loop IntOp $R5 $R5 + 1 ${Loop} ;Return output to user Pop $R6 Pop $R5 Pop $R4 Pop $R3 Pop $R2 Exch Pop $R1 Exch $R0 FunctionEnd Function un.RemoveFiles Exch $R7 ;get path+filename uninstall log push $0 ;$0 - uninstall log file var push $1 ; string readed from file push $2 ; string cutted from $1 push $3 ; int - found str location by StrLoc push $4 ; counter push $5 ; extracted filename DetailPrint "Removing Files.." ${If} ${FileExists} "$R7" ClearErrors FileOpen $0 "$R7" "r" ${Do} ClearErrors FileRead $0 $1 ${If} ${Errors} ;check no file or EOF ${ExitDo} ${EndIf} StrCpy $2 $1 11 ${If} $2 == "File: wrote" ${UnStrloc} $3 $1 " to " ">" Intop $3 $3 + 5 StrCpy $5 $1 -3 $3 Delete /REBOOTOK "$5" ${ElseIf} $2 == "CreateShort" ${UnStrloc} $3 $1 ', in: ' ">" Intop $3 $3 - 22 StrCpy $5 $1 $3 22 Delete /REBOOTOK "$5" ${EndIf} ${Loop} SetDetailsPrint both ;prepare file FileSeek $0 0 ;set counter strcpy $4 0 ${Do} ClearErrors FileRead $0 $1 ${If} ${Errors} ${ExitDo} ${EndIf} StrCpy $2 $1 -2 -10 ${If} $2 == " created" ${UnStrloc} $3 $1 " created" ">" Intop $3 $3 - 18 StrCpy $5 $1 $3 18 push $5 Intop $4 $4 + 1 ${EndIf} ${Loop} ${ForEach} $COUNT $4 1 - 1 POP $5 RmDir /REBOOTOK "$5" ${Next} FileClose $0 ${Else} RMDir /r "$INSTDIR" ; too bad ${EndIf} pop $5 ; extracted filename pop $4 ; counter pop $3 ; int - found str location by StrLoc pop $2 ; string cutted from $1 pop $1 ; string readed from file pop $0 ;$0 - uninstall log file var pop $R7 ; path+filename uninstall log FunctionEnd Function un.RegisterExt ; Kravtsov Konstantin Ivanovich (C) 2013 ; restore assoc from uninst key ; check if restore really need Pop $Djvu_EXT ClearErrors ReadRegStr $TMP_EXT HKLM "${CLASSES}$Djvu_EXT" "" ${IfNot} ${Errors} ${If} "$TMP_EXT" == ${FILEID} ClearErrors ReadRegStr $TMP_EXT HKLM "${CLASSES}$Djvu_EXT" ${BACKUP_EXT} ${IfNot} ${Errors} ${If} "$TMP_EXT" == "${NO_EXT}" WriteRegStr HKLM "${CLASSES}$Djvu_EXT" "" "" ${Else} WriteRegStr HKLM "${CLASSES}$Djvu_EXT" "" $TMP_EXT ${EndIf} DeleteRegValue HKLM "${CLASSES}$Djvu_EXT" ${BACKUP_EXT} ${EndIf} ${EndIf} ${EndIf} FunctionEnd Function un.onUninstSuccess IfSilent +2 MessageBox MB_ICONINFORMATION|MB_OK $(UninstSux_MSG) FunctionEnd Function un.onInit IfSilent +3 MessageBox MB_ICONQUESTION|MB_YESNO|MB_DEFBUTTON2 $(Uninst_MSG) IDYES +2 Abort FunctionEnd Section Uninstall SetShellVarContext all SetFileAttributes $INSTDIR\uninstall.${PRODUCT_VERSION} NORMAL IfSilent +2 SetDetailsPrint both ;; remove all files push $INSTDIR\uninstall.${PRODUCT_VERSION} Call un.RemoveFiles Delete "$INSTDIR\uninstall.${PRODUCT_VERSION}" Delete "$INSTDIR\uninst.exe" RMDir "$INSTDIR" ;; clean registry DeleteRegKey HKLM "${PRODUCT_DIR_REGKEY}" DeleteRegKey HKLM "${CLASSES}${FILEID}" DeleteRegKey HKLM "${CLASSES}Applications\djview.exe" DeleteRegValue HKLM "${CLASSES}.djvu\OpenWithProgIDs" "${FILEID}" DeleteRegValue HKLM "${CLASSES}.djv\OpenWithProgIDs" "${FILEID}" ;if no windjview key - delete openwithprogid ClearErrors ReadRegStr $TMP_EXT HKCR "DjVu.Document" "" ${If} ${Errors} DeleteRegValue HKLM "${CLASSES}.djv\OpenWithProgids" "DjVu.Document" DeleteRegValue HKLM "${CLASSES}.djvu\OpenWithProgids" "DjVu.Document" ${EndIf} Push ".djvu" Call un.RegisterExt Push ".djv" Call un.RegisterExt ;; clean uninstall key DeleteRegKey ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" ; SetAutoClose true DetailPrint "-----------------------------------------------------------------------------------------------" DetailPrint "DjVuLibre installer script V.${NSI_VER} by Kravtsov Konstantin Ivanovich, Novokuznetsk, Russia." DetailPrint "-----------------------------------------------------------------------------------------------" SectionEnd !include "djvulibrelang-ru.nsh" !include "djvulibrelang-en.nsh" ; Section descriptions set !insertmacro MUI_FUNCTION_DESCRIPTION_BEGIN !insertmacro MUI_DESCRIPTION_TEXT ${scAssoc} $(DESC_Assoc) !insertmacro MUI_DESCRIPTION_TEXT ${scQuick} $(DESC_Quick) !insertmacro MUI_DESCRIPTION_TEXT ${scDesk} $(DESC_Desk) !insertmacro MUI_FUNCTION_DESCRIPTION_END