xFrame5 Version Management 가이드

본 문서에서는 아래와 같은 내용을 포함하고 있습니다.

  • xFrame 버전 관리 개요
  • xFrame 버전 관리 아키텍처
  • xFrame 사용 환경 설정 방법

본 문서와 관련된 자료는 다음과 같습니다.

이 장에서는 xFrame 버전 관리와 관련된 내용에 대해서 기술 합니다. 이 장에서 기술하는 내용은 아래와 같습니다.

  • 버전 관리 개요 및 목적
  • 사용자 환경 구분

버전 관리의 목적은 사용자 PC 에 설치되는 xFrame 관련 파일들을 항상 최신 버전으로 업데이트하는 것을 목적으로 합니다.

버전 관리는 최초 설치 및 업그레이드 과정으로 구분되며, 각각의 단계에 따라 진행되는 부분은 아래와 같습니다.

구분 절차
최초 설치
  • 사용자가 PC에 최초로 xFrame을 설치하는 경우를 의미함.
  • 사용자가 Web 브라우저를 이용하여 지정된 URL에 접속함.
  • 지정된 URL에 접속하며, xFrame 버전 관리 Control을 설치함.
  • 설치되 xFrame 버전 관리 Control이 사용자 PC에 최신 버전을 설치하고, UI 시작 페이지로 이동함.
  • 사용자 PC 바탕화면에 업무에 직접 연결할 수 있는 바로 가기 아이콘 생성함
업그레이드
  • 바탕화면의 바로 가기 아이콘 또는 브라우저에 직접 URL을 접속함.
  • 서버의 파일 버전과 로컬의 파일 버전을 비교하여 변경된 부분을 다운로드 함.
  • UI 시작 페이지로 이동함.

사용자 운영 체제 환경은 xFrame 으로 구축된 UI 를 사용하는 사용자 PC 의 운영 체제 환경을 의미하며, 다음과 같이 사용자 PC 의 운영 체제에 따라 다음과 같은 기본 적인 제약 사항이 있습니다.

구분 내용
Windows XP
(SP2 이상)
최초 설치시 사용자 PC에 버전 관리 콘트롤 설치와 관련된 내용이 브라우저에 표시되고, 사용자가 승인하는 절차를 수행해야 함.
Windows Vista
Windows 7 이상
사용자 계정 콘트롤 관련 설정이 사용함으로 설정되어 있는 경우, 버전 관리 절차 시 로컬에 파일을 저장하는 것 자체를 보안 정책에 따라 허용하지 않음.

UI 실행 환경은 xFrame 으로 구축된 UI 를 실행하는 브라우저 환경을 의미하며, 사용할 수 있는 환경은 다음과 같이 구분됩니다.

구분 내용
범용 브라우저
  • 범용 브라우저를 이용하여 xFrame을 실행하고 사용한다.
전용 브라우저
  • 최초 설치시에는 범용 브라우러를 통해서 사용자 PC에 xFrame을 설치한다.
  • 최초 설치 이후에는 전용 브라우저를 이용하여 xFrame을 실행하고 사용한다.

사용 환경 세부 비교

브라우저 사용 구분에 따른 세부 항목별 비교 내용은 아래의 표와 같습니다.

구분 전용 브라우저 범용 브라우저
실행
환경
실행 파일 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 컴포넌트의 파라미터는 아래와 같다.

파라미터 내용
LOG_ENCODE_FLAG
  • XSyncStart가 기록하는 로그 파일에 대한 암호화 여부를 지정한다.
  • 값이 “0”인 경우, 암호화를 수행하지 않고, “1”이 경우 암호호를 수행한다.
  • 로그 파일은 “TARGET_DIR” 파라미터에 지정된 디렉토리 밑에 “log”라는 디렉토리에 “XSyncStart_” 로 시작되는 파일에 저장된다.
  • 사용자 PC 환경이 윈도우 Vista 이상에서는 로그 파일이 기록되지 않는다.
SVR_IP_ADDR
  • 파일을 다운로드할 서버의 IP 주소를 입력한다.
  • DNS가 등록되어 있을경우, 도메인 이름으로 등록이 가능하다.
SVR_PORT_NO
  • HTTP 프로토콜로 접속할 포트 번호를 지정한다.
  • 웹서버에서 서비스하는 포트 번호와 동일하게 지정한다.
DOWNLOAD_BASE_URL
  • 파일을 다운로드할 서버의 기본 URL을 지정한다.
  • 지정된 디렉토리 하위에서, “LIST_FILE_NAME” 파라미터에 지정된 파일을 참조하여 파일을 다운로드 한다.
LIST_FILE_NAME
  • 다운로드할 파일에 대한 목록이 저장되어 있는 파일 이름을 지정한다.
TARGET_DIR
  • 로컬에 다운로드할 대상 기본 디렉토리를 지정한다.
CHECK_LIST_FILE_FLAG
  • 서버의 리스트 파일(파일 목록 파일)과 로컬에 저장된 리스트 파일의 비교 여부를 지정한다.
  • “1”이면 비교하고, “0”이면 비교하지 않는다.
  • “1”로 설정한 경우에는 서버의 리스트 파일과 로컬의 리스트 파일만 먼저 비교하여, 다운로드 대상 파일이 있는지를 비교한다.
