Poprzedni | Spis treści | Następny

💕💕 SPECJALNA PROŚBA 💕💕

Od ponad 20 lat dzielę się z Wami swoją pasją oraz tworzę dla was moim zdaniem ciekawe i przede wszystkim przydatne rzeczy. Całkowicie za darmo! To się nigdy nie zmieni.



Niestety, sprzęt komputerowy (laptop) na którym obecnie pracuję zestarzał się - ma już 12 lat i jest to już niestety mocno odczuwalne. Moja obecna sytuacja finansowa nie pozwala mi na zakup nowego laptopa, dzięki któremu nadal będę mógł realizować swoją pasję, a tym samym dzielić się nią z Wami.

Mam nadzieję, że dzięki Waszej pomocy będę mógł zakupić sprzęt, który posłuży równie długo co obecny. Jak wiemy, sprzęt komputerowy jest dzisiaj horrendalnie drogi (zwłaszcza laptopy). Mam nadzieję, że wspólnie to się uda.

Dlatego też postanowiłem założyć specjalną zrzutkę na uznanej platformie crowd-fundingowej, dzięki której w transparentny sposób można dorzucić coś od siebie. Cel jest ambitny, ale wierzę w siłę społeczności!


SERDECZNIE WAS ZATEM PROSZĘ O WSPARCIE FINANSOWE!
KLIKNIJ POWYŻSZY LINK I DOŁĄCZ SIĘ DO ZRZUTKI!

C. Przydatne skrypty

Ten dokument zgodny jest z NSIS 3.04


C.1 Pobieranie wersji Internet Explorera



 ; 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

C.2 Czy Microsoft .NET Framework jest zainstalowany?



 ; 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

C.3 Czy odtwarzacz Macromedia Flash jest zainstalowany?



 ; 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

C.4 Łączenie z Internetem



 ; 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

C.5 Pobieranie nazwy instalatora


System::Call 'kernel32::GetModuleFileName(p 0, t .R0, i 1024) i r1'
 ; Zmienna $R0 będzie zawierała nazwę instalatora

C.6 Zapobieganie uruchamiania wielu kopii 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ą.

C.7 Więcej


Więcej użytecznych skryptów możesz znaleźć w NSIS Wiki, na forum NSIS oraz na stronie NSIS.