From bfe47ca07275898df72a34935d4d76e89e336931 Mon Sep 17 00:00:00 2001 From: kichik Date: Thu, 12 Apr 2007 17:44:25 +0000 Subject: [PATCH] applied patch #1699435 - LIBRARY_IGNORE_VERSION git-svn-id: https://svn.code.sf.net/p/nsis/code/NSIS/trunk@5061 212acab6-be3b-0410-9dea-997c60f758d6 --- Docs/src/library.but | 16 ++++- Include/Library.nsh | 140 ++++++++++++++++++++++--------------------- 2 files changed, 86 insertions(+), 70 deletions(-) diff --git a/Docs/src/library.but b/Docs/src/library.but index bac07c43..2402644a 100644 --- a/Docs/src/library.but +++ b/Docs/src/library.but @@ -104,11 +104,23 @@ The Windows temp directory could be located on any volume, so you cannot use thi LIBRARY_SHELL_EXTENSION -\b Define this before inserting InstallLib macro to call SHChangeNotify with SHCNE_ASSOCCHANGED after registration. Use this to refresh the shell when installing a shell extension or when changing file associations. +\b Define this before inserting InstallLib macro to call SHChangeNotify with SHCNE_ASSOCCHANGED after registration. + +\b Use this to refresh the shell when installing a shell extension or when changing file associations. LIBRARY_COM -\b Define this before inserting InstallLib macro to call CoFreeUnusedLibraries after registration. Use this for unloading all unnecessary libraries from memory when installing COM libraries. +\b Define this before inserting InstallLib macro to call CoFreeUnusedLibraries after registration. + +\b Use this for unloading all unnecessary libraries from memory when installing COM libraries. + +LIBRARY_IGNORE_VERSION + +\b Define this before inserting InstallLib macro to ignore version information in the file and always install it, even if it already exists. + +\b Use this when an older or specific version is required. + +\b Not recommended for DLLs installed to $SYSDIR. \S1{} Notes diff --git a/Include/Library.nsh b/Include/Library.nsh index 398235d0..103ef18a 100644 --- a/Include/Library.nsh +++ b/Include/Library.nsh @@ -256,101 +256,105 @@ ;------------------------ ;Get version information - !insertmacro __InstallLib_Helper_GetVersion D "${LOCALFILE}" + !ifndef LIBRARY_IGNORE_VERSION - !ifdef LIBRARY_VERSION_FILENOTFOUND - !error "InstallLib: The library ${LOCALFILE} could not be found." - !endif + !insertmacro __InstallLib_Helper_GetVersion D "${LOCALFILE}" - !ifndef LIBRARY_VERSION_NONE + !ifdef LIBRARY_VERSION_FILENOTFOUND + !error "InstallLib: The library ${LOCALFILE} could not be found." + !endif - !define LIBRARY_DEFINE_UPGRADE_LABEL - !define LIBRARY_DEFINE_REGISTER_LABEL + !ifndef LIBRARY_VERSION_NONE - StrCpy $R0 ${LIBRARY_VERSION_HIGH} - StrCpy $R1 ${LIBRARY_VERSION_LOW} + !define LIBRARY_DEFINE_UPGRADE_LABEL + !define LIBRARY_DEFINE_REGISTER_LABEL - GetDLLVersion $R4 $R2 $R3 + StrCpy $R0 ${LIBRARY_VERSION_HIGH} + StrCpy $R1 ${LIBRARY_VERSION_LOW} - !undef LIBRARY_VERSION_HIGH - !undef LIBRARY_VERSION_LOW + GetDLLVersion $R4 $R2 $R3 - !ifndef INSTALLLIB_LIBTYPE_TLB & INSTALLLIB_LIBTYPE_REGDLLTLB + !undef LIBRARY_VERSION_HIGH + !undef LIBRARY_VERSION_LOW - IntCmpU $R0 $R2 0 "installlib.register_${INSTALLLIB_UNIQUE}" "installlib.upgrade_${INSTALLLIB_UNIQUE}" - IntCmpU $R1 $R3 "installlib.register_${INSTALLLIB_UNIQUE}" "installlib.register_${INSTALLLIB_UNIQUE}" \ - "installlib.upgrade_${INSTALLLIB_UNIQUE}" - - !else - - !insertmacro __InstallLib_Helper_GetVersion T "${LOCALFILE}" - - !ifdef LIBRARY_VERSION_FILENOTFOUND - !error "InstallLib: The library ${LOCALFILE} could not be found." - !endif - - !ifndef LIBRARY_VERSION_NONE - - IntCmpU $R0 $R2 0 "installlib.register_${INSTALLLIB_UNIQUE}" "installlib.upgrade_${INSTALLLIB_UNIQUE}" - IntCmpU $R1 $R3 0 "installlib.register_${INSTALLLIB_UNIQUE}" \ - "installlib.upgrade_${INSTALLLIB_UNIQUE}" - - !else + !ifndef INSTALLLIB_LIBTYPE_TLB & INSTALLLIB_LIBTYPE_REGDLLTLB IntCmpU $R0 $R2 0 "installlib.register_${INSTALLLIB_UNIQUE}" "installlib.upgrade_${INSTALLLIB_UNIQUE}" IntCmpU $R1 $R3 "installlib.register_${INSTALLLIB_UNIQUE}" "installlib.register_${INSTALLLIB_UNIQUE}" \ "installlib.upgrade_${INSTALLLIB_UNIQUE}" - !endif + !else - !endif + !insertmacro __InstallLib_Helper_GetVersion T "${LOCALFILE}" - !else + !ifdef LIBRARY_VERSION_FILENOTFOUND + !error "InstallLib: The library ${LOCALFILE} could not be found." + !endif - !undef LIBRARY_VERSION_NONE + !ifndef LIBRARY_VERSION_NONE - !ifdef INSTALLLIB_LIBTYPE_TLB | INSTALLLIB_LIBTYPE_REGDLLTLB + IntCmpU $R0 $R2 0 "installlib.register_${INSTALLLIB_UNIQUE}" "installlib.upgrade_${INSTALLLIB_UNIQUE}" + IntCmpU $R1 $R3 0 "installlib.register_${INSTALLLIB_UNIQUE}" \ + "installlib.upgrade_${INSTALLLIB_UNIQUE}" - !insertmacro __InstallLib_Helper_GetVersion T "${LOCALFILE}" + !else - !endif + IntCmpU $R0 $R2 0 "installlib.register_${INSTALLLIB_UNIQUE}" "installlib.upgrade_${INSTALLLIB_UNIQUE}" + IntCmpU $R1 $R3 "installlib.register_${INSTALLLIB_UNIQUE}" "installlib.register_${INSTALLLIB_UNIQUE}" \ + "installlib.upgrade_${INSTALLLIB_UNIQUE}" - !endif - - !ifdef INSTALLLIB_LIBTYPE_TLB | INSTALLLIB_LIBTYPE_REGDLLTLB - - !ifndef LIBRARY_VERSION_NONE - - !ifndef LIBRARY_DEFINE_UPGRADE_LABEL - - !define LIBRARY_DEFINE_UPGRADE_LABEL + !endif !endif - !ifndef LIBRARY_DEFINE_REGISTER_LABEL - - !define LIBRARY_DEFINE_REGISTER_LABEL - - !endif - - StrCpy $R0 ${LIBRARY_VERSION_HIGH} - StrCpy $R1 ${LIBRARY_VERSION_LOW} - - TypeLib::GetLibVersion $R4 - Pop $R3 - Pop $R2 - - IntCmpU $R0 $R2 0 "installlib.register_${INSTALLLIB_UNIQUE}" "installlib.upgrade_${INSTALLLIB_UNIQUE}" - IntCmpU $R1 $R3 "installlib.register_${INSTALLLIB_UNIQUE}" "installlib.register_${INSTALLLIB_UNIQUE}" \ - "installlib.upgrade_${INSTALLLIB_UNIQUE}" - - !undef LIBRARY_VERSION_HIGH - !undef LIBRARY_VERSION_LOW - !else !undef LIBRARY_VERSION_NONE + !ifdef INSTALLLIB_LIBTYPE_TLB | INSTALLLIB_LIBTYPE_REGDLLTLB + + !insertmacro __InstallLib_Helper_GetVersion T "${LOCALFILE}" + + !endif + + !endif + + !ifdef INSTALLLIB_LIBTYPE_TLB | INSTALLLIB_LIBTYPE_REGDLLTLB + + !ifndef LIBRARY_VERSION_NONE + + !ifndef LIBRARY_DEFINE_UPGRADE_LABEL + + !define LIBRARY_DEFINE_UPGRADE_LABEL + + !endif + + !ifndef LIBRARY_DEFINE_REGISTER_LABEL + + !define LIBRARY_DEFINE_REGISTER_LABEL + + !endif + + StrCpy $R0 ${LIBRARY_VERSION_HIGH} + StrCpy $R1 ${LIBRARY_VERSION_LOW} + + TypeLib::GetLibVersion $R4 + Pop $R3 + Pop $R2 + + IntCmpU $R0 $R2 0 "installlib.register_${INSTALLLIB_UNIQUE}" "installlib.upgrade_${INSTALLLIB_UNIQUE}" + IntCmpU $R1 $R3 "installlib.register_${INSTALLLIB_UNIQUE}" "installlib.register_${INSTALLLIB_UNIQUE}" \ + "installlib.upgrade_${INSTALLLIB_UNIQUE}" + + !undef LIBRARY_VERSION_HIGH + !undef LIBRARY_VERSION_LOW + + !else + + !undef LIBRARY_VERSION_NONE + + !endif + !endif !endif