2008년 6월 30일 월요일

AutoIt 3탄 유틸리티 자동 다운로드 & 설치

이 스크립트는 네이버 무인카페 디히님의
"오토잇을 이용한 프로그램다운로드 설치파일 제작하기.. "
에 첨부된 스크립트 중 일부 내용만 발췌하였습니다.



오늘은 AutoIt을 활용하여 자동 다운로드 & 설치를 배워봅시다.
이 방법의 단점은 홈페이지 다운로드 주소가 변경될 경우 무용지물이 된다는 것입니다.
따라서 버전 업데이트가 자주 되는 프로그램에는 적합하지 않겠죠.
예제 프로그램은 네이트온 입니다. (XP 기준입니다. 비스타는 네이트온 설치 파일이 다릅니다.)



$downfile = "http://nateondownload.nate.com/download/NATEON37.EXE"     ;설치 파일 다운로드 주소 입력
$filesize = InetGetSize( $downfile )
DirCreate("C:\snoopy")                                                                           ;임시 폴더 만들기
ProgressOn("네이트온 다운로드", "다운로드 진행상황", "0% 다운로드 중...")    ;다운로드 창 타이틀 설정
InetGet($downfile, "C:\snoopy\nateon37.exe",1,1)                                    ;파일 다운로드 하기
While @InetGetActive
$downsize = @InetGetBytesRead
$per = ($downsize / $filesize) * 100
$per = Int( $per )
ProgressSet( $per, $per & "% 다운로드 중...")
Sleep(200)
WEnd
ProgressSet(100 , "다운로드를 완료하였습니다.", "완료")
Sleep(500)
ProgressOff()

;지금까지 네이트온 다운로드 스크립트였습니다.
;빨간색 주석 달린 줄만 각 프로그램에 맞게 수정해주시면 되겠죠.
;지금부터 네이트온 설치 스크립트를 시작하겠습니다.

RUN("C:\SNOOPY\NATEON37.EXE")                                                      ;다운받은 경로 잘 써야겠죠
WINWAIT("네이트온 설치 프로그램","네이트온 설치")
IF NOT WINACTIVE("네이트온 설치 프로그램","네이트온 설치") THEN WINACTIVATE("네이트온 설치 프로그램","네이트온 설치")
WINWAITACTIVE("네이트온 설치 프로그램","네이트온 설치")
SEND("!N")
WINWAIT("네이트온 설치 프로그램","사용권 계약")
IF NOT WINACTIVE("네이트온 설치 프로그램","사용권 계약") THEN WINACTIVATE("네이트온 설치 프로그램","사용권 계약")
WINWAITACTIVE("네이트온 설치 프로그램","사용권 계약")
SEND("!A!N")                                                                   
WINWAIT("네이트온 설치 프로그램","설치 유형")
IF NOT WINACTIVE("네이트온 설치 프로그램","설치 유형") THEN WINACTIVATE("네이트온 설치 프로그램","설치 유형")
WINWAITACTIVE("네이트온 설치 프로그램","설치 유형")
SEND("!N")
WINWAIT("네이트온 설치 프로그램","이제 프로그램을 설치할 수 있습니다.")
IF NOT WINACTIVE("네이트온 설치 프로그램","이제 프로그램을 설치할 수 있습니다.") THEN WINACTIVATE("네이트온 설치 프로그램","이제 프로그램을 설치할 수 있습니다.")
WINWAITACTIVE("네이트온 설치 프로그램","이제 프로그램을 설치할 수 있습니다.")
SEND("!I")

;지금부터 마지막에 셋팅하는 창입니다.
;원래는 키보드 방향키로 가능했는데 이상하게 이 버전은 안되네요.
;따라서 마우스 신공을 한번만 사용하겠습니다. 그 다음부턴 방향키로 되네요.

WINWAIT("네이트온 설치 프로그램","네이트온 설치완료")
IF NOT WINACTIVE("네이트온 설치 프로그램","네이트온 설치완료") THEN WINACTIVATE("네이트온 설치 프로그램","네이트온 설치완료")
WINWAITACTIVE("네이트온 설치 프로그램","네이트온 설치완료")
WINMOVE("네이트온 설치 프로그램","네이트온 설치완료",0,0)
MOUSECLICK("LEFT",49,170)
SEND("{DOWN}{SPACE}{DOWN}{SPACE}{DOWN}{SPACE}!N")
WINWAIT("네이트온 설치 프로그램","네이트온 설치 완료")
IF NOT WINACTIVE("네이트온 설치 프로그램","네이트온 설치 완료") THEN WINACTIVATE("네이트온 설치 프로그램","네이트온 설치 완료")
WINWAITACTIVE("네이트온 설치 프로그램","네이트온 설치 완료")
SEND("{SPACE}")

Sleep(3000)
FileDelete("C:\snoopy\nateon37.exe")                                                     ;네이트온 설치파일 지우기
DirRemove("C:\snoopy")                                                                         ;임시폴더 지우기




이상으로 허접한 설명을 마치겠습니다.

댓글 7개:

  1. 대단하십니다..

    근데 이미 네이트온이 설치되었을 경우 이미 설치되었다 라던지 하는 알림창을 띄우는것도 좋을것 같습니다..

    답글삭제
  2. @쩡아™ - 2008/06/30 09:07
    원래 디히님은 그렇게 만드셨는데 저는 그럴 필요성을 모르겠네요..

    답글삭제
  3. 그리고 중요한 것은 비스타 이외의 윈도우 버전에 해당하는 소스군요. 어떻게 윈도우 판별하는 방법이 없을지?...

    답글삭제
  4. @정™ - 2008/06/30 16:49
    디히님 스크립트를 보니 네이트온이 설치되어 있는지 아닌지를 판별할 때 RegRead 커맨드로

    특정 레지스트리가 존재하는지 아닌지로 하더군요.

    이 방법으로 OS 종류도 판별 가능하다고 봅니다. 대신 종류에 따라 다른 설치파일을 다운받고 설치하려면

    조건문을 잘 짜야겠지요.

    답글삭제
  5. @정™ - 2008/06/30 16:49
    @OSVersion 이라는 매크로가 있습니다. 즉 스크립트의 맨 처음에

    if Not @OSVersion = 'WIN_XP' Then

    MsgBox(0,'윈도우 XP가 아님','윈도우 XP가 아닙니다. 이 스크립트는 XP가 아니면 동작하지 않습니다.')

    Exit

    EndIf

    이런 스크립트를 넣으면 되죠.

    나머지는 Autoit도움말 참조



    종류에 따라 하고 싶다면

    if @OSVersion = 'WIN_VISTA' then

    비스타 설치 스크립트

    else

    비 비스타 설치 스크립트

    endif

    하면 되고

    답글삭제
  6. Autoit 모든 스크립트 작성하실때

    맨 상단에다가

    #requireadmin 라고 추가하시면

    윈도우 버젼별로 스크립트 따로 만들필요없이

    윈도우 Xp,비스타, 윈도우7까지 모두 작동이 됩니다.

    답글삭제
  7. @바이크 - 2009/08/26 20:21
    UAC를 항상 끄고 살아서 몰랐는데 안 적으면 작동이 안 되는가보군요.

    답글삭제