-; $Id: yaz.nsi,v 1.127 2008-01-17 22:27:40 adam Exp $
+; This file is part of the YAZ toolkit.
+; Copyright (C) Index Data
+; See the file LICENSE for details.
-!define VERSION "3.0.22"
+!include EnvVarUpdate.nsh
+!include version.nsi
-; Microsoft runtime CRT
-; Uncomment exactly ONE section of the three below
-; 1: MSVC 6
-!define VS_RUNTIME_DLL ""
-!define VS_RUNTIME_MANIFEST ""
+!include "MUI.nsh"
-; 2: VS 2003
-; !define VS_RUNTIME_DLL "c:\Program Files\Microsoft Visual Studio .NET 2003\SDK\v1.1\Bin\msvcr71.dll"
-;!define VS_RUNTIME_MANIFEST ""
+!define VS_REDIST_FULL "c:\Program Files (x86)\Microsoft Visual Studio ${VSVER}.0\VC\redist\1033\${VS_REDIST_EXE}"
+
+; For example can be found with regedit:
+; Microsoft Visual C++ 2013 x86 Minimum Runtime
+!if "${VSARCH}" = "x64"
+; 64-bit
+!if "${VSVER}" = "12"
+!define VS_REDIST_KEY "SOFTWARE\Classes\Installer\Products\6E8D947A316B3EB3F8F540C548BE2AB9"
+!endif
+!if "${VSVER}" = "14"
+; Microsoft Visual C++ 2015 x64 Minimum Runtime - 14.0.23026
+!define VS_REDIST_KEY "SOFTWARE\Classes\Installer\Products\51E9E3D0A7EDB003691F4BFA219B4688"
+!endif
+
+InstallDir "$PROGRAMFILES64\YAZ"
+!else
+; 32-bit
+!if "${VSVER}" = "12"
+!define VS_REDIST_KEY "SOFTWARE\Classes\Installer\Products\21EE4A31AE32173319EEFE3BD6FDFFE3"
+!endif
+!if "${VSVER}" = "14"
+; Microsoft Visual C++ 2015 x86 Minimum Runtime - 14.0.23026
+!define VS_REDIST_KEY "SOFTWARE\Classes\Installer\Products\55E3652ACEB38283D8765E8E9B8E6B57"
+!endif
-; 3: VS 2005
-;!define VS_RUNTIME_DLL "c:\Program Files\Microsoft Visual Studio 8\VC\redist\x86\Microsoft.VC80.CRT\msvcr80.dll"
-;!define VS_RUNTIME_MANIFEST "c:\Program Files\Microsoft Visual Studio 8\VC\redist\x86\Microsoft.VC80.CRT\Microsoft.VC80.CRT.manifest"
+InstallDir "$PROGRAMFILES\YAZ"
+!endif
+!if "${VSVER}" = "14"
+!define VS_REDIST_EXE vc_redist.${VSARCH}.exe
+!else
+!define VS_REDIST_EXE vcredist_${VSARCH}.exe
+!endif
-!include "MUI.nsh"
+RequestExecutionLevel admin
SetCompressor bzip2
InstType "Full (w/ Source)"
InstType "Lite (w/o Source)"
-InstallDir "$PROGRAMFILES\YAZ"
InstallDirRegKey HKLM "SOFTWARE\Index Data\YAZ" ""
CreateShortCut "$SMPROGRAMS\YAZ\YAZ Program Directory.lnk" \
"$INSTDIR"
WriteINIStr "$SMPROGRAMS\YAZ\YAZ Home page.url" \
- "InternetShortcut" "URL" "http://www.indexdata.dk/yaz/"
+ "InternetShortcut" "URL" "http://www.indexdata.com/yaz/"
CreateShortCut "$SMPROGRAMS\YAZ\Uninstall YAZ.lnk" \
"$INSTDIR\uninst.exe"
SetOutPath $INSTDIR
File LICENSE.txt
- File ..\README
+ File ..\README.md
File ..\NEWS
SetOutPath $INSTDIR
SetOutPath $INSTDIR\ztest
- File ..\ztest\dummy-records
File ..\ztest\dummy-grs
File ..\ztest\dummy-words
SetOutPath $INSTDIR\etc
Section "YAZ Runtime" YAZ_Runtime
SectionIn 1 2
+ SetOutPath $INSTDIR\bin
+!if "${VS_REDIST_FULL}" != ""
+ File "${VS_REDIST_FULL}"
+ ReadRegDword $1 HKLM "${VS_REDIST_KEY}" "Version"
+ ${If} $1 == ""
+ ExecWait '"$INSTDIR\bin\${VS_REDIST_EXE}" /passive /nostart'
+ ${endif}
+ Delete "$INSTDIR\bin\${VS_REDIST_EXE}"
+!endif
IfFileExists "$INSTDIR\bin\yaz-ztest.exe" 0 Noservice
ExecWait '"$INSTDIR\bin\yaz-ztest.exe" -remove'
Noservice:
- SetOutPath $INSTDIR\bin
- File "${VS_RUNTIME_DLL}"
- File "${VS_RUNTIME_MANIFEST}"
- File ..\bin\iconv.dll
- File ..\bin\zlib1.dll
- File ..\bin\libxml2.dll
- File ..\bin\libxslt.dll
- File ..\bin\yaz3.dll
- File ..\bin\icudt38.dll
- File ..\bin\icuin38.dll
- File ..\bin\icuuc38.dll
- File ..\bin\yaz_icu3.dll
+ File ..\bin\*.dll
File ..\bin\*.exe
SetOutPath $SMPROGRAMS\YAZ
CreateShortCut "$SMPROGRAMS\YAZ\YAZ Client.lnk" \
SetOutPath $INSTDIR\include\yaz
File ..\include\yaz\*.h
SetOutPath $INSTDIR\lib
- File ..\lib\yaz3.lib
+ File ..\lib\yaz*.lib
SectionEnd
Section "YAZ Documentation" YAZ_Documentation
SectionIn 1 2
SetOutPath $INSTDIR\doc
- File /r ..\doc\*.css
- File /r ..\doc\*.ent
- File /r ..\doc\*.html
+ File /nonfatal /r ..\doc\*.css
+ File /nonfatal /r ..\doc\*.ent
+ File /nonfatal /r ..\doc\*.html
File /r ..\doc\*.xml
File /r ..\doc\*.png
- File /r ..\doc\*.xsl
+ File /nonfatal /r ..\doc\*.xsl
SetOutPath $SMPROGRAMS\YAZ
CreateShortCut "$SMPROGRAMS\YAZ\HTML Documentation.lnk" \
"$INSTDIR\doc\index.html"
Section "YAZ Source" YAZ_Source
SectionIn 1
SetOutPath $INSTDIR
+ File ..\IDMETA
File /r ..\*.c
File /r /x yaz ..\*.h
SetOutPath $INSTDIR\util
File ..\src\*.tcl
File ..\src\*.csv
File ..\src\*.asn
- File ..\src\codetables.xml
+ File ..\src\codetables*.xml
SetOutPath $INSTDIR\test
File ..\test\marc*.*
File ..\test\*.sh
File *.rc
SectionEnd
+Section "YAZ4J" YAZ4J
+ SectionIn 1 2
+ SetOutPath $INSTDIR\bin
+ File /nonfatal ..\bin\yaz4j.dll
+ SetOutPath $INSTDIR\java
+ File /nonfatal ..\java\yaz4j.jar
+SectionEnd
+
+Section "YAZ Path" YAZ_PATH
+ SectionIn 1 2
+ ${EnvVarUpdate} $0 "PATH" "A" "HKLM" "$INSTDIR\bin"
+SectionEnd
+
; begin uninstall settings/section
UninstallText "This will uninstall YAZ ${VERSION} from your system"
Section Uninstall
-; add delete commands to delete whatever files/registry keys/etc you installed here.
+ ExecWait '"$INSTDIR\bin\yaz-ztest" -remove'
+ RMDir /r $SMPROGRAMS\YAZ
Delete "$INSTDIR\uninst.exe"
DeleteRegKey HKLM "SOFTWARE\Index Data\YAZ"
DeleteRegKey HKLM "SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\YAZ"
- ExecWait '"$INSTDIR\bin\yaz-ztest" -remove'
- RMDir /r $SMPROGRAMS\YAZ
RMDir /r $INSTDIR
+ ${un.EnvVarUpdate} $0 "PATH" "R" "HKLM" "$INSTDIR\bin"
IfFileExists $INSTDIR 0 Removed
MessageBox MB_OK|MB_ICONEXCLAMATION \
"Note: $INSTDIR could not be removed."
LangString DESC_YAZ_Development ${LANG_ENGLISH} "Header files and import libraries required for developing software using YAZ."
LangString DESC_YAZ_Documentation ${LANG_ENGLISH} "YAZ Users' guide and reference in HTML. Describes both YAZ applications and the API."
LangString DESC_YAZ_Source ${LANG_ENGLISH} "Source code of YAZ. Required if you need to rebuild YAZ (for debugging purposes)."
+LangString DESC_YAZ4J ${LANG_ENGLISH} "Java wrapper for the ZOOM API of YAZ."
+LangString DESC_YAZ_PATH ${LANG_ENGLISH} "Update PATH to include binaries of YAZ."
;Assign language strings to sections
!insertmacro MUI_FUNCTION_DESCRIPTION_BEGIN
!insertmacro MUI_DESCRIPTION_TEXT ${YAZ_Development} $(DESC_YAZ_Development)
!insertmacro MUI_DESCRIPTION_TEXT ${YAZ_Documentation} $(DESC_YAZ_Documentation)
!insertmacro MUI_DESCRIPTION_TEXT ${YAZ_Source} $(DESC_YAZ_Source)
+!insertmacro MUI_DESCRIPTION_TEXT ${YAZ4J} $(DESC_YAZ4J)
+!insertmacro MUI_DESCRIPTION_TEXT ${YAZ_PATH} $(DESC_YAZ_PATH)
!insertmacro MUI_FUNCTION_DESCRIPTION_END
; eof