기본 배포방법

XPLATFORM의 기본배포에는 “Plugin배포”, “XPLauncher배포”, “exe배포”의 3가지가 있습니다. 이 3가지 기본배포를 조합하여 좀 더 향상된 배포 방법을 만들 수 있습니다.

Plugin 배포

Plugin배포는 XPLATFORM을 Web Browser에 Embed한 상태로 Runtime을 실행할 때 사용합니다. 즉, XPLATFORM Engine이 Web Browser내에서 수행됩니다.

배포를 위한 파일들

서비스 관리자는 배포를 위하여 몇 개의 파일들을 관리해야만 합니다.

다음은 예제로 작성한 배포 서버의 Directory구조입니다.

Plugin 배포 Flow

다음은 Web Browser 내에 XPLATFORM을 배포하는 흐름입니다.

여기서 XPLATFORM Engine이 Component 및 Object들을 모두 설치하면 XPLATFOM Runtime의 기능을 하게 됩니다.

다음 장부터 이 구성도에 나오는 File들을 하나하나 설명하겠습니다.

SampleStart.html 파일

SampleStart.html은 XPLATORM Engine을 구동하기 위하여 Web Browser가 처음 실행하는 HTML파일 입니다. 이 파일명은 개발자가 자유롭게 지정할 수 있습니다.

