; GetIEVersion
;
; Returns 1-11 (IE Version) or '' (IE is not installed) on top of the stack
;
; Usage:
; Call GetIEVersion
; Pop $R0 ; $R0 is "5" etc.
Function GetIEVersion
Push $R0
ReadRegStr $R0 HKLM "Software\Microsoft\Internet Explorer" "svcVersion" ; IE v10+
StrCpy $R0 $R0 2
IntCmp $R0 9 "" "" lbl_done
ClearErrors
ReadRegStr $R0 HKLM "Software\Microsoft\Internet Explorer" "Version" ; IE v4..9
IfErrors lbl_123
StrCpy $R0 $R0 1 ; Note: This truncates 5.50 to 5 etc.
Goto lbl_done
lbl_123:
!if "${NSIS_PTR_SIZE}" > 4
StrCpy $R0 ""
!else
ReadRegStr $R0 HKLM "Software\Microsoft\Internet Explorer" "IVer" ; IE v1..3
IntCmp $R0 99 "" "" +3
StrCpy $R0 ""
Goto lbl_done
IntOp $R0 $R0 & 3 ; 100..103->0..3
IntCmp $R0 2 +2 "" +2
IntOp $R0 $R0 + 1 ; Bump 100->v1 and 101->v2 (Is 101 v1.5 or 2.0?)
!endif
lbl_done:
Exch $R0
FunctionEnd
; IsDotNETInstalled
;
; NOTE: This is only able to detect .NET v1.x and v2.x!
;
; Based on GetDotNETVersion
; https://nsis.sourceforge.io/Get_.NET_Version
;
; Usage:
; Call IsDotNETInstalled
; Pop $0 ; 0 or 1
; StrCmp $0 1 found_dotNETFramework_v1_or_v2 no_dotNETFramework
Function IsDotNETInstalled
Push $0
System::Call '"$SysDir\MSCOREE.dll"::GetCORVersion(w,i${NSIS_MAX_STRLEN},*i)i.r0?u'
IntOp $0 $0 ! ; HRESULT (S_OK) -> BOOL
Exch $0
FunctionEnd
; IsFlashInstalled
;
; Usage:
; Call IsFlashInstalled
; Pop $R0 ; 1 or ""
Function IsFlashInstalled
Push $R0
ReadRegStr $R0 HKCR "CLSID\{D27CDB6E-AE6D-11cf-96B8-444553540000}" ""
StrCmp $R0 "" +2
StrCpy $R0 "1"
Exch $R0
FunctionEnd
; ConnectInternet (uses Dialer plug-in) - Written by Joost Verburg
;
; This function attempts to make a connection to the internet if there is no
; connection available. If you are not sure that a system using the installer
; has an active internet connection, call this function before downloading
; files with NSISdl.
;
; The function requires Internet Explorer 3, but asks to connect manually if
; IE3 is not installed.
Function ConnectInternet
Push $R0
ClearErrors
Dialer::AttemptConnect
IfErrors noie3
Pop $R0
StrCmp $R0 "online" connected
MessageBox MB_OK|MB_ICONSTOP "Cannot connect to the internet."
Quit ; This will quit the installer. You might want to add your own error handling.
noie3:
; IE3 not installed
MessageBox MB_OK|MB_ICONINFORMATION "Please connect to the internet now."
connected:
Pop $R0
FunctionEnd
Put the following code in your .onInit function:
System::Call 'kernel32::CreateMutex(p 0, i 0, t "myMutex") p .r1 ?e' Pop $R0 StrCmp $R0 0 +3 MessageBox MB_OK|MB_ICONEXCLAMATION "The installer is already running." Abort
'myMutex' must be replaced by a unique string or GUID!
You can find more useful scripts on the NSIS Wiki, the NSIS forum and the NSIS development page.