NSIS/Reference (17) 썸네일형 리스트형 [NSIS] Internet Explorer 버전 얻는 함수 # 호출 예# ${GetIEVersion} '반환'# ${GetIEVersion} $0!macro _GetIEVersion un Function ${un}_GetIEVersion Push $R0 Push $R1 ClearErrors ReadRegStr $R1 HKLM "Software\Microsoft\Internet Explorer" "svcVersion" # IE 10, 11 IfErrors FAIL_GET_svcVersion SUCCESS_GET_svcVersion SUCCESS_GET_svcVersion: ${IndexOf} $R0 "." $R1 StrCpy $R1 $R1 $R0 Goto lbl_done FAIL_GET_svcVersion: ReadRegStr $R1 HK.. [NSIS] Windows 버전 얻는 함수 !macro _GetWindowsVersion un Function ${un}_GetWindowsVersion Push $R0 Push $R1 # check if Windows 10 family (CurrentMajorVersionNumber is new introduced in Windows 10) ReadRegStr $R0 HKLM \ "SOFTWARE\Microsoft\Windows NT\CurrentVersion" CurrentMajorVersionNumber StrCmp $R0 '' 0 lbl_winnt ClearErrors # check if Windows NT family ReadRegStr $R0 HKLM \ "SOFTWARE\Microsoft\Windows NT\Curr.. [NSIS] 원본 문자열의 앞에서부터 원하는 문자의 인덱스 찾기 # 호출 예# ${IndexOf} '반환' '찾을 문자열' '원본 문자열'# ${IndexOf} $0 "bc" "abcd"# $0 == 1!macro _IndexOf un Function ${un}_IndexOf Exch $R0 Exch Exch $R1 Push $R2 Push $R3 StrCpy $R3 $R0 StrCpy $R0 -1 IntOp $R0 $R0 + 1 StrCpy $R2 $R3 1 $R0 StrCmp $R2 "" +2 StrCmp $R2 $R1 +2 -3 StrCpy $R0 -1 Pop $R3 Pop $R2 Pop $R1 Exch $R0 FunctionEnd!macroend!insertmacro _IndexOf ""!insertmacro _IndexOf "un.. [NSIS] 원본 문자열의 뒤에서부터 원하는 문자의 인덱스 찾기 # 호출 예# ${IndexOf} '반환' '찾을 문자열' '원본 문자열'# ${IndexOf} $0 "b" "abcd"# $0 == 3!macro _RIndexOf un Function ${un}_RIndexOf Exch $R0 Exch Exch $R1 Push $R2 Push $R3 StrCpy $R3 $R0 StrCpy $R0 0 IntOp $R0 $R0 + 1 StrCpy $R2 $R3 1 -$R0 StrCmp $R2 "" +2 StrCmp $R2 $R1 +2 -3 StrCpy $R0 -1 Pop $R3 Pop $R2 Pop $R1 Exch $R0 FunctionEnd!macroend!insertmacro _RIndexOf ""!insertmacro _RIndexOf .. [NSIS] 문자열에 원하는 문자열이 포함되어 있는지 체크하는 함수 # 호출 예# ${StrContains} '반환' '찾을 문자열' '원본 문자열'# ${StrContains} $0 "tri" "The String"# 성공 시 $0 == "tri", 실패 시 $0 == ""!macro _StrContains un Function ${un}_StrContains Push $R0 # 찾을 문자열 Exch Pop $R0 Push $R1 # 원본 문자열 Exch 2 Pop $R1 Push $R2 # 리턴 문자열 Push $R3 Push $R4 Push $R5 Push $R6 ;MessageBox MB_OK "찾을 문자열[$R0], 원본 문자열[$R1]" StrCpy $R2 "" StrCpy $R3 -1 StrLen $R4 $R0 StrLen $R6.. [NSIS] 문자열에서 찾아 바꾸기 # 호출 예# ${StrReplace} '반환' '찾을 문자열' '바꿀 문자열' '원본 문자열'# ${StrReplace} $0 "like" "don't like" "I like cheese a lot!"# $0 == I don't like cheese a lot!!macro _StrReplace un Function ${un}_StrReplace Push $R0 # 원본 문자열 Exch Pop $R0 Push $R1 Exch 2 Pop $R1 # 바꿀 문자열 Push $R2 Exch 3 Pop $R2 Push $R3 Push $R4 Push $R5 Push $R6 Push $R7 Push $R8 StrCpy $R3 -1 StrLen $R5 $R0 StrLen $R6 $.. [NSIS] Install 영역과 Uninstall 영역 모두에서 호출 가능한 함수? 매크로? 기본 포맷 !macro _FuncName un Function ${un}_FuncName # 함수 정의 Pop $0 MessageBox MB_OK "_FuncName [$0]" Push "return $0 from _FuncName" FunctionEnd!macroend!insertmacro _FuncName ""!insertmacro _FuncName "un."!macro FuncName OUTPUT param Push "${param}" !ifndef __UNINSTALL__ Call _FuncName !else Call un._FuncName !endif Pop "${OUTPUT}"!macroend!define FuncName "!insertmacro FuncName"!macro _FuncName2.. [NSIS] 실행되는(설치 파일) 자기 경로 얻어오기 System::Call 'kernel32::GetModuleFileNameA(i 0, t .R0, i 1024) i r1';$R0 will contain the installer filenameMessageBox MB_OK "$R0" 이전 1 2 3 다음