배포 방법

넥사크로플랫폼 애플리케이션은 런타임 배포 형식에 따라 "플러그인 배포", "Launcher 배포", "exe 배포" 3가지 배포 방식을 사용할 수 있습니다. 필요에 따라 3가지 기본 배포 방식를 조합해 원하는 형식으로 배포할 수도 있습니다.

플러그인 배포

플러그인 배포는 넥사크로플랫폼 런타임이 웹브라우저에 삽입된 상태로 애플리케이션을 실행할 때 사용합니다. 사용자가 웹브라우저를 벗어나지 않은 상태에서 다른 작업과 함께 업무를 진행할 수 있으며 즐겨찾기에 추가해 다시 애플리케이션에 접근할 수 있습니다.

서비스 관리자는 배포 시 아래와 같은 디렉터리 구조로 관리할 수 있습니다.

Path

File / Folder

설명

./

nexacroAX.html

인터넷 익스플로러 사용 시 배포 페이지

./

nexacroPlugin.html

크롬, 파이어폭스, 사파리 등 사용 시 배포 페이지

./

nexacro14_SetupEngine.cab

인터넷 익스플로러 사용 시 넥사크로플랫폼 런타임 엔진(액티브X) 설치

./

nexacro14_SetupEngine.exe

크롬, 파이어폭스, 사파리 등 사용 시 넥사크로플랫폼 런타임 엔진(플러그인) 설치

./

nexacro14_client_license.xml

제품 라이선스 파일

./Test/

SampleADL.xadl.js

ADL (자바스크립트)

./Test/

start.json

Bootstrap file

./Test/

[nexacro14lib]

컴포넌트 라이브러리 폴더 (자바스크립트)

./Test/

[_theme_]

테마 폴더 (자바스크립트)

./Test/

[Base]

애플리케이션 폴더 (자바스크립트)

배포에 필요한 파일은 'Generate'가 아닌 'Deploy' 기능으로 작성해야 합니다. 넥사크로스튜디오 [Build > Deploy] 메뉴에서 필요한 항목을 선택하고 배포 파일을 생성합니다.

'Deploy' 옵션 중 'Merge JSON file' 항목은 필수 선택 항목입니다.

넥사크로플랫폼 런타임 엔진 설치 시 브라우저마다 배포 방식이 다르기 때문에 아래와 같이 사용하는 브라우저를 확인하고 적절한 페이지로 이동합니다.

<html>
<head>
<script language="javascript">
function fn_onload()
{
	if ((navigator.userAgent.indexOf("MSIE") > -1) || 
		( navigator.userAgent.indexOf("Trident") != -1)) {
		window.location.href = "./nexacroAX.html";
	} else {
		window.location.href = "./nexacroPlugin.html";
	}
}
</script>
</head>
<body onload="fn_onload()">
</body>
</html>

설치 및 실행 페이지 위치와 페이지 이동 방식은 운영 환경에 따라 달라질 수 있습니다.

배포 페이지

배포 페이지는 넥사크로플랫폼 엔진을 구동하기 위해 웹브라우저가 처음 실행하는 HTML 파일입니다. 파일명은 개발 시 자유롭게 지정할 수 있습니다.

nexacroAX.html

<HTML>
<HEAD>

<meta http-equiv="content-type" content="text/html;charset=UTF-8"/>
<TITLE> Web Browser Embed nexacro platform Sample Page </TITLE>
<SCRIPT LANGUAGE="javascript">
function fn_load()
{
	// Bootstrap 경로를 지정합니다.
	nexacroAXCtrl.bjson = "./Test/start.json";

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

	// 넥사크로플랫폼 엔진을 구동시킵니다.
	nexacroAXCtrl.run();
}
</SCRIPT>

</HEAD>
<BODY onload="fn_load()">
<SCRIPT LANGUAGE="javascript">
document.write('<OBJECT ID="nexacroAXCtrl" width="50%" height="50%" CLASSID="CLSID:6DB5422D-536F-4B80-B32C-16BEA0971512" CodeBase="./nexacro14_SetupEngine.cab#VERSION=2014,7,11,2"/>');
</SCRIPT>
</BODY>
</HTML>