EXCLUDE_DIRS
  • 서버에 있는 파일중, 다운로드를 제외한 디렉토리를 지정한다.
  • 디렉토리는 콤마로 구분하여 여러 개를 지정할 수 있다.
TIME_CHECK_SPAN
  • 서버에 있는 파일의 수정 시각과 로컬 PC에 있는 파일 수정 시각을 비교할때, 시간 비교 간격을 지정한다.
  • 예를 들어 “5”로 설정한 경우, 서버 파일 시각과 로컬 파일 시각이 5초 이내의 차이가 있는 경우, 동일할 파일로 간주하고 다운로드를 수행하지 않는다.
RUN_MODE
  • CHECK_LIST_FILE_FLAG 파라미터를 “1”로 설정할 경우, 로컬에 저장할 리스트 파일 이름 뒤에 붙을 확장자를 지정한다.
XBROWSER_PROG_FILE_PATH
  • 전용 브라우저를 사용할 경우, 전용 브라우저 파일의 전체 경로를 지정 한다.
  • 또는 ‘xFrameBrowser’ 지정할 경우 내부적으로 ‘TARGET_DIR’에서 설정한 경로 + ‘bin\xFrameBrowser.exe’ 조합한 경로로 설정 된다.
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
  • 전용 브라우저를 사용할 경우, 바탕화면에 생성할 전용 브라우저 버전 관리 프로그램의 파라미터를 지정한다.
  • 파라미터는 각각 하나의 공백으로 구분되면 순서대로 의미하는 부분은 아래와 같다.
  • 실행 모드(2) – 고정
  • 로그 암호화 여부 : 0 또는 1
  • 다운로드 서버 IP
  • 다운로드 서버 WEB 포트 번호
  • XSycnStart.txt 파일 URL
  • Target 디렉토리
PROGRAM_LINK_ICON_LOCATION
  • 전용 브라우저를 사용할 경우, 바탕화면에 생성할 전용 브라우저 버전 관리 프로그램의 아이콘의 경로를 지정한다.
  • 지정하지 않을 경우, 버전 관리 프로그램의 기본 아이콘이 사용된다.
VIEWER_INSTANCE_NAME
  • xFrameViewer가 기동되어 있는지 검사하기 위한 인스턴스 이름을 지정한다.
  • 지정하지 않았을 경우, 기본값이 사용된다.
  • Viewer.js 또는 xFrameConfig.ini 파일에 INSTANCENAME 항목에 값을 지정하였을 경우, 동일한 값을 사용한다.
SVR_HTTPS
  • 통신 프로토콜 설정(0 ~ 2). 기본값 : 0
  • 0 : http
  • 1 : https 모드. 인증서 오류 발생시 무시하고 계속 진행.
  • 2 : https 모드. 인증서 오류 발생시 오류 메시지 박스를 보여줌.
DELETE_LOCAL_LIST_FILE
  • 배포가 완료된 후 로컬에 있는 배포목록 파일(_listfile.txt)’
  • 삭제 여부(0 또는 1). 기본값 : 0
  • 0 : 삭제하지 않음.
  • 1 : 삭제 함
OCX_FILE_REGISTRY_MODE
  • OCX 파일 레지스트리 방법 설정(0 ~ 2). 기본값 : 0
  • 0 : WinExec() 사용하여 ‘regsvr32.exe’ 실행.
  • 1 : LoadLibraryEx() 사용하여 DllRegisterServer 호출.
  • 2 : ShellExecuteEx() 사용하여 ‘regsvr32.exe’ 실행
LAST_LIST_FILE_NAME
  • 최근 다운로드 한 배포 리스트 파일 이름. (_listfile_last.txt)
LAST_CHECK_DAY_INTERVAL
  • 마지막 배포된 날짜와 현재 날짜 비교 차이. 기준은 일(day). 기본값 : 0
  • 설정된 값이 10일 경우. 마지막 배포 날짜와 현재 날짜와 비교하여 10 일 내이면 ‘LAST_LIST_FILE_NAME’에 설정된 배포 리스트 파일을 읽어서 다운로드 진행.
  • 마지막 배포 날짜가 10일 이전이면 ‘LIST_FILE_NAME’에 설정된 배포 리스트 파일을 읽어서 다운로드 진행

범용 브라우저 기동 → 전용 브라우저 사용 환경 페이지 구성 샘플

범용 브라우저 기동 → 전용 브라우저 사용 환경 페이지 구성 샘플은 아래와 같습니다.

<!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 프로그램이 버전 관리를 완료 결과를 대기하고, 버전 관리 완료 이후, 후 처리 작업 진행(Viewer 페이지로 이동 또는 브라우저 종료)
XSyncExe.exe
  • 프로그램 다운로드 버전 관리를 수행하는 프로그램
  • XSyncStart.ocx 파일에 의해서 실행되고, Windows Vista 이상의 OS에서 사용자 계정 콘트롤 사용시 관리자 권한으로 실행됨
  • 버전 관리 완료 이후, 결과 정보를 XSyncStart.ocx에게 전달함.
  • 전용 브라우저를 사용하는 경우, 전용 브라우저를 실행시킴.

