1
0
mirror of https://github.com/nmap/nmap.git synced 2025-12-26 17:39:03 +00:00

Updated the Visual C++ 2008 Redistributable to the latest SP1 version to avoid Windows Update prompting for the SP1 update after installing the RTM with ATL update.

Added new functions to create the Nmap uninstaller and install the VC++ 2008 and 2010 redistributables in the appropriate sections. Previously we only created the uninstaller if the Nmap Core Files were selected, and we didn't install the VC++ files if Nping, Ncat and Ndiff were installed on their own.
This commit is contained in:
robert
2010-11-18 13:22:49 +00:00
parent fb8ae1ffd0
commit 29d67ee8c3
2 changed files with 82 additions and 60 deletions

View File

@@ -87,6 +87,9 @@ SetCompressor /SOLID /FINAL lzma
;Variables
Var zenmapset
Var addremoveset
Var vcredist2010set
Var vcredist2008set
;--------------------------------
;Reserves
@@ -202,39 +205,9 @@ Section "Nmap Core Files" SecCore
;Store installation folder
WriteRegStr HKCU "Software\Nmap" "" $INSTDIR
;Check if VC++ 2010 runtimes are already installed - NOTE Both the UID in the registry key and the DisplayName string must be updated here (and below)
;whenever the Redistributable package is upgraded:
ReadRegStr $0 HKLM "SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{196BB40D-1578-3D01-B289-BEFC77A11A1E}" "DisplayName"
StrCmp $0 "Microsoft Visual C++ 2010 x86 Redistributable - 10.0.30319" create_uninstaller vcredist_silent_install
;If VC++ 2010 runtimes are not installed...
vcredist_silent_install:
DetailPrint "Installing Microsoft Visual C++ 2010 Redistributable"
File ..\vcredist_x86.exe
ExecWait '"$INSTDIR\vcredist_x86.exe" /q' $0
;Check for successful installation of our vcredist_x86.exe...
ReadRegStr $0 HKLM "SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{196BB40D-1578-3D01-B289-BEFC77A11A1E}" "DisplayName"
StrCmp $0 "Microsoft Visual C++ 2010 x86 Redistributable - 10.0.30319" vcredist_success vcredist_not_present
vcredist_not_present:
DetailPrint "Microsoft Visual C++ 2010 Redistributable failed to install"
IfSilent create_uninstaller vcredist_messagebox
vcredist_messagebox:
MessageBox MB_OK "Microsoft Visual C++ 2010 Redistributable Package (x86) failed to install ($INSTDIR\vcredist_x86.exe). Please ensure your system meets the minimum requirements before running the installer again."
Goto create_uninstaller
vcredist_success:
Delete "$INSTDIR\vcredist_x86.exe"
DetailPrint "Microsoft Visual C++ 2010 Redistributable was successfully installed"
create_uninstaller:
;Create uninstaller
WriteUninstaller "$INSTDIR\Uninstall.exe"
Call vcredist2010installer
Call create_uninstaller
; Register Nmap with add/remove programs
WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\Nmap" "DisplayName" "Nmap ${VERSION}"
WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\Nmap" "UninstallString" '"$INSTDIR\uninstall.exe"'
WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\Nmap" "DisplayIcon" '"$INSTDIR\icon1.ico"'
WriteRegDWORD HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\Nmap" "NoModify" 1
WriteRegDWORD HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\Nmap" "NoRepair" 1
SectionEnd
Section "Register Nmap Path" SecRegisterPath
@@ -272,32 +245,6 @@ Section "Network Performance Improvements" SecPerfRegistryMods
SectionEnd
Section "Zenmap (GUI Frontend)" SecZenmap
;Check if VC++ 2008 runtimes are already installed - NOTE Both the UID in the registry key and the DisplayName string must be updated here (and below)
;whenever the Redistributable package is upgraded:
ReadRegStr $0 HKLM "SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{E503B4BF-F7BB-3D5F-8BC8-F694B1CFF942}" "DisplayName"
StrCmp $0 "Microsoft Visual C++ 2008 Redistributable - x86 9.0.21022.218" vcredist2008_done vcredist2008_silent_install
;If VC++ 2008 runtimes are not installed...
vcredist2008_silent_install:
DetailPrint "Installing Microsoft Visual C++ 2008 Redistributable"
File ..\vcredist2008_x86.exe
ExecWait '"$INSTDIR\vcredist2008_x86.exe" /q' $0
;Check for successful installation of our 2008 version of vcredist_x86.exe...
ReadRegStr $0 HKLM "SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{E503B4BF-F7BB-3D5F-8BC8-F694B1CFF942}" "DisplayName"
StrCmp $0 "Microsoft Visual C++ 2008 Redistributable - x86 9.0.21022.218" vcredist2008_success vcredist2008_not_present
vcredist2008_not_present:
DetailPrint "Microsoft Visual C++ 2008 Redistributable failed to install"
IfSilent vcredist2008_done vcredist2008_messagebox
vcredist2008_messagebox:
MessageBox MB_OK "Microsoft Visual C++ 2008 Redistributable Package (x86) failed to install ($INSTDIR\vcredist2008_x86.exe). Please ensure your system meets the minimum requirements before running the installer again."
Goto vcredist2008_done
vcredist2008_success:
Delete "$INSTDIR\vcredist2008_x86.exe"
DetailPrint "Microsoft Visual C++ 2008 Redistributable was successfully installed"
vcredist2008_done:
SetOutPath "$INSTDIR"
SetOverwrite on
File ..\nmap-${VERSION}\zenmap.exe
@@ -307,6 +254,8 @@ Section "Zenmap (GUI Frontend)" SecZenmap
File /r ..\nmap-${VERSION}\share
File /r ..\nmap-${VERSION}\py2exe
StrCpy $zenmapset "true"
Call vcredist2008installer
Call create_uninstaller
SectionEnd
Section "Ncat (Modern Netcat reincarnation)" SecNcat
@@ -314,6 +263,8 @@ Section "Ncat (Modern Netcat reincarnation)" SecNcat
SetOverwrite on
File ..\nmap-${VERSION}\ncat.exe
File ..\nmap-${VERSION}\ca-bundle.crt
Call vcredist2010installer
Call create_uninstaller
SectionEnd
Section "Ndiff (Scan comparison tool)" SecNdiff
@@ -323,14 +274,85 @@ Section "Ndiff (Scan comparison tool)" SecNdiff
File ..\nmap-${VERSION}\NDIFF_README
File ..\nmap-${VERSION}\python27.dll
File /r ..\nmap-${VERSION}\py2exe
Call vcredist2008installer
Call create_uninstaller
SectionEnd
Section "Nping (Packet generator)" SecNping
SetOutPath "$INSTDIR"
SetOverwrite on
File ..\nmap-${VERSION}\nping.exe
Call vcredist2010installer
Call create_uninstaller
SectionEnd
Function vcredist2010installer
StrCmp $vcredist2010set "" 0 vcredist_done
StrCpy $vcredist2010set "true"
;Check if VC++ 2010 runtimes are already installed - NOTE Both the UID in the registry key and the DisplayName string must be updated here (and below)
;whenever the Redistributable package is upgraded:
ReadRegStr $0 HKLM "SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{196BB40D-1578-3D01-B289-BEFC77A11A1E}" "DisplayName"
StrCmp $0 "Microsoft Visual C++ 2010 x86 Redistributable - 10.0.30319" vcredist_done vcredist_silent_install
;If VC++ 2010 runtimes are not installed...
vcredist_silent_install:
DetailPrint "Installing Microsoft Visual C++ 2010 Redistributable"
File ..\vcredist_x86.exe
ExecWait '"$INSTDIR\vcredist_x86.exe" /q' $0
;Check for successful installation of our vcredist_x86.exe...
ReadRegStr $0 HKLM "SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{196BB40D-1578-3D01-B289-BEFC77A11A1E}" "DisplayName"
StrCmp $0 "Microsoft Visual C++ 2010 x86 Redistributable - 10.0.30319" vcredist_success vcredist_not_present
vcredist_not_present:
DetailPrint "Microsoft Visual C++ 2010 Redistributable failed to install"
IfSilent vcredist_done vcredist_messagebox
vcredist_messagebox:
MessageBox MB_OK "Microsoft Visual C++ 2010 Redistributable Package (x86) failed to install ($INSTDIR\vcredist_x86.exe). Please ensure your system meets the minimum requirements before running the installer again."
Goto vcredist_done
vcredist_success:
Delete "$INSTDIR\vcredist_x86.exe"
DetailPrint "Microsoft Visual C++ 2010 Redistributable was successfully installed"
vcredist_done:
FunctionEnd
Function vcredist2008installer
StrCmp $vcredist2008set "" 0 vcredist2008_done
StrCpy $vcredist2008set "true"
;Check if VC++ 2008 runtimes are already installed - NOTE Both the UID in the registry key and the DisplayName string must be updated here (and below)
;whenever the Redistributable package is upgraded:
ReadRegStr $0 HKLM "SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{1F1C2DFC-2D24-3E06-BCB8-725134ADF989}" "DisplayName"
StrCmp $0 "Microsoft Visual C++ 2008 Redistributable - x86 9.0.30729.4148" vcredist2008_done vcredist2008_silent_install
;If VC++ 2008 runtimes are not installed...
vcredist2008_silent_install:
DetailPrint "Installing Microsoft Visual C++ 2008 Redistributable"
File ..\vcredist2008_x86.exe
ExecWait '"$INSTDIR\vcredist2008_x86.exe" /q' $0
;Check for successful installation of our 2008 version of vcredist_x86.exe...
ReadRegStr $0 HKLM "SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{1F1C2DFC-2D24-3E06-BCB8-725134ADF989}" "DisplayName"
StrCmp $0 "Microsoft Visual C++ 2008 Redistributable - x86 9.0.30729.4148" vcredist2008_success vcredist2008_not_present
vcredist2008_not_present:
DetailPrint "Microsoft Visual C++ 2008 Redistributable failed to install"
IfSilent vcredist2008_done vcredist2008_messagebox
vcredist2008_messagebox:
MessageBox MB_OK "Microsoft Visual C++ 2008 Redistributable Package (x86) failed to install ($INSTDIR\vcredist2008_x86.exe). Please ensure your system meets the minimum requirements before running the installer again."
Goto vcredist2008_done
vcredist2008_success:
Delete "$INSTDIR\vcredist2008_x86.exe"
DetailPrint "Microsoft Visual C++ 2008 Redistributable was successfully installed"
vcredist2008_done:
FunctionEnd
Function create_uninstaller
StrCmp $addremoveset "" 0 skipaddremove
; Register Nmap with add/remove programs
WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\Nmap" "DisplayName" "Nmap ${VERSION}"
WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\Nmap" "UninstallString" '"$INSTDIR\uninstall.exe"'
WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\Nmap" "DisplayIcon" '"$INSTDIR\icon1.ico"'
WriteRegDWORD HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\Nmap" "NoModify" 1
WriteRegDWORD HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\Nmap" "NoRepair" 1
;Create uninstaller
WriteUninstaller "$INSTDIR\Uninstall.exe"
StrCpy $addremoveset "true"
skipaddremove:
FunctionEnd
;Disable a named section if the command line option Opt has the value "NO".
;See http://nsis.sourceforge.net/Macro_vs_Function for the ID label technique.
@@ -368,7 +390,7 @@ FunctionEnd
;Component strings
LangString DESC_SecCore ${LANG_ENGLISH} "Installs Nmap executable, NSE scripts and Visual C++ 2010 runtime components"
LangString DESC_SecRegisterPath ${LANG_ENGLISH} "Registers Nmap path to System path so you can execute it from any directory"
LangString DESC_SecWinPcap ${LANG_ENGLISH} "Installs WinPcap 4.1 (required for most Nmap scans unless it is already installed)"
LangString DESC_SecWinPcap ${LANG_ENGLISH} "Installs WinPcap 4.1.2 (required for most Nmap scans unless it is already installed)"
LangString DESC_SecPerfRegistryMods ${LANG_ENGLISH} "Modifies Windows registry values to improve TCP connect scan performance. Recommended."
LangString DESC_SecZenmap ${LANG_ENGLISH} "Installs Zenmap, the official Nmap graphical user interface, and Visual C++ 2008 runtime components. Recommended."
LangString DESC_SecNcat ${LANG_ENGLISH} "Installs Ncat, Nmap's Netcat replacement."

Binary file not shown.