엔진이 최초 설치될 때는 웹브라우저에 설치 메시지가 나타나며 사용자가 설치 버튼을 누르면 설치가 진행됩니다.

nexacroPlugin.html

인터넷 익스플로러가 아닌 경우에는 플러그인을 설치하는 스크립트를 직접 작성해야 합니다. 아래 코드 중 ExistPlugin 함수는 플러그인이 설치됐는지 확인하고 설치가 안됐다면 설치 파일을 내려받아 설치하도록 안내합니다.

<HTML>
<HEAD>
<meta http-equiv="content-type" content="text/html;charset=UTF-8"/>
<TITLE> Web Browser Embed nexacro platform Sample Page </TITLE>
<SCRIPT LANGUAGE="javascript">
function fn_load()
{
    if (ExistPlugin() == false)
    {
        shtml = '<p><ul>';
        shtml += '<li>이 콘텐츠를 표시하는데 사용할 플러그인이 없습니다.</li>';
        shtml += '<li>플러그인을 설치하려면 <a href="./nexacro14_SetupEngine.exe">[nexacro14_SetupEngine.exe]</a>를 내려받아 실행하세요.</li>';
        shtml += '</ul></p>';
        document.writeln(shtml);
    }
    else
    {
        nexacroplugin.xadl = "./Test/start.json";
        nexacroplugin.key = "nexacro_Sample";
        nexacroplugin.launch();
    }
}

function ExistPlugin() 
{
    var mimetype = navigator.mimeTypes["application/nexacro14-plugin"];
    if (mimetype) 
    {
        var enablePlugin = mimetype.enabledPlugin;
        if (enablePlugin)
            return true;
        else
            return false;
    }
    else 
    {
        return false;
    }
}
</SCRIPT>

</HEAD>
<BODY onload="fn_load()">
<SCRIPT LANGUAGE="javascript">
document.write('<EMBED ID="nexacroplugin" type="application/nexacro14-plugin" width="50%" height="50%"/>');
</SCRIPT>
</BODY>
</HTML>

SampleADL.xadl

SampleADL.xadl 파일은 Sample 애플리케이션을 실행하기 위해 애플리케이션의 배포와 실행 환경과 관련된 정보를 담고 있습니다. 이 파일은 넥사크로 스튜디오에 의하여 관리 됩니다.

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

<?xml version="1.0" encoding="utf-8"?>
<ADL version="1.2">
<TypeDefinition url="default_typedef.xml"/> 1
<GlobalVariables url="globalvars.xml"/> 2
<Application id="nexacro_Sample" codepage="utf-8" 
     licenseurl="./nexacro14_client_license.xml" …> 3
     <Layout> 4
          <MainFrame id="mainframe" …>
               <ChildFrame formurl="Base::SampleForm.xfdl"…/> 5
          </MainFrame>
     </Layout>
    <ScreenInfo/>
</Application>
<Script><![CDATA[ ]]></Script>
</ADL>

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

  1. 컴포넌트 배포정보는 default_typedef.xml 파일에 정의했습니다.

  2. 애플리케이션에서 사용하는 Global 변수는 globalvars.xml 파일에 정의했습니다.

  3. 애플리케이션의 ID는 'nexacro_Sample' 이고 라이선스 파일 경로를 지정했습니다.

  4. 애플리케이션 모델은 MainFrame 아래에 ChildFrame이 있는 단일 프레임형태입니다.

  5. 처음 화면에 출력되는 화면 폼은 Base 서비스그룹 'SampleForm.xfdl' 입니다.

이 밖에도 여러 가지 애플리케이션 환경에 대한 정보를 포함하고 있습니다. 이 파일은 넥사크로 스튜디오가 관리하는 파일이므로 직접 편집하지 않을 것을 권장합니다.

라이선스 파일은 제품 구매 시 제공되며 임의로 수정하면 애플리케이션이 정상 실행되지 않을 수 있습니다.

default_typedef.xml

default_typedef.xml 파일은 Sample 애플리케이션 실행을 위한 컴포넌트 배포 정보를 담고 있습니다. 또한, 개발자가 추가한 사용자 컴포넌트를 배포하는데도 사용 됩니다.

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