XSyncExe.exe 프로그램에 의해서 수행되는 버전 관리 흐름은 아래와 같다.

사용자가 Web 브라우저를 시작하여 UI 시작 페이지에 접속하면, XSyncStart.cab 파일이 자동 설치되고, XSyncStart.cab 파일에 포함된 컴포넌트 파일을 이용하여 버전 관리가 수행된다.

버전 관리가 완료되면, 전용 브라우저를 사용할 경우, 전용 브라우저를 실행하고나, 그렇지 않을 경우에는 Viewer 페이지로 이동한다.

버전 관리 컴포넌트 구성 파일

버전 관리를 위한 다운로드 세부 절차는 아래와 같다.

단계 절차 설명
1 리스트 파일
다운로드
  • 다운로드 받아야할 파일에 대한 정보가 포함되어 있는 리스트 파일을 다운로드 한다.
2 파일 비교
  • 다운로드 받은 리스트 파일의 내용에 해당하는 파일을 정보를 기준으로 다운로드할 파일 목록을 추출한다.
  • 다운로드 받을 파일에 대한 정보에 대한 기준은 아래와 같다.
  • 로컬에 파일이 존재하는지 여부
  • 로컬의 파일과 리스트 파일에 있는 파일 수정 시각 비교
  • 로컬의 파일과 리스트 파일에 있는 파일 크기 비교
3 파일 다운로드
  • 다운로드할 파일에 대한 다운로드 수행
4 다운로드 후
파일 처리
  • 다운로드 받은 파일에 대한 후 처리 작업 진행
  • 후 처리 작업은 리스트 파일에 있는 파일에 대한 “파일 처리 구분” 정보를 기준으로 한다. “파일 처리 구분”에 대한 정보는 “리스트 파일 구조” 절을 참조한다.
5 다운로드
완료 처리
  • 전용 브라우저를 사용하는 경우, 전용 브라우저를 기동한다.
  • 범용 브라우저를 사용하는 경우, Viewer 페이지로 이동한다.

리스트 파일은 아래와 같은 역할을 수행한다.

  • 버전 관리 수행시 가장 먼저 참조되는 파일이다.
  • 로컬에 다운로드를 수행해야할 파일에 대한 정보가 포함돠어 있다.
  • 리스트 파일 내용에 포함되어 있지 않은 파일들은 다운로드 대상에서 제외된다.
  • 리스트 파일의 내용에는 각 파일에 대한 경로, 다운로드 완료후 처리 방식 등의 정보가 포함되어 있다.

리스트 파일 구조는 아래와 같으며, 파일 수정 시각 및 파일 크기 정보는 옵션으로 처리되며, 리스트 파일에 해당 정보가 존재하지 않을 경우, 서버에 있는 파일에 대한 정보를 HTTP HEAD 명령을 통해서 구한다.

각 항목은 콤마(“,”)로 구분되면, 각 항목에 대한 설명은 아래와 같다.

구분 설명 및 기능
서버 파일 상대 경로
  • DOWNLOAD_BASE_DIR 파라미터에 설정된 디렉토리를 기준으로 서버에 위치한 파일의 상대 경로
로컬 파일 상대 경로
  • TARGET_DIR 파리미터에 설정된 디렉토리를 기준으로 로컬에 저장할 파일의 상대 경로
  • 아래와 같이 특수한 디렉토리에 대한 변수가 사용될 수 있다.
  • %SystemDir % : 운영체제가 설치된 디렉토리의 system32 디렉토리
  • %WINDIR% : 운영체제가 설치된 디렉토리
파일 카테고리
  • APP : 일반 파일, 파일 수정 시각과 파일 크기를 비교하여 다운로드 수행
  • SYS : 시스템 파일, 로컬에 파일이 존재하면, 서버에 있는 파일과 크기와 수정 시각이 다를지라도 다운로드 하지 않음
파일 처리 구분
  • 다운로드 완료후, 파일 처리 방식
  • FILE : 파일에 대한 다운로드만 수행
  • REG : 파일을 다운로드 이후, 레지스트리에 등록
  • REF : 파일의 내용을 레지스트리에 등록
  • EXE : 다운로드 완료후, 프로그램 실행
  • FNT : 윈도우 폰트 폴더로 파일 복사
일 수정 시각 (옵션)
  • 파일의 최종 수정 시각 (단위: 년월일시분초)
파일 크기 (옵션)
  • 파일의 크기 (단위: 바이트)

샘플 리스트 파일 내용

아래의 내용은 샘플 리스트 파일의 내용이다.

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 서버의 파일과 비교하여 다운로드 여부를 결정하고, 파일을 다운로드한다.
  • guide/general/version_management_guide.txt
  • 마지막으로 수정됨: 2023/05/10 12:43
  • 저자 127.0.0.1