관리 메뉴

ㄴrㅎnㅂrㄹrㄱi

INetLoad 플러그인 본문

프로그래밍/NSIS

INetLoad 플러그인

님투 2007. 11. 3. 20:37
반응형
매일 써야지 써야지 하다가 구찮아서 미루고 있었는데 요청이 있어서 기회에 써봅니다.

INetLoad 플러그인

NSIS를 이용해서 인터넷에서 자료를 다운받아 설치하는 플러그인은 몇 종류가 있는데 이것은 그중에 한 종류입니다.
보통 이것과 NSISdl 이라는 플러그인을 사용합니다.
이 플러그인은 다운받는 화면을 표시하는 세가지 화면을 가지고 있습니다.

1 - 구식 NSISdl 처럼 INSTFILES 페이지에 포함되어 나타나는 방법입니다.
  좋은 예로는, edonkey2000 의 설치화면에서 인터넷에서 파일을 다운받는 화면입니다.

2 - 자체적인 대화상자를 띄워 더 자세한 정보를 보여줍니다.

3 - 간단한 대화상자를 나타내는 배너 모드입니다.

이 플러그인은 MS WinInet API 에 기반하며 NSIS 2.03 이상 버전을 요구합니다.


INetLoad.rar

참조 - 번역 - 플러그인 설명서 readme.txt

일단 기본 명령구조부터 보겠습니다.
InetLoad::load [/PROXY IP:PORT] [/USERNAME PROXY_LOGIN /PASSWORD PROXY_PASSWD] [/NOPROXY] [/NOCANCEL] [/POST TEXT2POST] [/TIMEOUT INT_MS] [/SILENT TEXT2DISPLAY] [/RESUME RETRY_QUESTION] [/POPUP PREFIX | /BANNER CAPTION TEXT] [/TRANSLATE LANG_PARAMS] URL1 local_file1 [URL2 local_file2 [...]] [/END]
뭔가 엄청나게 복잡하게 보입니다만 별거 없습니다.
일단 왠만한 옵션이 [] 로 처리되어 있는걸로 봐서는 생략가능합니다.
결국 또 필요한 옵션은 주소와 주소에서 다운받아 저장할 경로뿐입니다. ^^
/PROXY    현재 프록시 설정을 덮어씁니다. 대부분의 경우에 필요치 않고 기본적으로 IE 의 레지스트리 설정을 사용합니다.
/USERNAME 프록시 사용자이름 (http 전용)
/PASSWORD 프록시 암호 (http 전용)
http/ftp 서버인증에는 URL 에 포함된 이름과 암호로도 가능합니다.
예), http://username:password@nsis.sourceforge.net
/NOPROXY  이 연결에 프록시 설정을 사용하지 않습니다
/NOCANCEL 사용자에 의해 다운로드가 취소되는 것을 막습니다. (ESC, At-F4, 취소 버튼등을 잠금니다)
/POST     POST 에서 사용할 문자열을 설정합니다 (http전용).
자동으로 다시 얻어오지 않습니다. 공백을 %20 등으로 변환하는 것을 사용하지 않습니다.
/TIMEOUT 타임아웃 시간을 밀리세컨드 단위로 설정합니다. INTERNET_OPTION_CONNECT_TIMEOUT
기본값으로 IE 의 현재 값을 사용합니다.
/SILENT 플러그인 출력을 숨깁니다 ( 팝업대화상자와 내장된 진행막대 모두 )
      매개변수 TEXT2DISPLAY 의 내용을 1006 컨트롤에 설정합니다. 옵션으로 /silent "" 로 설정하면 "InetLoad plug-in" 를 기본으로 출력합니다.
      인스톨러가 무인설치 모들 작동중이라면 사용하지 않아도 됩니다.
