!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 ""
-
-; 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 ""
-
-; 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"
+!include "MUI.nsh"
-; 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"
+!define VS_REDIST_EXE vcredist_${VSARCH}.exe
+!define VS_REDIST_FULL "c:\Program Files (x86)\Microsoft Visual Studio ${VSVER}.0\VC\redist\1033\${VS_REDIST_EXE}"
-; 5: VS 2013
-;!define VS_RUNTIME_DLL "c:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\redist\x86\Microsoft.VC120.CRT\msvc*.dll"
-;!define VS_RUNTIME_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"
+!endif
-; 6: VS 2015
-;!define VS_RUNTIME_DLL "c:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\redist\x86\Microsoft.VC140.CRT\msvc*.dll"
-;!define VS_RUNTIME_MANIFEST ""
+InstallDir "$PROGRAMFILES64\YAZ"
+!else
+; 32-bit
+!if "${VSVER}" = "12"
+!define VS_REDIST_KEY "SOFTWARE\Classes\Installer\Products\21EE4A31AE32173319EEFE3BD6FDFFE3"
+!endif
+!if "${VSVER}" = "14"
+!endif
+InstallDir "$PROGRAMFILES\YAZ"
+!endif
-!include "MUI.nsh"
SetCompressor bzip2
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}"
-!if "${VS_RUNTIME_MANIFEST}" != ""
- File "${VS_RUNTIME_MANIFEST}"
-!endif
File ..\bin\*.dll
File ..\bin\*.exe
SetOutPath $SMPROGRAMS\YAZ