xFrame5 Version Management 가이드
본 문서에서는 아래와 같은 내용을 포함하고 있습니다.
- xFrame 버전 관리 개요
- xFrame 버전 관리 아키텍처
- xFrame 사용 환경 설정 방법
관련 자료
본 문서와 관련된 자료는 다음과 같습니다.
- 솔루션 홈페이지 : http://www.softbase.co.kr
xFrame 버전 관리 개요
이 장에서는 xFrame 버전 관리와 관련된 내용에 대해서 기술 합니다. 이 장에서 기술하는 내용은 아래와 같습니다.
- 버전 관리 개요 및 목적
- 사용자 환경 구분
버전 관리 개요 및 목적
버전 관리의 목적은 사용자 PC 에 설치되는 xFrame 관련 파일들을 항상 최신 버전으로 업데이트하는 것을 목적으로 합니다.
버전 관리는 최초 설치 및 업그레이드 과정으로 구분되며, 각각의 단계에 따라 진행되는 부분은 아래와 같습니다.
구분 | 절차 |
---|---|
최초 설치 |
|
업그레이드 |
|
사용자 운영 체제 환경 구분
사용자 운영 체제 환경은 xFrame 으로 구축된 UI 를 사용하는 사용자 PC 의 운영 체제 환경을 의미하며, 다음과 같이 사용자 PC 의 운영 체제에 따라 다음과 같은 기본 적인 제약 사항이 있습니다.
구분 | 내용 |
---|---|
Windows XP (SP2 이상) | 최초 설치시 사용자 PC에 버전 관리 콘트롤 설치와 관련된 내용이 브라우저에 표시되고, 사용자가 승인하는 절차를 수행해야 함. |
Windows Vista Windows 7 이상 | 사용자 계정 콘트롤 관련 설정이 사용함으로 설정되어 있는 경우, 버전 관리 절차 시 로컬에 파일을 저장하는 것 자체를 보안 정책에 따라 허용하지 않음. |
UI 실행 환경 구분
UI 실행 환경은 xFrame 으로 구축된 UI 를 실행하는 브라우저 환경을 의미하며, 사용할 수 있는 환경은 다음과 같이 구분됩니다.
구분 | 내용 |
---|---|
범용 브라우저 |
|
전용 브라우저 |
|
사용 환경 세부 비교
브라우저 사용 구분에 따른 세부 항목별 비교 내용은 아래의 표와 같습니다.
구분 | 전용 브라우저 | 범용 브라우저 | |
---|---|---|---|
실행 환경 | 실행 파일 | xFrameBrowser.exe | IEXPLORER.exe |
메모리 사용량 | 28M | 45M | |
버전 관리 방식 | WEB 방식 | WEB 방식 | |
기동 절차 |
|
|
|
화면 변경 사항 | 해당 사항 없음 | 해당 사항 없음 | |
브라우저 독립성 | 악성 코드 영향 | 관련 없음 | 관련 있음 |
각종 IE 부가 컴포넌트 영향 (키보드 처리, 특수키 처리 등등) | 관련 없음 | 관련 있음 | |
브라우저 버전 업그레이드 호환성 | 관련 없음 | 호환성 테스트 진행 및 패치 적용 | |
브라우저 보안 관련 | 관련 없음 | 관련 있음 | |
브라우저 비정상 종료 영향도 | 관련 없음 | 관련 있음 | |
운영 체제 독립성 | OS 업그레이드에 따른 호환성 | 관련 없음 | 호환성 테스트 진행 및 패치 적용 |
OS 보안 정책에 따른 호환성 (로컬 파일, 레지스트리 접근, 포트 접근 (디바이스 연결), 네트워크 포트 접근 (책임자 거래 등등) | 관련 없음 | 호환성 테스트 진행 및 패치 적용 |
윈도우 사용자 계정 콘트롤 개요
윈도우 사용자 계정 콘트롤은 마이크로소프트의 운영 체제중 Windows Vista 부터 적용된 사용자 보안 정책으로, 사용자 PC 를 보다 안정적으로 운영하기 위한 기능을 포함하고 있다.
기본적인 보안 정책은 사용자 PC 에 로그인한 사용자가 관리자 권한을 가지고 있더라고, 관리자 권한이 필요한 동작을 수행하는 프로그램을 실행할 때, 다시 한번 사용자에게 승인을 얻는 구조로 되어 있다.
이로 인해서 xFrame 을 이용한 UI 사용시 로컬에 PC 에 파일 설치하고, PC 자원을 저장하고 조회하는 기능을 수행하기 위해서는 반드시 관리자 권한을 수행하기 위한 사용자 승인을 얻어야 한다.
사용자 계정 콘트롤의 설정은 방법
사용자 계정 콘트롤은 아래의 그림과 같이 제어판에서 “시스템 및 보안” 항목을 선택한다.
아래의 그리과 같이 “사용자 계정 콘트롤 설정 변경”을 선택한다.
아래의 그림과 같이 좌측의 슬라이드를 마우스로 이용하여 설정할 수 사용자 계정 콘트롤의 알림 조건을 변경할 수 있다.
버전 관리 페이지 구성
이 장에서는 버전 관리를 수행하기 위한 서버쪽 버전 관리 페이지에 대한 내용을 대해서 기술합니다. 이 장에서 기술하는 내용은 아래와 같습니다.
- 버전 관리 페이지 구성
- XSyncStart 컴포넌트 파라미터
- 샘플 페이지
버전 관리 페이지 구성
사용자 PC 에 xFrame 프로그램을 설치하는데 접근되는 서버의 HTML 페이지는 UI 사용 환경에 따라 다음과 같이 구성한다.
전용 브라우저 사용 환경
전용 브라우저를 사용하는 환경에서는 다음과 같은 두가지 방식으로 구성할 수 있다. 두가지 방식 모두 최초 설치시에는 범용 브라우저를 통해서 설치가 수행된다.
구분 | 내용 |
---|---|
범용 브라우저 기동 → 전용 브라우저 사용 |
|
전용 브라우저 사용 |
|
범용 브라우저 기동 → 전용 브라우저 사용 |
|
XSyncStart 컴포넌트 파리미터
XSyncStart 컴포넌트의 파라미터는 아래와 같다.
파라미터 | 내용 |
---|---|
LOG_ENCODE_FLAG |
|
SVR_IP_ADDR |
|
SVR_PORT_NO |
|
DOWNLOAD_BASE_URL |
|
LIST_FILE_NAME |
|
TARGET_DIR |
|
CHECK_LIST_FILE_FLAG |
|
EXCLUDE_DIRS |
|
TIME_CHECK_SPAN |
|
RUN_MODE |
|
XBROWSER_PROG_FILE_PATH |
|
XBROWSER_PROG_ARGUMENT |
|
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 |
|
SVR_HTTPS |
|
DELETE_LOCAL_LIST_FILE |
|
OCX_FILE_REGISTRY_MODE |
|
LAST_LIST_FILE_NAME |
|
LAST_CHECK_DAY_INTERVAL |
|
샘플 페이지
범용 브라우저 기동 → 전용 브라우저 사용 환경 페이지 구성 샘플
범용 브라우저 기동 → 전용 브라우저 사용 환경 페이지 구성 샘플은 아래와 같습니다.
<!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); 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"> <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 | 버전 관리 콘트롤의 정보를 설정한다. |
전용 브라우저 사용 환경 페이지 구성 샘플
전용 브라우저 사용 환경 페이지 구성 샘플은 아래와 같습니다.
<!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); 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"> <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 ~ 79 | 버전 관리 콘트롤의 이벤트 발생에 대한 처리를 설정한다. |
91 ~ 117 | 버전 관리 콘트롤의 정보를 설정한다. |
버전 관리 아키텍처
이 장에서는 버전 관리 아키텍처에 대한 내용을 대해서 기술합니다. 이 장에서 기술하는 내용은 아래와 같습니다.
- 버전 관리 컴포넌트 구성
- 버전 관리 프로그램 흐름
- 버전 관리 리스트 파일 구조
버전 관리 컴포넌트 구성
사용자 PC 에 xFrame 프로그램을 설치하는데 접근되는 서버의 HTML 페이지에는 버전 관리를 수행하는 XSyncStart.cab 파일이 포함되어 있고, XSyncStart.cab 파일에는 XSyncStart.ocx 파일과 XSyncExe.exe 파일이 포함되어 있다.
버전 관리 컴포넌트 구성 파일
XSyncStart.cab 파일에는 아래의 두개의 파일이 포함되어 있고, 각각의 기능은 아래와 같다.
파일 | 설명 및 기능 |
---|---|
XSyncStart.ocx |
|
XSyncExe.exe |
|
버전 관리 절차
XSyncExe.exe 프로그램에 의해서 수행되는 버전 관리 흐름은 아래와 같다.
사용자가 Web 브라우저를 시작하여 UI 시작 페이지에 접속하면, XSyncStart.cab 파일이 자동 설치되고, XSyncStart.cab 파일에 포함된 컴포넌트 파일을 이용하여 버전 관리가 수행된다.
버전 관리가 완료되면, 전용 브라우저를 사용할 경우, 전용 브라우저를 실행하고나, 그렇지 않을 경우에는 Viewer 페이지로 이동한다.
버전 관리 컴포넌트 구성 파일
버전 관리를 위한 다운로드 세부 절차는 아래와 같다.
단계 | 절차 | 설명 |
---|---|---|
1 | 리스트 파일 다운로드 |
|
2 | 파일 비교 |
|
3 | 파일 다운로드 |
|
4 | 다운로드 후 파일 처리 |
|
5 | 다운로드 완료 처리 |
|
리스트 파일 구조
리스트 파일은 아래와 같은 역할을 수행한다.
- 버전 관리 수행시 가장 먼저 참조되는 파일이다.
- 로컬에 다운로드를 수행해야할 파일에 대한 정보가 포함돠어 있다.
- 리스트 파일 내용에 포함되어 있지 않은 파일들은 다운로드 대상에서 제외된다.
- 리스트 파일의 내용에는 각 파일에 대한 경로, 다운로드 완료후 처리 방식 등의 정보가 포함되어 있다.
리스트 파일 구조는 아래와 같으며, 파일 수정 시각 및 파일 크기 정보는 옵션으로 처리되며, 리스트 파일에 해당 정보가 존재하지 않을 경우, 서버에 있는 파일에 대한 정보를 HTTP HEAD 명령을 통해서 구한다.
각 항목은 콤마(“,”)로 구분되면, 각 항목에 대한 설명은 아래와 같다.
구분 | 설명 및 기능 |
---|---|
서버 파일 상대 경로 |
|
로컬 파일 상대 경로 |
|
파일 카테고리 |
|
파일 처리 구분 |
|
일 수정 시각 (옵션) |
|
파일 크기 (옵션) |
|
샘플 리스트 파일 내용
아래의 내용은 샘플 리스트 파일의 내용이다.
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 | 서버의 파일과 비교하여 다운로드 여부를 결정하고, 파일을 다운로드한다. |