/RESUME 연결/전송오류가 발생했을 때 종료하는 대신 먼저 '이어받기' 질문을 포함한 메시지를 출력합니다. 전화접속 연결과 큰 파일들에 유용합니다. 기본으로 "Your internet connection seems to have dropped out!\nPlease reconnect and click Retry to resume downloading..." 메시지를 출력합니다.
/POPUP  내장된 진행막대 대신 자세한 다운로드 대화상자를 출력합니다. 섹션 보다는 .onInit 함수에서 유용합니다 (이때는 어떤 대화상자도 없기 때문입니다 - 번역자)
PREFIX 를 캡션으로 사용합니다 ("-" 전의 문자열) "" 로 지정하면 기본값인 "InetLoad plug-in" 를 사용합니다.

/BANNER 간단한 대화상자 (MSI 로딩 배너 모드) 를 사용하고 대화상자 CAPTION 을 설정합니다 기본값은 /POPUP 과 같습니다. TEXT 는 기본값이 없습니다 ( 반드시 설정해야함 )
/END    플러그인이 스택을 읽는 것을 제한합니다 ( 반드시 필요하지는 않지만, 스택에 다른 변수를 보관하고 있다면 필요합니다 )
/TRANSLATE POPUP 또는 NSISdl 모드에서 대화상자 라벨을 번역하는 것을 허용합니다. 8개의 매개변수가 요구됩니다.
For NSISdl mode:
/TRANSLATE '다운로드 메시지' '연결메시지' '초를 나타내는 말' '분을 나타내는 말' '시간을 나타내는 말' '초를 나타내는 약자' '진행 표시 메시지' '남은시간 메시지'
Default values are:
"Downloading %s" "Connecting ..." second minute hour s "%dkB (%d%%) of %dkB @ %d.%01dkB/s" "(%d %s%s remaining)"
For POPUP mode:
/TRANSLATE url downloading connecting file_name received file_size remaining_time total_time
Default is english:
URL Downloading Connecting "File Name" Received "File Size" "Remaining Time" "Total Time"
간단 예제들....
InetLoad::load " http://dl.zvuki.ru/6306/mp3/12.mp3" "$EXEDIR\12.mp3" " ftp://dl.zvuki.ru/6306/mp3/11.mp3" "$EXEDIR\11.mp3"
" http://dl.zvuki.ru/6306/mp3/12.mp3" 에서 12.mp3 를 받아 "$EXEDIR\12.mp3" 에 저장합니다.
" ftp://dl.zvuki.ru/6306/mp3/11.mp3" 에서 11.mp3 를 받아 "$EXEDIR\11.mp3" 에 저장합니다.
InetLoad::load /BANNER "" "Cameron Diaz download in progress, please wait ;)" " http://www.dreamgirlswallpaper.co.uk/fiveyearsonline/wallpaper/Cameron_Diaz/camerond09big.JPG" "$EXEDIR\cd.jpg"
MSI 배너모드로 작동하여 " http://www.dreamgirlswallpaper.co.uk/fiveyearsonline/wallpaper/Cameron_Diaz/camerond09big.JPG" 에서 camerond09.bin 을 받아 "$EXEDIR\cd.jpg" 에 저장합니다.
Section "Dummy Section" SecDummy
  InetLoad::load /popup "some some prefix" " ftp://takhir:password@p401/hard/arch_disk/tar.gz/W2Ksp3.exe" "$EXEDIR\sp3.exe"
  Pop $0 # return value = exit code, "OK" if OK
  MessageBox MB_OK "Download Status: $0"
SectionEnd

이 플러그인은 작동이 성공하면 $0 에 "OK" 문자열을 저장합니다.
실패하면 에러 메시지가 저장되며 에러메시지는 InetLoad.cpp 를 참조하세요.
Pop $0
StrCmp $0 "OK" dlok
MessageBox MB_OK|MB_ICONEXCLAMATION "Download Error, click OK to abort installation" /SD IDOK
Abort
dlok:
...
번역 - 설명 - Hell Master
Takhir Bedertdinov, Moscow, Russia
ineum@narod.ru
반응형
Comments