Web Browser 주소창에 (http://127.0.0.1/SampleStart.html)을 입력하여 해당파일에 접근합니다.

다음은 이 파일의 예제입니다.

<HTML>
<HEAD>
<TITLE> Web Browser Embed XPLATFORM Sample Page </TITLE>
<SCRIPT LANGUAGE="javascript">
function fn_load()
{
// 서비스의 ADL 경로를 지정합니다.
XPLATFORMAXCtrl.xadl = 
"http://127.0.0.1/XP_Service/ SampleADL.xadl"; -- 

// 서비스의 Key값을 설정합니다.
// url상의 서비스들중 유일한 값이어야 합니다
XPLATFORMAXCtrl.key = "XP_Sample"; -- 

// 사용자 PC상에 콤퍼넌트들이 저장될 PATH를 지정합니다.
// 일반적으로 이 PATH값은 지정하지 않습니다.
// 지정하지 않는 경우 "%USERAPP%\TobeSoft\XPLATFORM2009\Component\"로
// 지정됩니다. 
// %USERAPP%의 값은 “부록 A. Alias 경로”를 참조하세요
//XPLATFORMAXCtrl.componentpath = "D:\\TOBESOFT\\#05.Project\\#02.XPLATFORM";

// XPLATFORM의 Size를 Web Browser의 size에 영향 받아 가변적으로 변할지
// 여부를 지정합니다.
// 지정하지 않을 경우 true입니다.
// false일경우 Web Browser의 Plugin Width, Height 값이 적용됩니다.
XPLATFORMAXCtrl.autosize = true;

// XPLATFORM Engine이 사용하는 Thread 개수를 지정합니다.
// 지정하지 않는 경우 5가 됩니다.
// 사용자의 단말기의 CPU가 여러 개일 때 값을 높게 지정해 주면 좋습니다.
// 이 기능은 통신 처리에만 사용하므로 여러 개의 통신을 동시에 사용하기를 
// 원할 경우 숫자를 높여주면 빠른 응답결과를 얻을 수 있습니다. 그러나,
// 네트워크 자체가 느린 경우는 숫자를 높여줘도 그 효과를 얻기 어렵습니다..
// XPLATFORMAXCtrl.commthreadcount = 10;

// XPLATORM Engine이 출력하는 에러정보를 변경할 때 사용합니다.
// 지정하지 않을 경우 XPLATFORM Engine의 기본 에러 정보가 출력됩니다.
// 일반적으로 지정하지 않습니다.
//XPLATFORMAXCtrl.errorfile = "D:\\#01.TOBESOFT\\#05.Project\\error.log";

// XPLATFORM 응용프로그램이 종료된 후, exit() event를 발생시킬지 여부를 
// 지정합니다.
// 지정하지 않을 경우 true가 되어 exit()가 발생합니다.
//XPLATFORMAXCtrl.handleflag = false;

// XPLATFORM Engine을 구동시킵니다.
XPLATFORMAXCtrl.run();

}
</SCRIPT>
</HEAD>
<BODY onload="fn_load()">
<SCRIPT LANGUAGE="javascript">
document.write('<OBJECT ID="XPlatformAXCtrl" classid=":43C5FE00-DD32-4792-83DB-19AE4F88F2A6" 
width="90%" height="90%"
CodeBase="http://127.0.0.1/XPLATFORM9_SetupEngine.cab#VERSION=2011,10,4,1">
</SCRIPT>
</BODY>
</HTML>

SampleADL.xadl 파일

SampleADL.xadl은 Sample 응용프로그램을 실행하기 위한 응용프로그램 배포 및 실행 환경설정 정보를 담고 있습니다.이 파일은 UX-Studio에 의하여 관리 됩니다.

다음은 SampleADL.xadl의 예제입니다.

<ADL version="1.0">
<TypeDefinition url="default_typedef.xml"/> -------------------------- (1)
<GlobalVariables url="globalvars.xml"/> ------------------------------ (2)
<Application id="XP_Sample" codepage="utf-8" language="Korean" …> ---- (3)
<Layout> ------------------------------------------------------------- (4)
<MainFrame id="mainframe" …> 
<ChildFrame formurl="Base::SampleForm.xfdl"…/> ----------------------- (5)
</MainFrame>
</Layout>
</Application>
<Script><![CDATA[ ]]></Script>
</ADL>

위의 파일을 통해 다음의 내용을 알 수 있습니다.

  1. 컴포넌트 배포정보가 default_typedef.xml에 정의되어 있음을 알 수 있습니다.

  2. 응용프로그램에서 사용하는 Global 변수들이 globalvars.xml에 저장됨을 알 수 있습니다.

  3. 응용프로그램의 ID가 XP_Sample임을 알 수 있습니다.

  4. Layout이 MainFrame아래에 ChildFrame하나만 있는 것으로 보아, Application Model이 Single Frame형태인 인 것을 알 수 있습니다. Single Frame은 SDI형태와 유사한 형태를 의미합니다.

  5. 맨 처음 화면에 출력되는 화면 폼이 “SampleForm.xfdl”임을 알 수 있습니다.

이 밖에도 여러 가지 응용프로그램 환경에 대한 정보가 있습니다. 이 파일은 UX-Studio가 관리하는 파일이므로 직접 편집하지 않을 것을 권장합니다. 각각의 요소에 대한 상세한 설명은 Developer’s Guide의 “XPLATFORM 응용프로그램 구조”에서 합니다.

default_typedef.xml 파일

default_typedef.xml은 Sample 응용프로그램 실행을 위한 Component들의 배포 정보를 담고 있습니다. 또한, 개발자가 개발한 추가 Component들을 배포하는데도 사용 됩니다.

다음은 default_typedef.xml의 예제입니다.

<?xml version="1.0" encoding="utf-8"?>
<TypeDefinition>
<Components>
<Component type="Bin" id="Div" classname="Div" module="XComCmp" version="1000"/> --- (1)
<Component type="Bin" id="Button" classname="Button" module="XComCmp" version="1000"/>
…
…
<Component type="Bin" id="Splitter" classname="Splitter" module="XComCmp" 
version="1000"/>
<Component type="Bin" id="GroupBox" classname="GroupBox" module="XComCmp" 
version="1000"/>
<Component type="Bin" id="ProgressBar" classname="ProgressBar" module="XComCmp" 
version="1000"/>
<Component type="Bin" id="Activex" classname="ActiveX" module="XAxCmp" version="1000"/>
<Component type="Bin" id="Dataset" classname="Dataset" module="XPLATFORMLib" 
version="1000"/>
</Components>
<Services>
<Service prefixid="Base" type="form" url="./Base/Win32/" cachelevel="dynamic" 
codepage="" language="" version="" communicationversion=""/> --- (2)
</Services>
<Update>
<Item systemtype="win32" url="http://127.0.0.1/ XP_Components "/> --- (3)
</Update>
</TypeDefinition>

위의 파일을 통해 다음의 내용을 알 수 있습니다.

  1. 이 정보는 Div Component에 대한 배포 정보를 담고 있습니다.

    상세하게는 다음과 같습니다.

    1. 배포되는 컴포넌트는 Div Component입니다.

    2. Div Component를 위해서는 XComCmp.dll이 필요합니다.

    3. XComCmp.dll에서 Div 컴포넌트의 version은 1000입니다.

  2. Form url을 위한 Alias명을 정의했습니다.

    이후 Form명을 지정할 때, “Base/Form명”을 지정하면 “http://127.0.0.1/XP_Service/Base/Win32/Form명”으로 url이 대치됩니다.

  3. 배포될 Component 파일들이 있는 위치를 지정합니다.

    “http://127.0.0.1/XP_Components”라는 url에는 컴포넌트들을 위한 dll 파일들이 존재해야 합니다.

이 파일은 UX-Studio에 자동 생성되는 파일로 직접 편집하는 것을 권장하지 않습니다.

다음은 UX-Studio에서 default_typedef.xml을 관리하는 화면입니다.

XPLauncher 배포

XPLauncher배포는 Web Browse를 통하지 않고, XPLATFORM Runtime으로만 응용프로그램을 실행할 때 사용합니다. exe 배포와 다른 점은 XPLATFORM Runtime을 직접 실행하지 않고, XPLauncher를 이용하여 실행하는 점입니다.

배포를 위한 파일들

서비스 관리자는 배포를 위하여 몇 개의 파일들을 관리해야만 합니다. 다음은 예제로 작성한 배포 서버의 Directory구조입니다.

XPLauncher 배포 Flow

다음은 XPLauncher를 통해 XPLATFORM을 배포하는 흐름입니다.

여기서 XPLATFORM Engine이 Component 및 Object들을 모두 설치하면 XPLATFOM Runtime의 기능을 하게 됩니다.

다음 장부터 이 구성도에 나오는 File들을 하나하나 설명하겠습니다.

SampleStart.html 파일

Plugin배포와 달리 이 파일은 XPLATFORM의 설치만을 위하여 사용되는 HTML 파일 입니다. 이 파일명은 개발자가 자유롭게 지정할 수 있습니다.

Web Browser 주소창에 (http://127.0.0.1/SampleStart.html)을 입력하여 해당파일에 접근합니다.

다음은 이 파일의 예제입니다.

<HTML>
<HEAD>
<TITLE> XPLATFORM Install Sample Page </TITLE>
</HEAD>
<BODY>
<SCRIPT LANGUAGE="JavaScript">
document.write('<OBJECT ID="XPlatformAXCtrl" CLASSID="CLSID: 43C5FE00-DD32-4792-83DB-19AE4F88F2A6" width="90%" height="90%" '
  +'"CODEBASE="http://127.0.0.1/XPLATFORM9_SetupEngine.cab#VERSION=2011,10,4,1" onError="fn_onError()"> '
 + '</OBJECT>');
</SCRIPT>
</BODY>
</HTML>

별다른 실행명령이 없이. <SCRIPT LANGUAGE="JavaScript"> ~ </SCRIPT>까지만 등록하면 XPLATFORM Engine이 설치됩니다.

SampleLauch.html 파일

SampleLaunch.html은 XPLauncher를 구동하기 위하여 실행하는 HTML파일 입니다. 이 파일명은 개발자가 자유롭게 지정할 수 있습니다.

Web Browser 주소창에 (http://127.0.0.1/SampleLaunch.html)을 입력하여 해당파일에 접근합니다.

다음은 이 파일의 예제입니다.

<HTML>
<HEAD>
<TITLE> XPLauncher Sample page </TITLE>
<SCRIPT LANGUAGE="javascript">
function fn_load ()
{
	XPLauncher.launch(); -- (4)
}
</SCRIPT>
</HEAD>
<BODY onload="fn_load()">
<SCRIPT LANGUAGE="javascript">
document.write('<OBJECT ID="XPlatformAXCtrl" CLASSID="CLSID:A99F2782-BD5F-4BDB-ACF0-EBE0C59920D9" width="90%" height="90%" '
+'"CODEBASE="http://127.0.0.1/XPLATFORM9_XPLauncher.cab#VERSION=2009,3,23,1"  onError="fn_onError()" >'-- (1)
+ '<PARAM NAME="key" VALUE=" XP_Sample ">'-- (2)
+ '<PARAM NAME="xadl" 
VALUE="http://127.0.0.1/XP_Service/ SampleADL.xadl">'-- (3)
+ '</OBJECT>');
</SCRIPT>
</BODY>
</HTML>

위의 파일을 통해 다음의 내용을 알 수 있습니다.

  1. XPLauncher를 설치합니다.

  2. 서비스의 Key값을 설정합니다.

    (SampleStart.html의 부분과 동일한 역할을 합니다.)

  3. 서비스의 ADL 경로를 지정합니다.

    (SampleStart.html의 부분과 동일한 역할을 합니다.)

  4. XLuancher를 통해 XLPATOFRM Engine을 실행합니다.

SampleLauch.html과 SampleStart.html의 통합

앞에서 설명한 SampleLaunch.html과 SampleStart.html은 한 파일로 통합할 수 있습니다.

XPLauncher는 XPLauncher용 ActiveX파일(XPLATFORM9_XPLauncher.cab)이 존재 하지만 XPLATFORM Engine 설치 파일(XPLATFORM9_SetupEngine.cab)내에도 존재합니다. 그러므로 XPLATFORM Engine만 설치하고도 XPLauncher를 실행할 수 있습니다.

XPLauncher용 ActiveX파일(XPLATFORM9_XPLauncher.cab)을 별도로 제공하는 이유는 XPLATFORM Engine을 exe 파일로 설치하는 경우, Web Browser상에서의 실행방법을 지원하기 위함입니다.

다음은 통합한 파일의 예제입니다. 이 파일을 실행할 경우

<HTML>
<HEAD>
<TITLE> XPLauncher execution </TITLE>
</HEAD>
<BODY onload=" XPLauncher.launch()">-- (3)
<SCRIPT LANGUAGE="javascript">
document.write('<OBJECT ID="XPlatformAXCtrl" CLASSID="CLSID:43C5FE00-DD32-4792-83DB-19AE4F88F2A6" width="90%" height="90%" '
+'CODEBASE="http://127.0.0.1/XPLATFORM9_XPLauncher.cab#VERSION=2011,10,4,1"  onError="fn_onError()" >'-- (1)
+ '</OBJECT>');
document.write('<OBJECT ID="XPlatformAXCtrl" CLASSID="A30D5481-7381-4dd9-B0F4-0D1D37449E97" '-- (2)
+'CODEBASE="http://127.0.0.1/XPLATFORM9_XPLauncher.cab#VERSION=2011,10,4,1"  onError="fn_onError()" >'
+ '<PARAM NAME="key" VALUE=" XP_Sample ">'
+ '<PARAM NAME="xadl" VALUE="http://127.0.0.1/XP_Service/ SampleADL.xadl">'
+ '</OBJECT>');
</SCRIPT>
</BODY>
</HTML>
  1. XPLATFORM Engine 을 설치합니다. 이때, XPLauncher도 함께 설치 됩니다.

  2. XPLauncher는 codebase없이 CLASSID만 설정합니다.

  3. XPLauncher를 실행합니다.

SampleADL.xadl 파일

Plugin배포의 SampleADL.xadl파일과 동일합니다.

default_typedef.xml 파일

Plugin배포의 default_typedef.xml파일과 동일합니다.

exe 배포

exe배포는 cab파일배포를 하지 않고 XPLATFORM Engine을 수동으로 설치한 후, 응용프로그램을 실행하는 경우에 사용합니다.

보통 파일 다운로드나 CD배포에 많이 사용되는 방법입니다. 그러나 UI출력을 위한 XPLATFORM Component들은 http Server를 통해 배포하므로, 배포용 http Server를 운용해야만 합니다.

배포를 위한 파일들

Engine배포용 서버는 없지만, 서비스 관리자는 서비스UI와 Component들의 배포를 위하여 몇 개의 파일들을 관리해야만 합니다.

다음은 예제로 작성한 배포 서버의 Directory구조입니다.

exe 배포 Flow

다음은 exe파일을 직접 실행하는 XPLATFORM을 배포하는 흐름입니다.

여기서 XPLATFORM Engine이 Component 및 Object들을 모두 설치하면 XPLATFOM Runtime의 기능을 하게 됩니다.

명령줄에서 XPLATFORM 실행

MS Windows의 명령줄에서 XPLATFORM Engine을 직접 실행합니다.

명령줄에서 아래와 같이 입력하면, XPLauncher를 통해 XPLATFORM Engine을 구동한 것과 동일합니다.

"C:\Program Files\TOBESOFT\XPLATFORM\9.2\XPLATFORM.exe" -K “XP_Sample” -X "http://127.0.0.1/XP_Service/SampleADL.xadl"

이 명령줄의 내용을 보면,

-K option을 사용하여 Key값을 지정하고 있습니다. SampleLaunch.html의 부분과 동일한 역할을 합니다.
-X option을 사용하여 ADL 경로를 지정합니다. SampleLaunch.html의 부분과 동일한 역할을 합니다.

배포를 위한 파일들

exe배포는 “Plugin배포”나 “XPLauncher배포”에서처럼 html파일을 필요로 하지 않습니다.

단지, XPLATFORM Engine이 설치된 이후 응용프로그램 실행을 위한 파일들이 필요합니다. SampleADL.xadl과 default_typedef.xml등이 필요한 파일들입니다. 즉, XPLATFORM Engine이 구동된 이후에 다운로드 및 설치되는 파일들은 배포의 종류와 무관하게 동일합니다.

단축아이콘 배포

이 방법은 처음 Web Server를 통해 접근한 사용자에게 “단축아이콘”을 생성해 주고, 이후부터는 “단축아이콘”을 통하여 응용프로그램을 실행하게 할 때 사용하는 방법입니다. “XPLauncher배포”와 “exe배포”를 섞어놓은 형태입니다.

배포를 위한 파일들

다음은 예제로 작성한 배포 서버의 Directory구조입니다.

XPLauncher 배포 Flow

다음은 XPLauncher를 통해 XPLATFORM을 배포하는 흐름입니다.

다음 장부터 이 구성도에 나오는 File들을 하나하나 설명하겠습니다.

MakeShortcut.html 파일

MakeShortcut.html은 XPLATFORM Engine을 설치하고 응용프로그램을 실행하기 위한 단축아이콘을 생성하는 내용을 담고 있습니다. 이 파일명은 개발자가 자유롭게 지정할 수 있습니다.

Web Browser 주소창에 (http://127.0.0.1/MakeShortcut.html)을 입력하여 해당파일에 접근합니다.

다음은 이 파일의 예제입니다.

<HTML>
<HEAD>
<TITLE>Make shortcut Sample Page </TITLE>
<SCRIPT LANGUAGE="javascript">
function fn_make_shortcut()
{
XPLauncher.key = " XP_Sample ";
XPLauncher.xadl = " http://127.0.0.1/XP_Service/ SampleADL.xadl ";
XPLauncher.makeshortcut("실행단축아이콘", 
" http://127.0.0.1/SampleIconImage.ico", 
"desktop");
}
</SCRIPT>
</HEAD>
<BODY onload="fn_make_shortcut()">
<SCRIPT LANGUAGE="javascript">
document.write('<OBJECT ID="XPlatformAXCtrl" CLASSID="CLSID: 43C5FE00-DD32-4792-83DB-19AE4F88F2A6" width="90%" height="90%" '
+'"CODEBASE="http://127.0.0.1/XPLATFORM9_XPLauncher.cab#VERSION=2011,10,4,1"  onError="fn_onError()" >'
+ '</OBJECT>');
document.write('<OBJECT ID="XPlatformAXCtrl" CLASSID=" A30D5481-7381-4dd9-B0F4-0D1D37449E97" '
+'"CODEBASE="http://127.0.0.1/XPLATFORM9_XPLauncher.cab#VERSION=2011,10,4,1"  onError="fn_onError()" >'
+ '<PARAM NAME="key" VALUE=" XP_Sample ">'
+ '<PARAM NAME="xadl" VALUE="http://127.0.0.1/XP_Service/ SampleADL.xadl">'
+ '</OBJECT>');
</SCRIPT>
</BODY>
</HTML>

이 Page를 접근한 Web Browser의 사용자의 단말기에는 “실행단축아이콘”이라는 단축아이콘이 만들어지게 되고, 그 단축아이콘을 실행하면 XPLATFORM Engine이 실행됩니다.

3rd Party 모듈의 배포

XPLATFORM Runtime에서 3rd Party의 제품을 사용할 경우, 해당 제품을 Cab 파일로 제작해야만 사용할 수 있습니다.

3rd Party 모듈의 제작

XPLATFORM은 Web Browser가 사용하는 Cab설치 기법을 동일하게 사용하므로, Web Browser에서 설치 및 실행될 수 있도록 제작된 Cab파일은 XPLATFORM에서도 설치 및 실행이 가능합니다.

그러나, 반드시 공인된 기관의 Sign을 받은 Cab파일일 경우에만 사용이 가능하므로 유의하시기 바랍니다.

3rd Party 모듈의 사용

Cab 파일로 제작된 3rd Party모듈의 사용은 간단합니다. UX-Studio에서 Form 개발 시에 OCX Component를 사용하며, 해당 Component의 codebase property값에 Cab파일의 url만 등록하면 됩니다.

런타임 아카이브 기능을 이용한 애플리케이션 로딩 속도 개선

XPLATFORM은 애플리케이션을 수행할 때 발생하는 네트워크 부하를 줄여 애플리케이션 로딩 속도를 개선할 수 있는 런타임 아카이브 기능을 제공합니다.

런타임 아카이브 기능은 애플리케이션에 필요한 파일을 아카이브로 묶어서 최초 수행할 때 사용자 PC에 다운로드받아 놓았다가 애플리케이션을 수행할 때마다 발생하는 불필요한 파일 다운로드를 줄여 애플리케이션의 로딩 시간을 줄여줍니다.

아카이브 파일은 xzip 형식으로 여러 파일이 하나로 묶여 압축되는 구조입니다. 아카이브에 테마, 스타일 시트, 폼을 비롯한 여러 종류의 파일을 관리자가 선택하여 포함할 수 있으나 모든 파일을 다 허용하는 것은 아닙니다.

아카이브에 포함할 수 있는 파일

아카이브에 포함할 수 없는 파일

- 활성화된(Active) 테마 파일

- 스타일 시트(CSS) 파일

- TypeDefinition의 Services로 등록된 경로 내의 모든 파일(xfdl 및 기타 파일)

- 기본 테마 파일(default.xtheme)

- ADL(xadl 파일)

- ADL 경로의 상위 경로에 있는 파일

현재 활성화되어 있는 테마 파일은 포함할 수 있지만, 기본 테마인 default.xtheme 파일은 포함할 수 없습니다. default.xtheme 파일은 XPLATFORM 엔진과 함께 사전에 설치됩니다.

ADL 파일은 아카이브 선택 목록에는 표시되나 아카이브에는 포함할 수 없습니다. 강제로 아키이브에 포함해도 XPLATFORM 엔진에서는 애플리케이션이 수행될 때마다 다운로드받습니다.

ADL 경로가 아닌 그 상위 경로(프로젝트 최상위 경로의 상위 경로)에 있는 파일은 아카이브에 포함할 수 없습니다.

UX-Studio에서 아카이브 파일을 생성할 때 아카이브에 포함할 수 없는 파일은 파일 선택 목록에서 표시되지 않거나 아이콘이 흐릿하게 표시됩니다.

아카이브 처리 절차

  1. 개발자는 UX-Studio에서 애플리케이션을 수행할 때 필요한 파일을 아카이브 파일로 생성합니다. 아카이브 파일은 다음 경로에 생성됩니다.

[프로젝트의 ADL 경로]\ WinArchive
  1. 관리자는 애플리케이션을 아카이브 파일과 함께 배포합니다.

  2. 사용자가 애플리케이션을 수행하면 XPLATFORM 엔진은 xadl 파일의 TypeDefinition 경로로부터 default_typedef.xml을 다운로드받습니다.

  3. default_typedef.xml 파일의 update 정보에 xzip 확장자를 가진 파일이 등록되어 있으면 아카이브 파일로 인식하여 사용자 PC로 다운로드받습니다.다운로드받은 아카이브 파일은 다음 경로에 압축 해제됩니다.

%USERPROFILE%\AppData\LocalLow\TOBESOFT\XPlatform\9.2.1\Archive\[서버 URL + xadl 파일 경로 및 이름 + key 값]\[아카이브 이름]

예를 들어, 서버 URL이 ‘http://127.0.0.1:8080’이고, xadl 파일 경로가 ’/xplatform/project/XPSelfStudy_Beginner/XPSelfStudy_Beginner.xadl'이고, 키값이 ‘XP-SelfStudy’이고, 아카이브 파일 이름이 ‘ArchiveFDL’인 경우 아카이브 파일의 압축 해제 경로는 다음과 같습니다.

%USERPROFILE%\AppData\LocalLow\TOBESOFT\XPlatform\9.2.1\Archive\httplocalhost8080xplatformprojectXPSelfStudy_BeginnerXPSelfStudy_Beginnerxadl_XP-SelfStudy\ArchiveFDL
  1. 아카이브 파일이 사용자 PC에 설치되면 엔진은 애플리케이션이 수행될 때 필요한 파일을 우선 아카이브에서 찾습니다. 그 외의 아카이브로 등록하지 않은 파일은 서버에서 다운로드받습니다.

아카이브 생성

아카이브는 UX-Studio의 Runtime > Make Project Archive 메뉴에서 생성할 수 있습니다.

  1. Make Project Archive 메뉴를 선택하면 아래와 같이 팝업창이 뜹니다. Output Path는 ADL 경로의 WinArchive 디렉터리로 고정되어 수정할 수 없습니다.

  1. Add 버튼을 눌러 아카이브를 생성하고 파일 선택 목록에서 아카이브에 포함할 파일을 선택한 후 Next 버튼을 누릅니다.

    ADL 항목(xadl 파일)은 현재 지원하지 않습니다. 아카이브에 포함해도 애플리케이션을 수행할 때 매번 다운로드 받습니다.

    default.xtheme 파일은 사전에 XPLATFORM 엔진과 함께 설치되어 있기 때문에 파일 선택 목록에 나타나지 않습니다.

  1. Resource 추가를 위해 Add 버튼을 누르면 Add Resource 팝업 창이 뜹니다. 앞의 과정에서 생성한 아카이브 파일을 선택하고 Version 정보를 설정합니다.

    SystemType 항목이 없는 경우에는 Add 버튼을 눌러 win32를 추가합니다.

    TargetPath 항목은 고정이므로 따로 입력할 필요가 없습니다.

    File 항목은 새로 추가한 아카이브를 선택합니다. 확장자(xzip)를 변경하면 아카이브 기능이 동작하지 않으므로 수정하지 마십시오.

    Version 정보는 필수 사항이므로 반드시 입력합니다.

  1. 아카이브 파일이 정상적으로 생성되었는지 Project Explorer > TypeDefinition > Update에서 확인합니다.

아카이브 업데이트

XPLATFORM 엔진은 애플리케이션을 수행할 때 아카이브 목록과 버전을 확인하여 업데이트를 판단합니다. 다시 말해 default_typedef.xml 파일의 Update 요소에 등록된 아카이브 파일과 버전 정보를 확인하여 아카이브를 업데이트할지 결정합니다.

업데이트할 아카이브는 UX-Studio의 Runtime > Make Project Archive 메뉴에서 다시 생성해 등록해줘야 합니다. 그리고 아카이브 파일의 이름은 이전과 동일하게 유지하되 version 값은 반드시 증가시켜야 합니다.

  1. 업데이트할 아카이브 이름과 같은 이름으로 새로운 아카이브를 생성합니다. 단, 이전 아카이브의 Version 값보다 높도록 새로운 아카이브의 Version 값을 증가시킵니다.

  1. 필요없어진 이전 버전 아카이브를 선택하고 Delete 버튼을 눌러 삭제합니다.

  1. Finish를 눌러 아카이브를 등록합니다.

  1. 아카이브 파일이 정상적으로 생성되었는지 Project Explorer > TypeDefinition > Update에서 확인합니다.

  1. 관리자가 업데이트한 아카이브를 배포하면 사용자가 애플리케이션을 수행할 때 XPLATFORM 엔진이 아카이브를 자동으로 업데이트합니다.

아카이브 삭제

XPLATFORM 엔진은 애플리케이션을 수행할 때 아카이브 목록을 검사하여 삭제할 아카이브가 있는지 확인합니다. 다시 말해 default_typedef.xml 파일의 Update 요소에 등록되지 않은 아카이브가 있으면 애플리케이션을 수행하는 사용자 PC의 아카이브 파일 및 관련 디렉터리를 모두 삭제합니다.

  1. UX-Studio의 Project Explorer > TypeDefinition > Update에서 삭제할 아카이브를 선택한 후 Delete 버튼을 눌러 삭제합니다.

  1. 배포 서버의 WinArchive 디렉토리에 있는 아카이브 파일은 자동으로 삭제되지 않으므로 관리자가 직접 해당 아카이브를 삭제해야 합니다.