SOFTBASE XFRAME DEVELOPMENT GUIDE SERIES 2011.11.03 서울특별시구로구구로 3 동한신 IT 타워 1215 호 Phone 02-2108-8030 Fax 02-2108-8031 www.softbase.co.kr Copyright 2010 SOFTBase Inc. All rights reserved
목차 1 장 : 개요... 3 본문서의목적... 3 주요내용... 3 관련자료... 3 2 장 : xframe 버전관리개요... 4 버전관리개요및목적... 4 사용자운영체제환경구분... 5 UI 실행환경구분... 6 사용환경세부비교... 7 윈도우사용자계정콘트롤개요... 8 사용자계정콘트롤의설정은방법... 8 3 장 : 버전관리페이지구성...11 버전관리페이지구성... 11 전용브라우저사용환경... 11 XSyncStart 컴포넌트파리미터... 12 샘플페이지... 15 범용브라우저기동 전용브라우저사용환경페이지구성샘플... 15 전용브라우저사용환경페이지구성샘플... 18 4 장 : 버전관리아키텍처...21 버전관리컴포넌트구성... 21 버전관리컴포넌트구성파일... 21 버전관리절차... 22 버전관리세부절차... 23 리스트파일구조... 24 샘플리스트파일내용... 25-2 -
1 장 : 개요 이장에서는본문서의목적, 주요내용및관련자료에대해서기술합니다. 이장에서기술하는내용은아래와 같습니다. 본문서의목적 주요내용 관련자료 본문서의목적 본문서는사용자 PC 에 xframe 설치와관련된아키텍처와실행환경 (IE, 전용브라우저 ) 에따른관련환경 정보를구성하는방식에대한정보를포함하고있습니다. 주요내용 본문서에서는아래와같은내용을포함하고있습니다. xframe 버전관리개요 xframe 버전관리아키텍처 xframe 사용환경설정방법 관련자료 본문서와관련된자료는다음과같습니다. 솔루션홈페이지 : http://www.softbase.co.kr - 3 -
2 장 : xframe 버전관리개요 이장에서는 xframe 버전관리와관련된내용에대해서기술합니다. 이장에서기술하는내용은아래와 같습니다. 버전관리개요및목적 사용자환경구분 버전관리개요및목적 버전관리의목적은사용자 PC 에설치되는 xframe 관련파일들을항상최신버전으로업데이트하는것을 목적으로합니다. 버전관리는최초설치및업그레이드과정으로구분되며, 각각의단계에따라진행되는부분은아래와 같습니다. 구분 최초설치 업그레이드 절차 사용자가 PC에최초로 xframe을설치하는경우를의미함. 사용자가 Web 브라우저를이용하여지정된 URL에접속함. 지정된 URL에접속하며, xframe 버전관리 Control을설치함. 설치되 xframe 버전관리 Control이사용자 PC에최신버전을설치하고, UI 시작페이지로이동함. 사용자 PC 바탕화면에업무에직접연결할수있는바로가기아이콘생성함 바탕화면의바로가기아이콘또는브라우저에직접 URL을접속함. 서버의파일버전과로컬의파일버전을비교하여변경된부분을다운로드함. UI 시작페이지로이동함. - 4 -
사용자운영체제환경구분 사용자운영체제환경은 xframe 으로구축된 UI 를사용하는사용자 PC 의운영체제환경을의미하며, 다음과 같이사용자 PC 의운영체제에따라다음과같은기본적인제약사항이있습니다. 구분 Windows XP (SP2 이상 ) Windows Vista Windows 7 이상 내용 최초설치시사용자 PC에버전관리콘트롤설치와관련된내용이브라우저에표시되고, 사용자가승인하는절차를수행해야함. 사용자계정콘트롤관련설정이사용함으로설정되어있는경우, 버전관리절차시로컬에파일을저장하는것자체를보안정책에따라허용하지않음. - 5 -
UI 실행환경구분 UI 실행환경은 xframe 으로구축된 UI 를실행하는브라우저환경을의미하며, 사용할수있는환경은다음과 같이구분됩니다. 구분 내용 범용브라우저 범용브라우저를이용하여 xframe 을실행하고사용한다. 전용브라우저 최초설치시에는범용브라우러를통해서사용자 PC 에 xframe 을설치한다. 최초설치이후에는전용브라우저를이용하여 xframe 을실행하고사용한다. - 6 -
사용환경세부비교 브라우저사용구분에따른세부항목별비교내용은아래의표와같습니다. 구분전용브라우저범용브라우저실행파일 xframebrowser.exe IEXPLORER.exe 메모리사용량 28M 45M 버전관리방식 WEB 방식 WEB 방식 실행환경 기동절차 범용브라우저또는버전관리프로그램을통해버전관리수행 전용브라우저기동업무화면표시 범용브라우저를통해버전관리수행 범용브라우저를통해업무화면표시 화면변경사항 해당사항없음 해당사항없음 악성코드영향 관련없음 관련있음 각종 IE 부가컴포넌트영향 ( 키보드처리, 관련없음 관련있음 브라우저 특수키처리등등 ) 독립성 브라우저버전업그레이드호환성 관련없음 호환성테스트진행및 패치적용 브라우저보안관련 관련없음 관련있음 브라우저비정상종료영향도 관련없음 관련있음 OS 업그레이드에따른호환성 관련없음 호환성테스트진행및패치적용 운영체제 독립성 OS 보안정책에따른호환성 ( 로컬파일, 레지스트리접근, 포트접근 ( 디바이스연결 ), 네트워크포트접근 ( 책임자거래 관련없음 호환성테스트진행및패치적용 등등 )) - 7 -
윈도우사용자계정콘트롤개요 윈도우사용자계정콘트롤은마이크로소프트의운영체제중 Windows Vista 부터적용된사용자보안 정책으로, 사용자 PC 를보다안정적으로운영하기위한기능을포함하고있다. 기본적인보안정책은사용자 PC 에로그인한사용자가관리자권한을가지고있더라고, 관리자권한이필요한 동작을수행하는프로그램을실행할때, 다시한번사용자에게승인을얻는구조로되어있다. 이로인해서 xframe 을이용한 UI 사용시로컬에 PC 에파일설치하고, PC 자원을저장하고조회하는기능을 수행하기위해서는반드시관리자권한을수행하기위한사용자승인을얻어야한다. 사용자계정콘트롤의설정은방법 사용자계정콘트롤은아래의그림과같이제어판에서 시스템및보안 항목을선택한다. - 8 -
아래의그리과같이 사용자계정콘트롤설정변경 을선택한다. - 9 -
아래의그림과같이좌측의슬라이드를마우스로이용하여설정할수사용자계정콘트롤의알림조건을 변경할수있다. - 10 -
3 장 : 버전관리페이지구성 이장에서는버전관리를수행하기위한서버쪽버전관리페이지에대한내용을대해서기술합니다. 이장에서 기술하는내용은아래와같습니다. 버전관리페이지구성 XSyncStart 컴포넌트파라미터 샘플페이지 버전관리페이지구성 사용자 PC 에 xframe 프로그램을설치하는데접근되는서버의 HTML 페이지는 UI 사용환경에따라다음과 같이구성한다. 전용브라우저사용환경 전용브라우저를사용하는환경에서는다음과같은두가지방식으로구성할수있다. 두가지방식모두최초 설치시에는범용브라우저를통해서설치가수행된다. 구분범용브라우저기동 전용브라우저사용전용브라우저사용범용브라우저기동 전용브라우저사용 내용 범용브라우저를통해서버전관리수행한다. 버전관리가완료되면, 전용브라우저가기동된다. 전용브라우저가기동된이후에범용브라우저를종료할수있다.( 옵션 ) 바탕화면의전용브라우저아이콘을이용해서버전관리를수행한다. 버전관리가완료되면, 전용브라우저가기동된다. 범용브라우저를통해서버전관리수행한다. 버전관리가완료되면, 전용브라우저가기동된다. 전용브라우저가기동된이후에범용브라우저를종료할수있다.( 옵션 ) - 11 -
XSyncStart 컴포넌트파리미터 XSyncStart 컴포넌트의파라미터는아래와같다. 파라미터 LOG_ENCODE_FLAG SVR_IP_ADDR SVR_PORT_NO DOWNLOAD_BASE_URL 내용 XSyncStart가기록하는로그파일에대한암호화여부를지정한다.. 값이 0 인경우, 암호화를수행하지않고, 1 이경우암호호를수행한다. 로그파일은 TARGET_DIR 파라미터에지정된디렉토리밑에 log 라는디렉토리에 XSyncStart_ 로시작되는파일에저장된다. 사용자 PC 환경이윈도우 Vista 이상에서는로그파일이기록되지않는다. 파일을다운로드할서버의 IP 주소를입력한다. DNS가등록되어있을경우, 도메인이름으로등록이가능하다. HTTP 프로토콜로접속할포트번호를지정한다. 웹서버에서서비스하는포트번호와동일하게지정한다. 파일을다운로드할서버의기본 URL을지정한다. 지정된디렉토리하위에서, LIST_FILE_NAME 파라미터에지정된파일을참조하여파일을다운로드한다. LIST_FILE_NAME 다운로드할파일에대한목록이저장되어있는파일이름을지정한다. TARGET_DIR 로컬에다운로드할대상기본디렉토리를지정한다. CHECK_LIST_FILE_FLAG EXCLUDE_DIRS TIME_CHECK_SPAN RUN_MODE 서버의리스트파일 ( 파일목록파일 ) 과로컬에저장된리스트파일의비교여부를지정한다. 1 이면비교하고, 0 이면비교하지않는다. 1 로설정한경우에는서버의리스트파일과로컬의리스트파일만먼저비교하여, 다운로드대상파일이있는지를비교한다. 서버에있는파일중, 다운로드를제외한디렉토리를지정한다. 디렉토리는콤마로구분하여여러개를지정할수있다. 서버에있는파일의수정시각과로컬 PC에있는파일수정시각을비교할때, 시간비교간격을지정한다. 예를들어 5 로설정한경우, 서버파일시각과로컬파일시각이 5초이내의차이가있는경우, 동일할파일로간주하고다운로드를수행하지않는다. CHECK_LIST_FILE_FLAG 파라미터를 1 로설정할경우, 로컬에저장할리스트파일이름뒤에붙을확장자를지정한다. - 12 -
XBROWSER_PROG_FILE_PATH XBROWSER_PROG_ARGUMENT 전용브라우저를사용할경우, 전용브라우저파일의전체경로를지정한다. 전용브라우저를사용할경우, 전용브라우저에게전달할파리미터를지정한다. 파라미터를지정할경우, 첫번째파라미터는반드시전용브라우저가사용하는설정파일에대한경로여야한다. 그외의파라미터는공백으로분리하고, 큰따옴표로 ( ) 로값을구분하여 KEY=VALUE 형식으로지정한다. 이렇게지정된첫번째이후의파라미터값은화면에서 factory.getshareddata 함수를이용해서얻어올수있다. AGENT_PROG_FILE_PATH 버전관리수행완료후, 기동할프로그램의경로를지정한다. AGENT_PROG_ARGUMENT 버전관리수행완료후, 기동할프로그램의파라미터를지정한다. DESKTOP_LINK_NAME 바탕화면에생성할바로가기아이콘의이름을지정한다. DESKTOP_LINK_URL DESKTOP_LINK_ICON_LOCATION PROGRAM_LINK_NAME PROGRAM_FILE_PATH PROGRAM_ARGUMENT PROGRAM_LINK_ICON_LOCATION VIEWER_INSTANCE_NAME 바탕화면에생성할바로가기아이콘의웹경로를지정한다 바탕화면에생성할바로가기아이콘의아이콘경로를지정한다. 지정하지않을경우, 인터넷브라우저의아이콘이사용된다. 전용브라우저를사용할경우, 바탕화면에생성할전용브라우저버전관리프로그램의바로가기아이콘의이름을지정한다. 전용브라우저를사용할경우, 바탕화면에생성할전용브라우저버전관리프로그램경로를지정한다. 전용브라우저를사용할경우, 바탕화면에생성할전용브라우저버전관리프로그램의파라미터를지정한다. 파라미터는각각하나의공백으로구분되면순서대로의미하는부분은아래와같다. 실행모드 (2) 고정 로그암호화여부 : 0 또는 1 다운로드서버 IP 다운로드서버 WEB 포트번호 XSycnStart.txt 파일 URL Target 디렉토리 전용브라우저를사용할경우, 바탕화면에생성할전용브라우저버전관리프로그램의아이콘의경로를지정한다. 지정하지않을경우, 버전관리프로그램의기본아이콘이사용된다. xframeviewer 가기동되어있는지검사하기위한인스턴스이름을지정한다. 지정하지않았을경우, 기본값이사용된다. - 13 -
Viewer.js 또는 xframeconfig.ini 파일에 INSTANCENAME 항목에값을 지정하였을경우, 동일한값을사용한다. - 14 -
샘플페이지 범용브라우저기동 전용브라우저사용환경페이지구성샘플 범용브라우저기동 전용브라우저사용환경페이지구성샘플은아래와같습니다. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <%@ page contenttype="text/html;charset=euc-kr"%> <html> <head> <meta http-equiv="cache-control" content="no-cache"> <meta http-equiv="pragma" content="no-cache"> <meta http-equiv="content-type" content="text/html; charset=euc-kr"> <title>xframe</title> <script language="javascript" type="text/javascript"> // 버전관리콘트롤이로드되면호출되는함수 function XSyncStart_StartDownload() { // 버전관리콘트롤이 Load 되지않았으면오류메시지표시 if(frmstarter.isxsyncstartloaded.value!= "1") { alert(" 버전관리모듈이로드되지않았습니다."); return; // download start var ret; ret = XSyncStart.StartDownload(); if (ret == 0) { // SUCCESS alert(" 버전관리오류가발생하였습니다. 오류코드 : " + nret); return; // 버전관리가관료되면호출되는함수 function XSyncStart_DownloadComplete(nErrCode, strerrmsg) { // nerrcode 0 이아니면오류다. if (nerrcode!= 0) { alert("error code = " + nerrcode + ", " + strerrmsg); return; // 전용브라우저를사용함으로브라우저창을닫는다. ExitBrowser(); // 브라우저종료함수 function ExitBrowser() { - 15 -
47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 var brver = navigator.useragent; var brverid = brver.indexof('msie'); var brnum = brver.substr(brverid, 8); var brvernum = brnum.substr(5, brnum.length); var nvernum = 0; nvernum = parsefloat(brvernum); if(nvernum >= 7) { window.open('', '_self', ''); window.close(); else if(nvernum = 6) { window.opener = null; window.close(); else { window.opener = ''; self.close(); //--> </script> <!-- Event Map Start --> <SCRIPT LANGUAGE=javascript FOR=XSyncStart EVENT="DownComplete(nErrCode, strerrmsg)"> XSyncStart_DownloadComplete(nErrCode, strerrmsg); </SCRIPT> <SCRIPT LANGUAGE=javascript FOR=XSyncStart EVENT="LoadComplete()"> frmstarter.isxsyncstartloaded.value = "1"; XSyncStart_StartDownload(); </SCRIPT> <!-- Event Map End --> </head> <body background="images/bg.gif" leftmargin="0" topmargin="0"> <!-- 밑에경로는 XFrameViewer 경로 --> <FORM id=frmstarter action="./viewer.html" method="post"> <INPUT id=isxsyncstartloaded type="hidden" value="0"> </FORM> <OBJECT id=xsyncstart classid="clsid:89073cd5-59d5-4bac-a0e1-a770970d55ca" CODEBASE="XSyncStart.cab#version=11,10,27,1" width="1" height="1"> <PARAM NAME="LOG_ENCODE_FLAG" VALUE= 0"> <PARAM NAME="SVR_IP_ADDR" VALUE="125.133.62.11"> <PARAM NAME="SVR_PORT_NO" VALUE="80"> <PARAM NAME="DOWNLOAD_BASE_URL" VALUE="xframe/version/studio/prod/master"> <PARAM NAME="LIST_FILE_NAME" VALUE="_listfile.txt"> - 16 -
101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 <PARAM NAME="TARGET_DIR" VALUE="C:\xFrame"> <PARAM NAME="CHECK_LIST_FILE_FLAG" VALUE="0"> <PARAM NAME="EXCLUDE_DIRS" VALUE=""> <PARAM NAME="TIME_CHECK_SPAN" VALUE="5"> <PARAM NAME="RUN_MODE" VALUE="XFRAME_BROWSER"> <PARAM NAME="XBROWSER_PROG_FILE_PATH" VALUE="C:\xFrame\bin\xFrameBrowser.exe"> <PARAM NAME="XBROWSER_PROG_ARGUMENT" VALUE="C:\xFrame\bin\xFrameConfig.ini"> <PARAM NAME="AGENT_PROG_FILE_PATH" VALUE=""> <PARAM NAME="AGENT_PROG_ARGUMENT" VALUE=""> <PARAM NAME="DESKTOP_LINK_NAME" VALUE="Start Browser"> <PARAM NAME="DESKTOP_LINK_URL" VALUE="http://127.0.0.1:80/index.html"> <PARAM NAME="DESKTOP_LINK_ICON_LOCATION" VALUE=""> <PARAM NAME="PROGRAM_LINK_NAME" VALUE=""> <PARAM NAME="PROGRAM_FILE_PATH" VALUE=""> <PARAM NAME="PROGRAM_ARGUMENT" VALUE=""> <PARAM NAME="PROGRAM_LINK_ICON_LOCATION" VALUE=""> </OBJECT> </body> </html> 위의소스에대한설명은아래와같습니다. 라인 설명 13 버전관리콘트롤이로드되면호출되는함수로써, 버전관리절차를시작한다. 32 버전관리절차가완료되면호출되는함수로써, 정상처리시브라우저를닫는함수를호출한다. 73 ~ 77 버전관리콘트롤의이벤트발생에대한처리를설정한다. 91 ~ 116 버전관리콘트롤의정보를설정한다. - 17 -
전용브라우저사용환경페이지구성샘플 전용브라우저사용환경페이지구성샘플은아래와같습니다. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <%@ page contenttype="text/html;charset=euc-kr"%> <html> <head> <meta http-equiv="cache-control" content="no-cache"> <meta http-equiv="pragma" content="no-cache"> <meta http-equiv="content-type" content="text/html; charset=euc-kr"> <title>xframe</title> <script language="javascript" type="text/javascript"> // 버전관리콘트롤이로드되면호출되는함수 function XSyncStart_StartDownload() { // 버전관리콘트롤이 Load 되지않았으면오류메시지표시 if(frmstarter.isxsyncstartloaded.value!= "1") { alert(" 버전관리모듈이로드되지않았습니다."); return; // download start var ret; ret = XSyncStart.StartDownload(); if (ret == 0) { // SUCCESS alert(" 버전관리오류가발생하였습니다. 오류코드 : " + nret); return; // 버전관리가관료되면호출되는함수 function XSyncStart_DownloadComplete(nErrCode, strerrmsg) { // nerrcode 0 이아니면오류다. if (nerrcode!= 0) { alert("error code = " + nerrcode + ", " + strerrmsg); return; // 전용브라우저를사용함으로브라우저창을닫는다. ExitBrowser(); // 브라우저종료함수 function ExitBrowser() { var brver = navigator.useragent; var brverid = brver.indexof('msie'); var brnum = brver.substr(brverid, 8); var brvernum = brnum.substr(5, brnum.length); - 18 -
51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 var nvernum = 0; nvernum = parsefloat(brvernum); if(nvernum >= 7) { window.open('', '_self', ''); window.close(); else if(nvernum = 6) { window.opener = null; window.close(); else { window.opener = ''; self.close(); //--> </script> <!-- Event Map Start --> <SCRIPT LANGUAGE=javascript FOR=XSyncStart EVENT="DownComplete(nErrCode, strerrmsg)"> XSyncStart_DownloadComplete(nErrCode, strerrmsg); </SCRIPT> <SCRIPT LANGUAGE=javascript FOR=XSyncStart EVENT="LoadComplete()"> frmstarter.isxsyncstartloaded.value = "1"; XSyncStart_StartDownload(); </SCRIPT> <!-- Event Map End --> </head> <body background="images/bg.gif" leftmargin="0" topmargin="0"> <!-- 밑에경로는 XFrameViewer 경로 --> <FORM id=frmstarter action="./viewer.html" method="post"> <INPUT id=isxsyncstartloaded type="hidden" value="0"> </FORM> <OBJECT id=xsyncstart classid="clsid:89073cd5-59d5-4bac-a0e1-a770970d55ca" CODEBASE="XSyncStart.cab#version=11,10,27,1" width="1" height="1"> <PARAM NAME="LOG_ENCODE_FLAG" VALUE= 0"> <PARAM NAME="SVR_IP_ADDR" VALUE="125.133.62.11"> <PARAM NAME="SVR_PORT_NO" VALUE="80"> <PARAM NAME="DOWNLOAD_BASE_URL" VALUE="xframe/version/studio/prod/master"> <PARAM NAME="LIST_FILE_NAME" VALUE="_listfile.txt"> <PARAM NAME="TARGET_DIR" VALUE="C:\xFrame"> <PARAM NAME="CHECK_LIST_FILE_FLAG" VALUE="0"> <PARAM NAME="EXCLUDE_DIRS" VALUE=""> <PARAM NAME="TIME_CHECK_SPAN" VALUE="5"> - 19 -
105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 <PARAM NAME="RUN_MODE" VALUE="XFRAME_BROWSER"> <PARAM NAME="XBROWSER_PROG_FILE_PATH" VALUE="C:\xFrame\bin\xFrameBrowser.exe"> <PARAM NAME="XBROWSER_PROG_ARGUMENT" VALUE="C:\xFrame\bin\xFrameConfig.ini"> <PARAM NAME="AGENT_PROG_FILE_PATH" VALUE=""> <PARAM NAME="AGENT_PROG_ARGUMENT" VALUE=""> <PARAM NAME="DESKTOP_LINK_NAME" VALUE=""> <PARAM NAME="DESKTOP_LINK_URL" VALUE=""> <PARAM NAME="DESKTOP_LINK_ICON_LOCATION" VALUE=""> <PARAM NAME="PROGRAM_LINK_NAME" VALUE="Start xframe Browser"> <PARAM NAME="PROGRAM_FILE_PATH" VALUE="%SystemDir%\XSyncExe.exe"> <PARAM NAME="PROGRAM_ARGUMENT" VALUE="2 0 127.0.0.1 80 XSyncStart/XSyncExe.txt C:\xFrame"> <PARAM NAME="PROGRAM_LINK_ICON_LOCATION" VALUE="C:\xFrame\CustomData\XSyncStart_X.ico"> </OBJECT> </body> </html> 위의소스에대한설명은아래와같습니다. 라인 설명 13 버전관리콘트롤이로드되면호출되는함수로써, 버전관리절차를시작한다. 32 버전관리절차가완료되면호출되는함수로써, 정상처리시브라우저를닫는함수를호출한다. 73 ~ 77 버전관리콘트롤의이벤트발생에대한처리를설정한다. 91 ~ 116 버전관리콘트롤의정보를설정한다. - 20 -
4 장 : 버전관리아키텍처 이장에서는버전관리아키텍처에대한내용을대해서기술합니다. 이장에서기술하는내용은아래와 같습니다. 버전관리컴포넌트구성 버전관리프로그램흐름 버전관리리스트파일구조 버전관리컴포넌트구성 사용자 PC 에 xframe 프로그램을설치하는데접근되는서버의 HTML 페이지에는버전관리를수행하는 XSyncStart.cab 파일이포함되어있고, XSyncStart.cab 파일에는 XSyncStart.ocx 파일과 XSyncExe.exe 파일이포함되어있다. 버전관리컴포넌트구성파일 XSyncStart.cab 파일에는아래의두개의파일이포함돠어있고, 각각의기능은아래와같다. 파일 XSyncStart.ocx XSyncExe.exe 설명및기능 서버페이지에서직접사용하는컴포넌트파일 서버페이지에지정된파라미터를버전관리를실제로수행하는 XSyncExe.exe 프로그램을실행시키면서전달 XSyncExe.exe 프로그램이버전관리를완료결과를대기하고, 버전관리완료이후, 후처리작업진행 (Viewer 페이지로이동또는브라우저종료 ) 프로그램다운로드버전관리를수행하는프로그램 XSyncStart.ocx 파일에의해서실행되고, Windows Vista 이상의 OS에서사용자계정콘트롤사용시관리자권한으로실행됨 버전관리완료이후, 결과정보를 XSyncStart.ocx 에게전달함. 전용브라우저를사용하는경우, 전용브라우저를실행시킴. - 21 -
버전관리절차 XSyncExe.exe 프로그램에의해서수행되는버전관리흐름은아래와같다. WEB Server 실행관련리소스파일 화면관련리소스파일 다운로드리스트파일 Binary File (Engine) Image File Style File Code File Menu File Screen Form File (XML) Screen Scrript File (JS) Global Module List File Global Module File Global XDataSet List File Global XDataSet File Start 자동설치및실행 XSyncStart ( 버전관리콤포넌트 ) 버전관리완료후실행 xframe-viewer 리소스접근설정정보 다운로드리스트파일의내용을기준으로버전비교및파일업데이트 Install Dir 로컬에저장된리소스파일 Load 로컬 Cache 디렉토리에저장된파일을기준으로파일다운로드 Cache Dir 사용자 PC 사용자가 Web 브라우저를시작하여 UI 시작페이지에접속하면, XSyncStart.cab 파일이자동설치되고, XSyncStart.cab 파일에포함된컴포넌트파일을이용하여버전관리가수행된다. 버전관리가완료되면, 전용브라우저를사용할경우, 전용브라우저를실행하고나, 그렇지않을경우에는 Viewer 페이지로이동한다. - 22 -
버전관리세부절차 버전관리를위한다운로드세부절차는아래와같다. 단계절차설명 1 리스트파일 다운로드 다운로드받아야할파일에대한정보가포함되어있는리스트파일을다 운로드한다. 2 파일비교 다운로드받은리스트파일의내용에해당하는파일을정보를기준으로다운로드할파일목록을추출한다. 다운로드받을파일에대한정보에대한기준은아래와같다. 로컬에파일이존재하는지여부 로컬의파일과리스트파일에있는파일수정시각비교 로컬의파일과리스트파일에있는파일크기비교 3 파일다운로드 다운로드할파일에대한다운로드수행 4 다운로드후 파일처리 다운로드받은파일에대한후처리작업진행 후처리작업은리스트파일에있는파일에대한 파일처리구분 정보를기준으로한다. 파일처리구분 에대한정보는 리스트파일구조 절을참조한다. 5 다운로드완료처리 전용브라우저를사용하는경우, 전용브라우저를기동한다. 범용브라우저를사용하는경우, Viewer 페이지로이동한다. - 23 -
리스트파일구조 리스트파일은아래와같은역할을수행한다. 버전관리수행시가장먼저참조되는파일이다. 로컬에다운로드를수행해야할파일에대한정보가포함돠어있다. 리스트파일내용에포함되어있지않은파일들은다운로드대상에서제외된다. 리스트파일의내용에는각파일에대한경로, 다운로드완료후처리방식등의정보가포함되어있다. 리스트파일구조는아래와같으며, 파일수정시각및파일크기정보는옵션으로처리되며, 리스트파일에 해당정보가존재하지않을경우, 서버에있는파일에대한정보를 HTTP HEAD 명령을통해서구한다. 각항목은콤마 (, ) 로구분되면, 각항목에대한설명은아래와같다. 구분서버파일상대경로로컬파일상대경로파일카테고리파일처리구분 설명및기능 DOWNLOAD_BASE_DIR 파라미터에설정된디렉토리를기준으로서버에위치한파일의상대경로 TARGET_DIR 파리미터에설정된디렉토리를기준으로로컬에저장할파일의상대경로 아래와같이특수한디렉토리에대한변수가사용될수있다. %SystemDir % : 운영체제가설치된디렉토리의 system32 디렉토리 %WINDIR% : 운영체제가설치된디렉토리 APP : 일반파일, 파일수정시각과파일크기를비교하여다운로드수행 SYS : 시스템파일, 로컬에파일이존재하면, 서버에있는파일과크기와수정시각이다를지라도다운로드하지않음. 다운로드완료후, 파일처리방식 FILE : 파일에대한다운로드만수행 REG : 파일을다운로드이후, 레지스트리에등록 REF : 파일의내용을레지스트리에등록 EXE : 다운로드완료후, 프로그램실행 FNT : 윈도우폰트폴더로파일복사 파일수정시각 ( 옵션 ) 파일의최종수정시각 ( 단위 : 년월일시분초 ) 파일크기 ( 옵션 ) 파일의크기 ( 단위 : 바이트 ) - 24 -
샘플리스트파일내용 아래의내용은샘플리스트파일의내용이다. 1 2 3 4 config/optionconfig.ini,config/optionconfig.ini,sys,file bin/mfc42.dll,%systemdir%/mfc42.dll,sys,file bin/sbcolorpicker.ocx,bin/sbcolorpicker.ocx,app,reg bin/xframeorainterface.dll,bin/xframeorainterface.dll,app,file 위의소스에대한설명은아래와같습니다. 라인 설명 1 로컬에 OptionConfig.ini 파일이존재하면다운로드하지않는다. 2 로컬에파일이존재하지않으면, 윈도우설치디렉토리의 system32 폴더로다운로드한다. 3 서버의파일과비교하여다운로드여부를결정하고, 파일을다운로드한이후에레지스트리에 등록한다. 4 서버의파일과비교하여다운로드여부를결정하고, 파일을다운로드한다. - 25 -