<?xml version="1.0" encoding="utf-8"?>
<TypeDefinition version="1.1">
  <Modules defaultpath="">
    <Module url="CompBase.json"/>
    <Module url="ComComp.json"/>
    <Module url="Grid.json"/>
    <Module url="DeviceAPI.json"/>
  </Modules>
  <Components>
    <Component type="JavaScript" id="Div" classname="nexacro.Div"/>
    <Component type="JavaScript" id="Button" classname="nexacro.Button"/> 1
    <Component type="JavaScript" id="PopupDiv" classname="nexacro.PopupDiv"/>
    <Component type="JavaScript" id="Combo" classname="nexacro.Combo"/>
    <Component type="JavaScript" id="CheckBox" classname="nexacro.CheckBox"/>
...

</Components>
  <Services>
    <Service prefixid="Base" type="form" url="./Base/" 
       version="0" communicationversion="0"/> 2
  </Services>
</TypeDefinition>

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

  1. Button 컴포넌트에 대한 배포 정보를 담고 있습니다.

    상세한 내용은 다음과 같습니다.

    배포되는 컴포넌트는 Button 컴포넌트입니다.

    Button 컴포넌트를 사용하기 위해서는 nexacro.Button으로 정의된 자바스크립트 모듈(Button.js)이 필요합니다.

  2. Form url을 위한 서비스그룹을 정의했습니다.

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

이 파일은 넥사크로 스튜디오에서 자동 생성되는 파일로 직접 편집하는 것을 권장하지 않습니다.

Launcher 배포

Launcher 배포는 웹브라우저를 통하지 않고, 넥사크로플랫폼 런타임으로만 애플리케이션을 실행할 때 사용합니다. exe 배포와 다른 점은 넥사크로플랫폼 런타임을 직접 실행하지 않고, Launcher를 이용해 실행합니다.

서비스 관리자는 배포 시 아래와 같은 디렉터리 구조로 관리할 수 있습니다.

Path

File / Folder

설명

./

SampleStart.html

인터넷 익스플로러 사용 시 넥사크로플랫폼 엔진 설치 페이지

./

SampleLaunch.html

인터넷 익스플로러 사용 시 넥사크로플랫폼 애플리케이션 실행 페이지

./

nexacro14_Launcher.cab

인터넷 익스플로러 사용 시 넥사크로플랫폼 런처(액티브X) 설치

./

nexacro14_SetupEngine.cab

인터넷 익스플로러 사용 시 넥사크로플랫폼 런타임 엔진(액티브X) 설치

./

nexacro14_client_license.xml

제품 라이선스 파일

./Test/

SampleADL.xadl.js

ADL (자바스크립트)

./Test/

start.json

Bootstrap file

./Test/

[nexacro14lib]

컴포넌트 라이브러리 폴더 (자바스크립트)

./Test/

[_theme_]

테마 폴더 (자바스크립트)

./Test/

[Base]

애플리케이션 폴더 (자바스크립트)

SampleStart.html

플러그인 배포와 달리 넥사크로플랫폼 엔진 설치만을 위해 사용되는 HTML 파일 입니다. 파일명은 개발 시 자유롭게 지정할 수 있습니다.

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

<HTML>
<HEAD>
<TITLE> nexacro platform Install Sample Page </TITLE>
</HEAD>
<SCRIPT LANGUAGE=javascript FOR=nexacroAXCtrl EVENT="error(errcode,errmsg)">		
		alert("errcode: " + errcode + "\nerrmsg: " + errmsg);
</SCRIPT>
<BODY>
<SCRIPT LANGUAGE="JavaScript">
document.write('<OBJECT ID="nexacroAXCtrl" '
+ 'CLASSID="CLSID:6DB5422D-536F-4B80-B32C-16BEA0971512" width="0" height="0" '
+ '"CODEBASE="./nexacro14_SetupEngine.cab#VERSION=2014,7,11,2"  '
+ 'onError="fn_onError()"> '
+ '</OBJECT>');
</SCRIPT>
</BODY>
</HTML>

별다른 실행 명령이 없이 <SCRIPT LANGUAGE="JavaScript"> ~ </SCRIPT>까지만 등록하면 넥사크로플랫폼 엔진이 설치됩니다.

SampleLaunch.html

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

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

