1
0
mirror of https://github.com/nmap/nmap.git synced 2025-12-15 20:29:03 +00:00
Files
nmap/mswin32/nsis/Nmap.nsi
kris 2b825faa17 Nmap now ships and links with OpenSSL (currently the newest 0.9.8g) on Windows.
The necessary libraries (lib and dll) and headers required for compilation and
linking are in mswin32/OpenSSL.  A detailed upgrade guide is available in
mswin32/OpenSSL/upgrade-guide.txt.

Thanks to Thomas Buchanan for doing the initial work and writing up the initial
build guide.

My openssl-testing branch has been posted on nmap-dev for 12 days and has been
tested by (at least) Thomas, Jah and I, with no reports of failure.

http://seclists.org/nmap-dev/2008/q2/0249.html
2008-05-20 20:22:50 +00:00

308 lines
10 KiB
NSIS

;Nmap Installer
;Started by Bo Jiang @ 08/26/2005 06:07PM
;--------------------------------
;Include Modern UI
!include "MUI.nsh"
!include "AddToPath.nsh"
;--------------------------------
;General
;Name and file
Name "Nmap"
OutFile "NmapInstaller.exe"
;Required for removing shortcuts (http://nsis.sourceforge.net/Shortcuts_removal_fails_on_Windows_Vista)
RequestExecutionLevel admin
;Default installation folder
InstallDir "$PROGRAMFILES\Nmap"
;Get installation folder from registry if available
InstallDirRegKey HKCU "Software\Nmap" ""
!define VERSION "4.62"
VIProductVersion "4.62.0.0"
VIAddVersionKey /LANG=1033 "FileVersion" "${VERSION}"
VIAddVersionKey /LANG=1033 "ProductName" "Nmap"
VIAddVersionKey /LANG=1033 "CompanyName" "Insecure.org"
VIAddVersionKey /LANG=1033 "InternalName" "NmapInstaller.exe"
VIAddVersionKey /LANG=1033 "LegalCopyright" "Copyright (c) Insecure.Com LLC (fyodor@insecure.org)"
VIAddVersionKey /LANG=1033 "LegalTrademark" "NMAP"
VIAddVersionKey /LANG=1033 "FileDescription" "Nmap installer"
;--------------------------------
;Interface Settings
!define MUI_ABORTWARNING
;--------------------------------
;Pages
; !insertmacro MUI_PAGE_LICENSE "${NSISDIR}\Docs\Modern UI\License.txt"
!insertmacro MUI_PAGE_LICENSE "..\LICENSE"
!insertmacro MUI_PAGE_COMPONENTS
!insertmacro MUI_PAGE_DIRECTORY
!insertmacro MUI_PAGE_INSTFILES
!insertmacro MUI_UNPAGE_CONFIRM
!insertmacro MUI_UNPAGE_INSTFILES
Page custom shortcutsPage makeShortcuts
;--------------------------------
;Languages
!insertmacro MUI_LANGUAGE "English"
;--------------------------------
;Variables
Var zenmapset
;--------------------------------
;Reserves
ReserveFile "shortcuts.ini"
!insertmacro MUI_RESERVEFILE_INSTALLOPTIONS
;--------------------------------
;Functions
Function .onInit
!insertmacro MUI_INSTALLOPTIONS_EXTRACT "shortcuts.ini"
FunctionEnd
Function shortcutsPage
StrCmp $zenmapset "" skip
!insertmacro MUI_HEADER_TEXT "Create Shortcuts" ""
!insertmacro MUI_INSTALLOPTIONS_DISPLAY "shortcuts.ini"
skip:
FunctionEnd
Function makeShortcuts
StrCmp $zenmapset "" skip
SetOutPath "$INSTDIR\zenmap"
ReadINIStr $0 "$PLUGINSDIR\shortcuts.ini" "Field 1" "State"
StrCmp $0 "0" skipdesktop
CreateShortCut "$DESKTOP\Nmap - Zenmap GUI.lnk" "$INSTDIR\zenmap\zenmap.exe"
skipdesktop:
ReadINIStr $0 "$PLUGINSDIR\shortcuts.ini" "Field 2" "State"
StrCmp $0 "0" skipstartmenu
CreateDirectory "$SMPROGRAMS\Nmap"
CreateShortCut "$SMPROGRAMS\Nmap\Nmap - Zenmap GUI.lnk" "$INSTDIR\zenmap\zenmap.exe"
skipstartmenu:
skip:
FunctionEnd
;--------------------------------
;Installer Sections
Section "Nmap Core Files" SecCore
StrCpy $R0 $INSTDIR "" -2
StrCmp $R0 ":\" bad_key_install
StrCpy $R0 $INSTDIR "" -14
StrCmp $R0 "\Program Files" bad_key_install
StrCpy $R0 $INSTDIR "" -8
StrCmp $R0 "\Windows" bad_key_install
StrCpy $R0 $INSTDIR "" -6
StrCmp $R0 "\WinNT" bad_key_install
StrCpy $R0 $INSTDIR "" -9
StrCmp $R0 "\system32" bad_key_install
StrCpy $R0 $INSTDIR "" -8
StrCmp $R0 "\Desktop" bad_key_install
StrCpy $R0 $INSTDIR "" -22
StrCmp $R0 "\Documents and Settings" bad_key_install
StrCpy $R0 $INSTDIR "" -13
StrCmp $R0 "\My Documents" bad_key_install probably_safe_key_install
bad_key_install:
MessageBox MB_YESNO "It may not be safe to uninstall the previous installation of Nmap from the directory '$INSTDIR'.$\r$\nContinue anyway (not recommended)?" IDYES probably_safe_key_install
Abort "Install aborted by user"
probably_safe_key_install:
;Delete specific subfolders (NB: custom scripts in scripts folder will be lost)
RMDir /r "$INSTDIR\nselib"
RMDir /r "$INSTDIR\nselib-bin"
RMDir /r "$INSTDIR\scripts"
RMDir /r "$INSTDIR\zenmap"
SetOutPath "$INSTDIR"
SetOverwrite on
File ..\..\CHANGELOG
File ..\..\COPYING
File ..\..\nmap-mac-prefixes
File ..\..\nmap-os-db
File ..\..\nmap-protocols
File ..\..\nmap-rpc
File ..\..\nmap-service-probes
File ..\..\nmap-services
File ..\Release\nmap.exe
File ..\..\docs\nmap.xsl
File ..\nmap_performance.reg
File ..\..\README-WIN32
File libeay32.dll
File ssleay32.dll
File /r /x mswin32 /x .svn ..\..\scripts
File /r /x mswin32 /x .svn ..\Release\nselib
File /r /x mswin32 /x .svn ..\Release\nselib-bin
File ..\icon1.ico
;Store installation folder
WriteRegStr HKCU "Software\Nmap" "" $INSTDIR
;Create uninstaller
WriteUninstaller "$INSTDIR\Uninstall.exe"
; 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
;Register .usr files with Zenmap
;This is commented out till Zenmap supports opening log files from the command-line
;WriteRegStr HKCR ".usr" "" "UmitScan"
;WriteRegStr HKCR "UmitScan" "" "Umit Saved Port Scan"
;WriteRegStr HKCR "UmitScan\DefaultIcon" "" "$INSTDIR\umit_128.ico,0"
;WriteRegStr HKCR "UmitScan\shell\open\command" "" '"$INSTDIR\zenmap.exe" "%1"'
;WriteRegStr HKCR "UmitScan\shell" "" "open"
;System::Call 'Shell32::SHChangeNotify(i 0x8000000, i 0, i 0, i 0)'
SectionEnd
Section "Register Nmap Path" SecRegisterPath
PUSH $INSTDIR
Call AddToPath
SectionEnd
Section "WinPcap 4.02" SecWinPcap
File ..\winpcap\winpcap-nmap-4.02.exe
Exec '"$INSTDIR\winpcap-nmap-4.02.exe"'
Delete "$INSTDIR\winpcap-nmap-4.02.exe"
SectionEnd
Section "Network Performance Improvements (Registry Changes)" SecPerfRegistryMods
File ..\nmap_performance.reg
Exec 'regedt32 /S "$INSTDIR\nmap_performance.reg"'
SectionEnd
Section "Zenmap (GUI frontend)" SecZenmap
File /r /x mswin32 /x .svn ..\nmap-${VERSION}\zenmap
StrCpy $zenmapset "true"
SectionEnd
;--------------------------------
;Descriptions
;Component strings
LangString DESC_SecCore ${LANG_ENGLISH} "Installs Nmap executables and script files"
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.0 (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."
;Assign language strings to sections
!insertmacro MUI_FUNCTION_DESCRIPTION_BEGIN
!insertmacro MUI_DESCRIPTION_TEXT ${SecCore} $(DESC_SecCore)
!insertmacro MUI_DESCRIPTION_TEXT ${SecWinPcap} $(DESC_SecWinPcap)
!insertmacro MUI_DESCRIPTION_TEXT ${SecRegisterPath} $(DESC_SecRegisterPath)
!insertmacro MUI_DESCRIPTION_TEXT ${SecPerfRegistryMods} $(DESC_SecPerfRegistryMods)
!insertmacro MUI_FUNCTION_DESCRIPTION_END
;--------------------------------
;Uninstaller Section
Section "Uninstall"
StrCpy $R0 $INSTDIR "" -2
StrCmp $R0 ":\" bad_key_uninstall
StrCpy $R0 $INSTDIR "" -14
StrCmp $R0 "\Program Files" bad_key_uninstall
StrCpy $R0 $INSTDIR "" -8
StrCmp $R0 "\Windows" bad_key_uninstall
StrCpy $R0 $INSTDIR "" -6
StrCmp $R0 "\WinNT" bad_key_uninstall
StrCpy $R0 $INSTDIR "" -9
StrCmp $R0 "\system32" bad_key_uninstall
StrCpy $R0 $INSTDIR "" -8
StrCmp $R0 "\Desktop" bad_key_uninstall
StrCpy $R0 $INSTDIR "" -22
StrCmp $R0 "\Documents and Settings" bad_key_uninstall
StrCpy $R0 $INSTDIR "" -13
StrCmp $R0 "\My Documents" bad_key_uninstall probably_safe_key_uninstall
bad_key_uninstall:
MessageBox MB_YESNO "It may not be safe to uninstall Nmap from the directory '$INSTDIR'.$\r$\nContinue anyway (not recommended)?" IDYES probably_safe_key_uninstall
Abort "Uninstall aborted by user"
probably_safe_key_uninstall:
IfFileExists $INSTDIR\nmap.exe nmap_installed
MessageBox MB_YESNO "It does not appear that Nmap is installed in the directory '$INSTDIR'.$\r$\nContinue anyway (not recommended)?" IDYES nmap_installed
Abort "Uninstall aborted by user"
SetDetailsPrint textonly
DetailPrint "Uninstalling Files..."
SetDetailsPrint listonly
nmap_installed:
Delete "$INSTDIR\CHANGELOG"
Delete "$INSTDIR\COPYING"
Delete "$INSTDIR\nmap-mac-prefixes"
Delete "$INSTDIR\nmap-os-db"
Delete "$INSTDIR\nmap-protocols"
Delete "$INSTDIR\nmap-rpc"
Delete "$INSTDIR\nmap-service-probes"
Delete "$INSTDIR\nmap-services"
Delete "$INSTDIR\nmap.exe"
Delete "$INSTDIR\nmap.xsl"
Delete "$INSTDIR\nmap_performance.reg"
Delete "$INSTDIR\README-WIN32"
Delete "$INSTDIR\icon1.ico"
Delete "$INSTDIR\libeay32.dll"
Delete "$INSTDIR\ssleay32.dll"
Delete "$INSTDIR\winpcap-nmap*.exe"
;Delete specific subfolders (NB: custom scripts in scripts folder will be lost)
RMDir /r "$INSTDIR\nselib"
RMDir /r "$INSTDIR\nselib-bin"
RMDir /r "$INSTDIR\scripts"
RMDir /r "$INSTDIR\zenmap"
Delete "$INSTDIR\Uninstall.exe"
;Removes folder if it's now empty
RMDir "$INSTDIR"
SetDetailsPrint textonly
DetailPrint "Deleting Registry Keys..."
SetDetailsPrint listonly
DeleteRegKey /ifempty HKCU "Software\Nmap"
DeleteRegKey HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\Nmap"
SetDetailsPrint textonly
DetailPrint "Unregistering Nmap Path..."
Push $INSTDIR
Call un.RemoveFromPath
Delete "$DESKTOP\Nmap - Zenmap GUI.lnk"
Delete "$SMPROGRAMS\Nmap\Nmap - Zenmap GUI.lnk"
RMDIR "$SMPROGRAMS\Nmap"
;Remove file association
;This is commented out till Zenmap supports opening log files from the command-line
;DeleteRegKey HKCR ".usr"
;DeleteRegKey HKCR "UmitScan"
;System::Call 'Shell32::SHChangeNotify(i 0x8000000, i 0, i 0, i 0)'
SetDetailsPrint both
SectionEnd