; GetIEVersion ; ; Funkcja oparta na funkcji Yazno, http://yazno.tripod.com/powerpimpit/ ; Wartość zwracana jest na górze stosu ; 1-6 (Zainstalowana wersja IE) ; lub ; '' (IE nie jest zainstalowany) ; ; Sposób użycia: ; Call GetIEVersion ; Pop $R0 ; Zmienna $R0 ma wartość "5" lub inną Function GetIEVersion Push $R0 ClearErrors ReadRegStr $R0 HKLM "Software\Microsoft\Internet Explorer" "Version" IfErrors lbl_123 lbl_456 lbl_456: ; IE 4+ Strcpy $R0 $R0 1 Goto lbl_done lbl_123: ; Starsza wersja IE ClearErrors ReadRegStr $R0 HKLM "Software\Microsoft\Internet Explorer" "IVer" IfErrors lbl_error StrCpy $R0 $R0 3 StrCmp $R0 '100' lbl_ie1 StrCmp $R0 '101' lbl_ie2 StrCmp $R0 '102' lbl_ie2 StrCpy $R0 '3' ; Domyślnie w IE3, jeśli nie 100, 101, lub 102. Goto lbl_done lbl_ie1: StrCpy $R0 '1' Goto lbl_done lbl_ie2: StrCpy $R0 '2' Goto lbl_done lbl_error: StrCpy $R0 '' lbl_done: Exch $R0 FunctionEnd
; IsDotNETInstalled ; ; Funkcja oparta na funkcji GetDotNETVersion ; http://nsis.sourceforge.net/Get_.NET_Version ; ; Sposób użycia: ; Call IsDotNETInstalled ; Pop $0 ; StrCmp $0 1 found.NETFramework no.NETFramework Function IsDotNETInstalled Push $0 Push $1 StrCpy $0 1 System::Call "mscoree::GetCORVersion(w, i ${NSIS_MAX_STRLEN}, *i) i .r1" StrCmp $1 0 +2 StrCpy $0 0 Pop $1 Exch $0 FunctionEnd
; IsFlashInstalled ; ; Napisał Yazno, http://yazno.tripod.com/powerpimpit/ ; Warość zwracana jest na górze stosu ; 0 (Flash nie jest zainstalowany) ; lub ; 1 (Flash jest zainstalowany) ; ; Sposób użycia: ; Call IsFlashInstalled ; Pop $R0 ; Zmienna $R0 ma wartość "1" lub "0" Function IsFlashInstalled Push $R0 ClearErrors ReadRegStr $R0 HKCR "CLSID\{D27CDB6E-AE6D-11cf-96B8-444553540000}" "" IfErrors lbl_na StrCpy $R0 1 Goto lbl_end lbl_na: StrCpy $R0 0 lbl_end: Exch $R0 FunctionEnd
; ConnectInternet (funkcja używa wtyczki Dialer) ; Napisał: Joost Verburg ; ; Funkcja ta próbuje utworzyć połączenie z internetem, jeśli nie jest dostępne żadne połączenie. ; Jeśli nie jesteś pewien czy system, na którym uruchomiono instalatora ma aktywne połączenie ; z internetem, wywołaj tę funkcję przed pobieraniem plików przez wtyczkę NSISdl. ; ; Funkcja wymaga Internet Explorera 3, lecz pyta o ręczne połączenie, jeśli nie jest on zainstalowany. Function ConnectInternet Push $R0 ClearErrors Dialer::AttemptConnect IfErrors noie3 Pop $R0 StrCmp $R0 "online" connected MessageBox MB_OK|MB_ICONSTOP "Błąd połączenia z internetem." Quit ; Zamyka instalatora. Możesz dodać własną obsługę błędów. noie3: ; IE3 nie zainstalowany MessageBox MB_OK|MB_ICONINFORMATION "Proszę, połącz się teraz z internetem." connected: Pop $R0 FunctionEnd
System::Call 'kernel32::GetModuleFileName(p 0, t .R0, i 1024) i r1' ; Zmienna $R0 będzie zawierała nazwę instalatora
Wstaw poniższy fragment kodu do funkcji .onInit:
System::Call 'kernel32::CreateMutex(p 0, i 0, t "myMutex") p .r1 ?e' Pop $R0 StrCmp $R0 0 +3 MessageBox MB_OK|MB_ICONEXCLAMATION "Instalator jest już uruchomiony." Abort
Wartość 'myMutex' powinna być zastąpiona dowolną unikalną wartością.
Więcej użytecznych skryptów możesz znaleźć w NSIS Wiki, na forum NSIS oraz na stronie NSIS.