<HTML>
<HEAD>
<TITLE> nexacroLauncher Sample page </TITLE>
<SCRIPT LANGUAGE="javascript">
function fn_load ()
{
	nexacroLauncher.bjson = "./Test/start.json"; 2
	nexacroLauncher.key = "nexacro_Sample"; 3
	nexacroLauncher.launch(); 4
}
</SCRIPT>
</HEAD>
<SCRIPT LANGUAGE=javascript FOR=nexacroLauncher EVENT="error(errcode,errmsg)">		
		alert("errcode: " + errcode + "\nerrmsg: " + errmsg);
</SCRIPT>
<BODY onload="fn_load()">
<SCRIPT LANGUAGE="javascript">
document.write('<OBJECT ID="nexacroLauncher" '
+ 'CLASSID="CLSID:A7969122-0BB8-452A-93C9-72641B76CFB7" width="90%" height="90%" '
+ 'CODEBASE="./nexacro14_Launcher.cab#VERSION=2014,7,11,2"  '
+ 'onError="fn_onError()">' 1
+ '</OBJECT>');
</SCRIPT>
</BODY>
</HTML>

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

  1. Launcher를 설치합니다.

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

    (Plugin 배포 시 nexacroAX.html 파일에 지정된 key 설정값과 동일한 역할을 합니다.)

  3. Bootstrap 경로를 지정합니다.

  4. Launcher를 통해 넥사크로플랫폼 엔진을 실행합니다.

SampleLaunch.html과 SampleStart.html의 통합

앞에서 설명한 SampleLaunch.html 파일과 SampleStart.html 파일에 설정된 내용은 하나의 파일로 통합할 수 있습니다.

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

<HTML>
<HEAD>
<TITLE> nexacro platform Launcher execution </TITLE>
<SCRIPT LANGUAGE="javascript">
function fn_load ()
{
	nexacroLauncher.bjson = "./Test/start.json";
	nexacroLauncher.key = "nexacro_Sample";
	nexacroLauncher.launch(); 3
}

</SCRIPT>
</HEAD>
<SCRIPT LANGUAGE=javascript FOR=nexacroAXCtrl EVENT="error(errcode,errmsg)">		
		alert("errcode: " + errcode + "\nerrmsg: " + errmsg);
</SCRIPT>
<SCRIPT LANGUAGE=javascript FOR=nexacroLauncher EVENT="error(errcode,errmsg)">		
		alert("errcode: " + errcode + "\nerrmsg: " + errmsg);
</SCRIPT>
<BODY onload=" fn_load()">
<SCRIPT LANGUAGE="javascript">
document.write('<OBJECT ID="nexacroAXCtrl" '
+ 'CLASSID="CLSID:6DB5422D-536F-4B80-B32C-16BEA0971512" width="0" height="0" '
+ '"CODEBASE="./nexacro14_SetupEngine.cab#VERSION=2014,7,11,2" >'
+ '</OBJECT>'); 1
document.write('<OBJECT ID="nexacroLauncher" '
+ 'CLASSID="CLSID:A7969122-0BB8-452A-93C9-72641B76CFB7" width="0" height="0" '
+ '"CODEBASE="./nexacro14_Launcher.cab#VERSION=2014,7,11,2" >'
+ '</OBJECT>'); 2
</SCRIPT>
</BODY>
</HTML>
  1. 넥사크로플랫폼 엔진을 설치합니다.

  2. Launcher를 설치합니다.

  3. Launcher를 실행합니다.

exe 배포

exe 배포는 cab 파일을 사용하지 않고 넥사크로플랫폼 엔진을 수동으로 설치한 후, 애플리케이션을 실행하는 경우에 사용합니다.

보통 CD로 애플리케이션을 배포하거나 설치 파일을 내려받게 하는 경우에 많이 사용되는 방법입니다. 그러나 화면 출력을 위한 넥사크로플랫폼 컴포넌트는 HTTP 서버를 통해 배포하므로, 별도의 HTTP 서버를 운용해야만 합니다.

Context root




SampleADL.xadl.js

ADL (자바스크립트)


start.json

Bootstrap file


[컴포넌트]

컴포넌트 라이브러리 폴더 (자바스크립트)


[_theme_]

테마 폴더 (자바스크립트)


[서비스 그룹]

