フリーソフト

« B. DLL/TLB Library Setup - NSIS Users Manual | トップページ | D. Useful Information »

C. Useful Scripts - NSIS Users Manual

これはNSIS Users Manualの非公式な日本語ドキュメントです。本コンテンツの利用によって生じたいかなる損害も、著者は一切の責任をとることができませんので、自己責任での利用をお願いします。読みやすさを重視するため必ずしも原文に忠実でない部分があります。また、誤りが含まれている可能性もあります。必ず原文をご確認ください。 訳者:Kawai

Previous | Contents | Next

付録 C:役に立つスクリプト

C.1 Internet Explorer のバージョンを取得する

[原文]

 ; GetIEVersion
;
; Based on Yazno's function, http://yazno.tripod.com/powerpimpit/
; Returns on top of stack
; 1-6 (Installed IE Version)
; or
; '' (IE is not installed)
;
; Usage:
;   Call GetIEVersion
;   Pop $R0
;   ; at this point $R0 is "5" or whatnot

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: ; older ie version
     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' ; default to ie3 if not 100, 101, or 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 .NET Framework がインストールされているか?

[原文]

 ; IsDotNETInstalled
;
; Based on GetDotNETVersion
;   http://nsis.sourceforge.net/Get_.NET_Version
;
; Usage:
;   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 Macromedia Flash Player がインストールされているか??

[原文]

 ; IsFlashInstalled
;
; By Yazno, http://yazno.tripod.com/powerpimpit/
; Returns on top of stack
; 0 (Flash is not installed)
; or
; 1 (Flash is installed)
;
; Usage:
;   Call IsFlashInstalled
;   Pop $R0
;   ; $R0 at this point is "1" or "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 インターネットに接続する

[原文]

 ; 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

C.5 インストーラ ファイル名を取得する

[原文]

 System::Call 'kernel32::GetModuleFileNameA(i 0, t .R0, i 1024) i r1'
;$R0 will contain the installer filename

C.6 複数起動を禁止する

[原文]

以下のコードを .onInit 関数 に記述してください。

 System::Call 'kernel32::CreateMutexA(i 0, i 0, t "myMutex") i .r1 ?e'
Pop $R0

StrCmp $R0 0 +3
   MessageBox MB_OK|MB_ICONEXCLAMATION "The installer is already running."
   Abort

'myMutex' はユニークな値に置き換える必要があります。

C.7 More

[原文]

NSIS WikiNSIS forumNSIS development page で、その他の有用なスクリプトを見つけることができます。

前へ | 目次 | 次へ


 
SourceForge Logo

« B. DLL/TLB Library Setup - NSIS Users Manual | トップページ | D. Useful Information »

技術文書」カテゴリの記事