X-Git-Url: http://git.indexdata.com/?p=yaz-moved-to-github.git;a=blobdiff_plain;f=win%2Fyaz.nsi;h=9d923e6ed98051fab9ff57f22f99e4d70c23433f;hp=2e81a0b737c3aefc4c7d24fca5cd0273ab233ef5;hb=a4a4e9d375bfbcc823e8b3820ffb23272e919004;hpb=473824797f568578dc17d7242551cb2f7ccef46c diff --git a/win/yaz.nsi b/win/yaz.nsi index 2e81a0b..9d923e6 100644 --- a/win/yaz.nsi +++ b/win/yaz.nsi @@ -2,28 +2,48 @@ ; Copyright (C) Index Data ; See the file LICENSE for details. +!include EnvVarUpdate.nsh !include version.nsi -; Microsoft runtime CRT -; Uncomment exactly ONE of the sections 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}" -; 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" +; 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 x86 Minimum Runtime - 14.0.23026 +!define VS_REDIST_KEY "SOFTWARE\Classes\Installer\Products\55E3652ACEB38283D8765E8E9B8E6B57" +!endif -; 4: VS 2008 -;!define VS_RUNTIME_DLL "c:\Program Files\Microsoft Visual Studio 9.0\VC\redist\x86\Microsoft.VC90.CRT\msvc*90.dll" -;!define VS_RUNTIME_MANIFEST "c:\Program Files\Microsoft Visual Studio 9.0\VC\redist\x86\Microsoft.VC90.CRT\Microsoft.VC90.CRT.manifest" +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 x64 Minimum Runtime - 14.0.23026 +!define VS_REDIST_KEY "SOFTWARE\Classes\Installer\Products\51E9E3D0A7EDB003691F4BFA219B4688" +!endif +!if "${VSVER}" = "14" +!define VS_REDIST_EXE vc_redist.${VSARCH}.exe +!else +!define VS_REDIST_EXE vcredist_${VSARCH}.exe +!endif + + +InstallDir "$PROGRAMFILES\YAZ" +!endif -!include "MUI.nsh" + +RequestExecutionLevel admin SetCompressor bzip2 @@ -98,12 +118,18 @@ SectionEnd ; end of default section 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\*.dll File ..\bin\*.exe SetOutPath $SMPROGRAMS\YAZ @@ -168,22 +194,27 @@ SectionEnd Section "YAZ4J" YAZ4J SectionIn 1 2 SetOutPath $INSTDIR\bin - File ..\bin\yaz4j.dll + File /nonfatal ..\bin\yaz4j.dll SetOutPath $INSTDIR\java - File ..\java\yaz4j.jar + 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." @@ -199,6 +230,7 @@ LangString DESC_YAZ_Development ${LANG_ENGLISH} "Header files and import librari 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 @@ -207,6 +239,7 @@ LangString DESC_YAZ4J ${LANG_ENGLISH} "Java wrapper for the ZOOM API of YAZ." !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