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