;---------------------------------------------------------;
;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