nsWeb - NSIS 에서 웹페이지를 보여주는 플러그인 입니다.

이번 코덱팩 업데이트 때 사용된 웹페이지를 보여주는 플러그인입니다.

의외로 다양한 기능을 보유하고 있습니다.

ShowWebInPage.- 사용자 페이지 대화상자에 URL 또는 HTML 파일을 출력합니다.
ShowHTMLInPage.- 사용자 페이지 대화상자에 HTML 문자열(body 태그등이 없는 HTML 형식 문자열)을 출력합니다.
ShowWebInPopUp.- 사용자 페이지 대화상자에 URL 또는 HTML 파일을 출력합니다.(HTML형식 문자열은 안됩니다)

IsInet.- 인터넷 연결이 되어 있는지 확인합니다. 이 함수를 사용해서 URL 을 출력할 때 페이지를 찾을 수 없다는 오류를 피할 수 있겠지요. (1=연결; 0=연결 안 됨)

참조 페이지 "http://nsis.sourceforge.net/NsWeb:_A_plugin_to_display_the_web_browser_control_in_a_custom_page"

기본적으로 위와 같은 4가지 함수를 가지고 있습니다.

설치하면 예제 디렉토리에 Modern UI와 기본 UI 두가지의 예제 파일들이 설치됩니다.

밑에 2가지 예제를 보시면 쉽게 이해가 가실겁니다.

일단 젤 처음에 Page 함수를 사용해서 자신이 사용할 페이지를 하나 생성합니다.

  그 후 인스톨러 처음 시작할 때 호출되는 함수인 .onInit 에서 플러그임을 초기화합니다. 이때 플러그인과 함께 HTML파일을 보여줄 것이라면 HTML파일도 같이 풀어줘야합니다.

그 후 Page 함수에서 설정한 이름으로 함수를 작성하여주면 NSIS가 알아서 호출하여 줍니다.

그리 어렵지 않아서 예제를 컴파일해서 직접 돌려보고 한번 보시면 아실 수 있을겁니다.

; Example with classic NSIS style
Name nsWeb
OutFile nsWeb-CUI.exe
InstallDir $EXEDIR
ShowInstDetails show
XPStyle on

Page directory
;  custom 다음의 ShowWebControl 이 이 페이지가 보여질 필요가 있을때 호출되는 함수입니다, 다음의 "" 은 이 페이지 나갈 때 호출되는 함수이름입니다 없으면 ""로 비워둡니다 그담은 페이지 제목창에 나타날 글입니다
Page custom "ShowWebControl" "" ": WebBrowser control web dialog"  ; NsWeb에서 사용할 페이지 설정,
Page custom "ShowHTMLControl" "" ": WebBrowser control html file dialog" ; NsWeb에서 사용할 페이지 설정
Page custom "ShowHTMLText" "" ": WebBrowser control html text dialog" ; NsWeb에서 사용할 페이지 설정
Page components "" "ShowPopURL" "" ; NsWeb에서 사용할 페이지 설정
Page instfiles

Function .onInit ; 플러그인 초기화를 합니다
InitPluginsDir
# Drop everything into the $PLUGINSDIR on init.
# For quick calling at its time
File /oname=$PLUGINSDIR\nsWeb.dll ${NSISDIR}\Plugins\nsWeb.dll ; 플러그인을 풀고
File /oname=$PLUGINSDIR\file1.htm file1.htm ; 플러그인에서 보여줄 htm 파일을 풀어줍니다
File /oname=$PLUGINSDIR\file2.htm file2.htm
FunctionEnd

Function "ShowWebControl"
nsWeb::ShowWebInPage "http://www.google.com.mx" ; 페이지가 보여질 때 함수를 호출합니다.
FunctionEnd

Function "ShowHTMLControl"
nsWeb::ShowWebInPage "$PLUGINSDIR\file1.htm"
FunctionEnd

Function "ShowHTMLText"
nsWeb::ShowHTMLInPage "<b>I'm a <u>HTML text</u></b>"
FunctionEnd

Function "ShowPopURL"
nsWeb::ShowWebInPopUp "$PLUGINSDIR\file2.htm"
FunctionEnd

Section "Detect Internet?"
nsWeb::IsInet 3
DetailPrint "Do you have Internet connection: $3"
SectionEnd

Section -default
DetailPrint "It's over!"
SectionEnd


; Example with Modern UI NSIS style

!include "MUI.nsh"

Name nsWeb
OutFile nsWeb-MUI.exe
InstallDir $EXEDIR
ShowInstDetails show
XPStyle on

!insertmacro MUI_PAGE_DIRECTORY
Page custom "ShowWebControl" "" ": WebBrowser control web dialog"
Page custom "ShowHTMLControl" "" ": WebBrowser control html file dialog"
Page custom "ShowHTMLText" "" ": WebBrowser control html text dialog"
!define MUI_PAGE_CUSTOMFUNCTION_SHOW "ShowPopURL"
!insertmacro MUI_PAGE_COMPONENTS
!insertmacro MUI_PAGE_INSTFILES

!insertmacro MUI_LANGUAGE "English"

Function .onInit
InitPluginsDir
# Drop everything into the $PLUGINSDIR on init.
# For quick calling at its time
File /oname=$PLUGINSDIR\nsWeb.dll ${NSISDIR}\Plugins\nsWeb.dll
File /oname=$PLUGINSDIR\file1.htm file1.htm
File /oname=$PLUGINSDIR\file2.htm file2.htm
FunctionEnd

Function "ShowWebControl"
!insertmacro MUI_HEADER_TEXT "Testing nsWeb plugin" "You are watching http://nsis.sf.net"
nsWeb::ShowWebInPage "http://nsis.sf.net"
FunctionEnd

Function "ShowHTMLControl"
!insertmacro MUI_HEADER_TEXT "Testing nsWeb plugin" "You are watching file1.htm"
nsWeb::ShowWebInPage "$PLUGINSDIR\file1.htm"
FunctionEnd

Function "ShowHTMLText"
!insertmacro MUI_HEADER_TEXT "Testing nsWeb plugin" "You are watching plain HTML text"
nsWeb::ShowHTMLInPage "<b>I'm a <u>HTML text</u></b>"
FunctionEnd

Function "ShowPopURL"
nsWeb::ShowWebInPopUp "$PLUGINSDIR\file2.htm"
FunctionEnd

Section "Detect Internet?"
nsWeb::IsInet 3
DetailPrint "Do you have Internet connection: $3"
SectionEnd

Section -default
DetailPrint "It's over!"
SectionEnd

댓글을 달아 주세요

  1. solhyang83@lycos.co.kr 2009.04.16 12:30 Address Modify/Delete Reply

    한 페이지에 두 개의 웹페이지나 웹파일을 보여주는 건 안 돼나요?