애플리케이션 폴더 (자바스크립트)

명령 프롬프트에서 넥사크로플랫폼 실행

명령 프롬프트(Command Prompt)에서 넥사크로플랫폼 엔진을 직접 실행합니다.

명령 프롬프트에서 아래와 같이 입력하면, Launcher를 통해 넥사크로플랫폼 엔진을 구동한 것과 동일하게 처리됩니다.

"C:\Program Files\nexacro\14\nexacro.exe" -K "nexacro_Sample" -S "http://127.0.0.1/Test/start.json"
-K

Key값을 지정합니다. Plugin 배포 시 SampleStart.html 파일에 지정된 key 설정값과 동일한 역할을 합니다.

-S

Bootstrap 경로를 지정합니다.

단축아이콘 배포

특정 웹사이트를 통해 접근한 사용자의 PC 바탕화면에 “단축아이콘”을 생성해 주고, 이후부터는 “단축아이콘”을 통하여 애플리케이션을 실행하게 할 때 사용하는 방법입니다. “Launcher 배포”와 “exe 배포”를 섞어놓은 형태라고 할 수 있습니다.

Context root




MakeShortcut.html

MakeShortcut.html 참조


SampleIconImage.ico



nexacro14_SetupEngine.cab



SampleADL.xadl.js

ADL (자바스크립트)


start.json

Bootstrap file


[컴포넌트]

컴포넌트 라이브러리 폴더 (자바스크립트)


[_theme_]

테마 폴더 (자바스크립트)


[서비스 그룹]

애플리케이션 폴더 (자바스크립트)

MakeShortcut.html

MakeShortcut.html 파일은 넥사크로플랫폼 엔진을 설치하고 애플리케이션을 실행하기 위한 단축아이콘을 생성하는 내용을 담고 있습니다. 파일명은 개발 시 자유롭게 지정할 수 있습니다.

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

<HTML>
<HEAD>
<TITLE>Make shortcut Sample Page </TITLE>
<SCRIPT LANGUAGE="javascript">
function fn_make_shortcut()
{
     nexacroLauncher.key = "nexacro_Sample";
     nexacroLauncher.bjson = " ./Test/start.json";
     nexacroLauncher.makeshortcut("shortcut",
          "./SampleIconImage.ico",
          "desktop", false);
}
</SCRIPT>
</HEAD>
<BODY onload="fn_make_shortcut()">
<SCRIPT LANGUAGE="javascript">
document.write('<OBJECT ID="nexacroAXCtrl" '
+ 'CLASSID="CLSID:6DB5422D-536F-4B80-B32C-16BEA0971512" width="90%" height="90%" '
+ '"CODEBASE="./nexacro14_SetupEngine.cab#VERSION=2014,7,11,2" >'
+ '</OBJECT>');
document.write('<OBJECT ID="nexacroLauncher" '
+ 'CLASSID="CLSID:A7969122-0BB8-452A-93C9-72641B76CFB7" '
+ '"CODEBASE="./nexacro14_SetupEngine.cab#VERSION=2014,7,11,2" >'
+ '</OBJECT>');
</SCRIPT>
</BODY>
</HTML>

웹브라우저에서 해당 웹페이지에 접근한 사용자의 PC에 “shortcut”이라는 단축아이콘이 만들어지게 되고, 이후 단축아이콘을 실행하면 넥사크로플랫폼 엔진이 실행됩니다.

써드파티 모듈의 배포

넥사크로플랫폼 런타임에서 써드파티 제품을 사용할 경우, 해당 제품을 Cab 파일로 제작해 사용할 수 있습니다.

써드파티 모듈의 제작

넥사크로플랫폼은 웹브라우저가 사용하는 Cab 설치 기법을 동일하게 사용하므로, 웹브라우저에서 설치 및 실행될 수 있도록 제작된 Cab 파일은 넥사크로플랫폼에서도 설치 및 실행이 가능합니다.

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

써드파티 모듈의 사용

Cab 파일로 제작된 써드파티 모듈의 사용은 간단합니다. 넥사크로 스튜디오에서 Form 개발 시에 Plugin 컴포넌트를 사용하며, 해당 컴포넌트의 codebase 속성값에 Cab 파일의 url을 등록하면 됩니다.