배포란?
배포의 의미
배포란 서비스를 위하여 필요한 프로그램 모듈을 사용자용 PC 또는 단말기에 설치하는 작업을 뜻합니다.
개발된 BS와 PI를 사용자용 단말기에서 사용하려면 프로그램 일부를 MiPlatform에서 다운로드해야 합니다. 이 과정을 '배포'라고 하며, 사용자는 배포 후 원하는 서비스를 이용할 수 있습니다. MiPlatform은 UNICODE와 ANSI의 2가지 버전을 가지고 있으며, 세부적인 설정값이 UNICODE와 ANSI 버전이 상이할 수 있습니다.
배포의 단계 (배포 모듈별)
배포는 "배포 프로그램 배포", "주요 모듈 배포", "추가 파일 배포"의 3가지가 있으며 "배포 프로그램 배포"와 "주요 모듈 배포"는 반드시 필요한 단계입니다. 또한 "배포 프로그램 배포"가 가장 먼저 실행되어야만 합니다.
배포 프로그램 배포 단계
배포 활동을 담당하는 제어 모듈을 배포합니다.
MS Internet Explorer를 통하여 이루어지거나, exe 형태의 설치파일을 통해 이루어집니다.
MS Internet Explorer를 통하는 경우 당사에서 제공하는 CAB 파일을 이용합니다.
MiUpdater가 이 단계에서 사용자 장치(PC, Note book, PDA등)에 설치됩니다.
주요 모듈 배포 단계
배포의 주요 모듈인 MiPlatform(MiPlatform의 전용 Browser 및 Engine 모듈)과 component를 배포합니다.
MiUpdater를 통해 배포되며, MiPlatform의 주요 모듈들이 모두 이 단계에서 배포됩니다.
추가 파일 배포 단계
그 밖에 개발자가 지정한 추가 파일을 배포합니다.
MiUpdater를 통해 배포되며, 개발자의 필요에 따라 선택하는 단계입니다.
배포의 단계 (시간별)
1단계 : 배포 프로그램의 자동 설치
MS Internet Explorer에서 Launch File을 통하여 배포 프로그램(MiUpdater)을 사용자의 장치에 설치합니다. Launch File은 Cab설치 방식을 사용해 배포 프로그램을 설치합니다. 따라서 개발자는 MiPlatform이 제공하는 MiUpdater의 CAB 파일을 사용자가 다운로드할 수 있도록 Web Server에 올려놓아야 합니다. Launch File은 3.2.1장에서 상세하게 설명합니다.
2단계 : MiUpdater 구동
사용자의 장치에 설치된 MiUpdater는 Launch File에 의해 자동으로 실행됩니다
3단계 : Update Info File 받기
MiUpdater는 Web Server로부터 Update Info File을 다운로드합니다. MiUpdater는 설정된 UpdateURL을 통해 Update Info File의 경로를 찾습니다. Update Info File은 3.2.3장에서 상세하게 설명합니다.
4단계 : Update Info File의 분석
MiUpdater는 Update Info File을 분석하여 실제 다운로드 및 설치할 Update List File을 선택합니다. Version 관리 기법에 의해 Update Info File에 설정된 파일 중 업데이트가 필요한 Update List File 파일을 선택합니다. 다운로드 대상을 선택하는 과정은 "Version 관리" 및 "Cashing 방법"과 연관이 있으며, 4장 버전 관리에서 상세하게 설명합니다.
5단계 : Update List File 받기
MiUpdater는 4단계에서 선택한 Update List File들을 Web Server로부터 다운로드합니다. Update List File 안에는 다음 단계에서 업데이트할 파일들의 리스트가 담겨있습니다. Update List File은 3.2.4장에서 상세하게 설명합니다.
6단계 : Update List File의 분석
MiUpdater는 Update List File을 분석하여 실제 다운로드 및 설치할 파일을 선택합니다. Version 관리 기법에 의해 Update List File에 설정된 파일 중 업데이트가 필요한 대상을 선택합니다. 다운로드 대상을 선택하는 과정은 "Version 관리" 및 "Cashing 방법"과 연관이 있으며 4장 버전 관리에서 상세하게 설명합니다.
7단계 : 파일 다운로드
MiUpdater는 Web Server로부터 6단계에서 선택한 파일을 다운로드합니다. 다운로드 파일의 URL은 Update List File에 등록되어 있습니다. 다운로드된 파일은 MiUpdater가 관리하는 임시 디렉토리에 저장됩니다.
8단계 : download file의 배치
MiUpdater는 7단계에서 임시 디렉토리에 저장했던 파일을 사용자의 장치에 설치합니다. 설치 방법은 복사, 설치파일 실행 등 Update List File에 지정된 방법을 통해 설치 하게 됩니다.
9단계 : download file의 가공
MiUpdater는 8단계에서 지정된 설치를 수행한 뒤 COM 서버를 등록하거나 실행할 수 있습니다. Update List File의 설정에 따라 이 단계가 사용됩니다. 개발자가 Update List File을 구성하는 방법은 Update List File에서 설명합니다.
모듈 배포 방법의 종류
배포는 MiPlatform과 MiUpdater의 실행 환경에 따라 4가지 방법으로 나뉩니다. 실행 환경 정보는 Launch File에서 저장됩니다. Launch File은 3.2.1장에서 상세하게 설명합니다.
배포 방법 1~4는 MiUpdater를 통해서 배포하는 방법입니다. MiUpdater는 Update Info File, Update List File을 참고하여 필요한 파일을 배포합니다.
배포 방법 1
배포 방법 1은 [그림 3-2]과 같이 모듈 배포에서부터 MiPlatform 실행까지 모두 PC의 Web Browser를 통해서 이루어지는 배포 Method입니다.
항목 | 실행 환경 |
---|---|
MiUpdater 다운로드 | PC (Microsoft Windows - Microsoft Internet Explorer) |
MiUpdater 실행 | PC (Microsoft Windows - Microsoft Internet Explorer) |
MiPlatform 실행 | PC (Microsoft Windows - Microsoft Internet Explorer) |
배포 프로그램 배포 단계
사용자 PC에서 Microsoft Internet Explorer(이하 IE)를 통해 배포 프로그램 모듈인 MiUpdater Cab을 다운로드하여 MiUpdater가 설치된 후 IE 상에서 MiUpdater ActiveX가 실행됩니다.
주요 모듈 배포 단계
MiUpdater ActiveX는 MiPlatform의 주요 모듈인 MiPlatform(MiPlatform의 전용 Browser)과 component를 다운로드하여 설치합니다. 이 설치 과정은 IE에 MiUpdater ActiveX를 포함하여 동작하도록 구현되어 있습니다. 설치가 완료되면 IE 상에서 MiUpdater ActiveX가 실행중인 Html이 MiPlatform ActiveX가 포함된 Html로 화면을 전환하여 MiPlatform을 실행합니다.
일반적인 배포에는 "추가 모듈 배포단계"를 예시하지 않았습니다. 만일 추가 모듈을 배포하는 경우라면 Update List File 및 Update Info File의 구성을 변경하여 MiPlatform을 실행하기 전에 추가 모듈을 배포해야 합니다.
배포 방법 2
배포 방법 2는 [그림 3-3]와 같이 모듈 배포는 PC의 Web Browser에서 이루어지며, 배포가 완료된 후 MiPlatform Browser가 실행되는 배포 방법입니다.
항목 | 실행 환경 |
---|---|
MiUpdater 다운로드 | PC (Microsoft Windows - Microsoft Internet Explorer) |
MiUpdater 실행 | PC (Microsoft Windows - Microsoft Internet Explorer) |
MiPlatform 실행 | PC (Microsoft Windows - TOBESOFT MiPlatform Browser) |
배포 프로그램 배포 단계
사용자 PC에서 IE를 통해 배포 프로그램 모듈인 MiUpdater Cab을 다운로드하여 MiUpdater가 설치된 후 IE 상에서 MiUpdater ActiveX가 실행됩니다.
(이 단계는 방법1과 동일합니다)
주요 모듈 배포 단계
MiUpdater ActiveX는 MiPlatform의 주요 모듈인 MiPlatform(MiPlatform의 전용 Browser)과 component를 다운로드하여 설치합니다. 이 설치 과정은 IE에 MiUpdater ActiveX를 포함하여 동작하도록 구현되어 있습니다.
설치가 완료되면 MiUpdater ActiveX가 포함된 Html에서 MiPlatform Browser를 실행합니다. 일반적으로 실행 후 IE의 Window를 닫거나 다른 Page로 이동하는 것을 권장합니다.
일반적인 배포에는 "추가 모듈 배포단계"를 예시하지 않았습니다. 만일 추가 모듈을 배포하는 경우라면 Update List File 및 Update Info File의 구성을 변경하여 MiPlatform을 실행하기 전에 추가 모듈을 배포해야 합니다.
배포 방법 3
배포 방법3은 [그림 3-4]과 같이 배포 프로그램 모듈을 Web Browser에서, 주요 모듈은 MiUpdater에서 배포하며 배포가 완료된 후 MiPlatform Browser를 실행하는 배포 방법입니다.
항목 | 실행 환경 |
---|---|
MiUpdater 다운로드 | PC (Microsoft Windows - Microsoft Internet Explorer) |
MiUpdater 실행 | PC (Microsoft Windows - TOBESOFT MiUpdater) |
MiPlatform 실행 | PC (Microsoft Windows - TOBESOFT MiPlatform) |
배포 프로그램 배포 단계
사용자 PC에서 IE를 통해 배포 프로그램 모듈인 MiUpdater Cab을 다운로드하여 MiUpdater가 설치된 후 MiUpdater가 별도의 프로세스로 실행됩니다.
주요 모듈 배포 단계
MiUpdater는 MiPlatform의 주요 모듈인 MiPlatform, component를 다운로드하여 설치합니다. 이 설치 과정은 MiUpdater에서 자동적으로 진행됩니다. 모든 설치가 완료된 후 MiUpdater는 MiPlatform Browser를 실행합니다.
일반적인 배포에는 "추가 모듈 배포단계"를 예시하지 않았습니다. 만일 추가 모듈을 배포하는 경우라면 Update List File 및 Update Info File의 구성을 변경하여 MiPlatform을 실행하기 전에 추가 모듈을 배포해야 합니다.
배포 방법 4
배포 방법 4는 [그림 3-5]과 같이 주로 배포 프로그램 모듈이 PC에서 Microsoft ActiveSync를 통해 PDA에 이미 설치되어 있거나 설치하는 경우입니다. PDA에 설치된 MiUpdater로 주요 모듈이 배포된 후 MiPlatform Browser를 실행하는 배포 방법입니다. 이 배포 방법은 PDA에서 사용됩니다.
인터넷 연결이 가능한 경우 웹브라우저를 통해 cab 파일만 다운로드하도록 유도할 수 있습니다.
항목 | 실행 환경 |
---|---|
MiUpdater 설치 | 개인용 PC (Microsoft Windows - Microsoft ActiveSync) |
MiUpdater 실행 | PDA (Microsoft Windows CE - TOBESOFT MiUpdater) |
MiPlatform 실행 | PDA (Microsoft Windows CE - TOBESOFT MiPlatform) |
배포 프로그램 배포 단계
사용자의 PC에서 Microsoft ActiveSync로 PDA에 배포 프로그램 모듈인 MiUpdater Cab을 다운로드하여 PDA에 MiUpdater 모듈이 설치된 후 MiUpdater가 실행됩니다.
사용자의 PC에서 Microsoft ActiveSync를 통해 PDA로 배포 프로그램을 다운로드하는 일련의 작업은 별도의 Setup을 작성하여 자동화할 수 있습니다.
주요 모듈 배포 단계
MiUpdater는 MiPlatform의 주요 모듈인 MiPlatform과 component를 다운로드하여 설치합니다. 이 설치 과정은 MiUpdater 프로그램에서 자동으로 진행됩니다. 모든 설치가 완료된 후 MiUpdater는 MiPlatform Browser를 실행합니다.
일반적인 배포에는 "추가 모듈 배포단계"를 예시하지 않았습니다. 만일 추가 모듈을 배포하는 경우라면 Update List File 및 Update Info File의 구성을 변경하여 MiPlatform을 실행하기 전에 추가 모듈을 배포해야 합니다.
화면 배포 방법
화면이란 StartXML, PI, Local BS, Resource등 MiPlatform을 실행할 때 필요한 파일(설정 파일) 또는 서비스 파일을 의미합니다.
StartXML은 화면 배포의 시작점이 되며, 화면의 배치정보 및 Application Group에 대한 정보가 포함되어 있습니다. 따라서 StartXML이 화면 중 가장 먼저 배포되어야 합니다. StartXML에 대해서는 3.2.5장에서 자세히 설명합니다.
StartXML을 제외한 기타 화면에 대한 배포는 "4. 버전관리"에서 설명하는 버전 관리 기법에 따라서 Cache되고 관리됩니다. 따라서 WebServer에 업로드되어 있다 하더라도 최소한의 다운로드로 운영됩니다.
StartXML 배포
MiPlatform의 시작점인 StartXML은 HTTP 또는 HTTPS 또는 FILE 프로토콜을 통해 접근이 가능합니다.
HTTP나 HTTPS 프로토콜을 사용하고자 한다면, WebServer에 업로드되어야 하며, 해당 WebServer가 Web을 통해 접근 가능한 네트워크 상에 있어야 합니다.
FILE 프로토콜을 사용하고자 한다면 MiUpdater를 통해 추가적인 파일과 함께 미리 StartXML을 받아 사용자 장치에 설치 되어 있어야 합니다.
기타 화면 배포
MiPlatform에서 사용하는 화면은 StartXML에 등록된 Protocol을 통해 접근이 가능합니다.
TOBESOFT에서는 MiPlatform에서 사용하기 위한 HTTP, HTTPS, FILE 프로토콜을 기본으로 제공합니다. 필요한 경우 추가적으로 개발된 프로토콜 Adapter를 StartXML에 등록하여 사용할 수 있습니다.
HTTP, HTTPS를 사용하는 경우 StartXML과 마찬가지로, WebServer에 업로드되고, Application Group, 에 대한 상대 경로 또는 절대 경로를 사용해 접근이 가능합니다.
FILE프로토콜을 사용할 경우에는 MiUpdater를 통해 WebServer로부터 미리 화면을 다운로드 받아 사용자 장치에 설치 되어 있어야 합니다.
배포에 필요한 파일들
모듈 배포에 필요한 5개 파일의 내용에 따라 5가지 배포 방식 중 하나를 선택합니다. [그림 3-7]은 배포 후 MiPlatform이 실행되기까지 과정입니다. 1~9 단계는 앞에서 설명한 배포 과정이므로 간단하게 설명하고, 배포에 필요한 파일을 설명합니다.
1. 사용자는 Launch File을 통해 MiUpdater를 설치합니다. 2. 구동된 MiUpdater는 Update Info File을 다운로드합니다. 3~4. MiUpdater에서 Update Info File을 받습니다. Update Info file에 포함된 Update List File의 경로 정보를 분석합니다. 이때 Update 되어야 할 List 파일을 선택합니다. 5~6. MiUpdater에서 Update List File을 받습니다. Update List File을 분석합니다. Update List File분석을 통해 설치 대상 파일의 목록과 원본의 위치를 구합니다. 7. 설치 대상 파일을 서버로부터 받습니다. 이 단계는 Update List 단위로 이루어지게 됩니다. 8~9. 설치 대상 파일을 설치 및 가공합니다. 8~9단계는 Update List 단위로 7단계가 종료된 시점에서 수행합니다. 10. MiPlatform View 화면으로 전환된 후 MiPlatform에 의해 11~13단계가 수행됩니다.
Launch File
Launch File은 MiPlatform이 실행되는데 필요한 모듈을 배포하는 Html 파일입니다.
Launch File은 IE를 통해서 MiUpdater CAB 파일을 설치하고 각 배포 방법에 맞는 방법으로 MiUpdater와 MiPlatform을 실행합니다.
Launch File에서 MiUpdater의 파라미터 값은 배포 환경에 맞게 설정되어야 합니다. MiUpdater의 설정값에 대해서는 "5.2 MiUpdater"에서 자세히 설명합니다.
Launch File에서 MiUpdater의 UpdateURL 파라미터 값을 설정해야 배포가 가능합니다.
MiPlatform 3.3을 배포할 경우 ComponentPath를 반드시 설정할 것을 권장합니다.
개발자는 배포 방법을 선택 후 배포 방법에 맞추어 Launch File을 제작해야 됩니다. 배포 방법에 대한 내용은 "3.1.4 모듈 배포의 종류"를 참고하십시오.
Launch File의 용도
배포 프로그램 모듈 설치
Launch File에는 배포 프로그램 모듈을 다운로드하여 설치하는데 필요한 정보를 등록합니다.
배포 프로그램 모듈 | 주요 기능 |
---|---|
MiUpdater331.Cab | - MiUpdater를 사용자 장치에 설치합니다. - MiUpdater의 구성에 대해서는 "5.2 MiUpdater"를 참조 하십시오. |
MiUpdater 실행 및 관리
Launch File은 설치된 MiUpdater를 ActiveX 형태로 포함하게 되며, 포함된 ActiveX 형태의 MiUpdater를 이용하거나( 배포 방법 1, 배포 방법 2), 사용자가 별도로 MiUpdater를 구동( 배포 방법 3, 배포 방법 4) 하게 됩니다.
Launch File을 KEY, UpdateURL과 같이 MiUpdater가 배포를 하기 위해 필요한 정보를 가지고 있어야 합니다.
배포 방법 1과 배포 방법 2의 경우 MiUpdater의 동작 성공, 진행 또는 오류에 대해 처리해야 합니다.
배포 방법 1과 배포 방법 2의 경우 업데이트가 완료된 시점에서 별도의 프로그램으로 MiPlatform을 구동하거나, MiPlatform View 파일로 HTML 페이지를 전환하여 MiPlatform을 구동하게 됩니다.
배포 방법 3과 배포 방법 4의 경우 MiUpdater는 사용자가 별도로 구동하게 됩니다.
Launch File의 예제
배포 프로그램 모듈 배포 예제
여기서 설명하는 것은 배포 프로그램 모듈을 다운로드하여 설치하는 부분입니다.
실제 사용 시 배포 프로그램 모듈만 배포하는 경우는 없으나, 배포프로그램 모듈 예제는 배포 방법 1에서 배포방법 3까지의 공통 부분이므로 별도로 설명합니다.
배포 모듈 예제는 재사용이 가능한 MiInstlr.js의 예제와 개발자가 개발 화면에 맞추어 재구성해야 되는 Launch File ( HTML 페이지)로 구성되어 있습니다.
$r_title(MiInstlr.js) function CreateMiInstlr(CodeBase,,DeviceType,Version,Key) { document.write( "<OBJECT id='"+"' classid='clsid:1A000B1F-B285-4fbf-B3CD-B50845003EBB' "+ "width=0 height=0 CodeBase='" + CodeBase + "#VERSION=" + CabVersion + "' >" + "<PARAM NAME=DeviceType VALUE="' + DeviceType + '" >" + "<PARAM NAME=Version VALUE='" + Version + "' >" + "<PARAM NAME=key VALUE='" + Key + "' >" + "</OBJECT>" ); }
MiUpdater중 ActiveX로 구성되어 Internet Explorer에서 사용할 수 있도록 구성된 부분이 MiInstaller입니다. ( 5.2 MiUpdater에서 자세히 설명합니다.)
MiInstaller를 생성은 JavaScript (또는 VisualBasic Script)를 사용해 동적으로 생성해야 합니다.
http://www.microsoft.com/korea/windows/ie/ie6/activex/default.mspx 참조
$r_title(LaunchFile) <HTML> <HEAD> <TITLE> CAB 파일 배포 예제</TITLE> </HEAD> <BODY> <SCRIPT LANGUAGE="Javascript" type="Javascript/text" src="./MiInstlr.js"></SCRIPT> <SCRIPT language="Javascript" type="Javascript/text" > CreateMiInstlr("./MiUpdater331.cab","2009,7,1,1","MiInstlr", "WIN32U","3.3","Demo"); </SCRIPT> </BODY> </HTML>
예제의 스크립트(6~10 라인)는 배포 방법 1~4에 반드시 포함되어야 합니다.
MiInstaller는 여러 장치와 버전의 MiPlatform을 Update하기 위한 부분이므로 업데이트를 진행할 대상 장치와 Version을 생성할 때 입력해야 합니다.
또한 정확한 사용자 환경을 찾고 결정하기 위해 Key 값을 입력합니다.
DeviceType 및 Version에 입력할 수 있는 값은 "5.2 MiUpdater"에서 설명합니다.
배포 방법1의 Launch File 예제
배포 방법 1은 Launch File에서 MiUpdater를 사용해 MiPlatform을 배포하고, 배포된 MiPlatform을 MiPlatform View HTML로 이동하는 예제입니다.
이 방식은 기존의 HTML 페이지와 MiPlatform을 연속적으로 사용하고자 할 때 유용한 방법입니다.
31-32 라인: MiUpdater331.cab을 다운로드하여 설치합니다.
33-36 라인 : MiUpdater의 파라미터(StartXML, UpdateURL, ComponentPath 등)를 입력합니다.
15-26 라인 : MiUpdater의 StartDownload() Method를 실행하여 주요 모듈을 배포합니다.
5-14 라인: 배포 완료 시점인 OnEndDownload Event에서 MiPlatform View 화면으로 이동합니다.
$r_title(LaunchFile) <HTML> <HEAD> <TITLE> 배포 방법 1의 예제</TITLE> <META http-equiv="Content-Type" content="text/html; charset=euc-kr"> <SCRIPT language="JavaScript" type="Javascript/text" for="MiInstlr" event="OnEndDownLoad(VersionFileName,DownFileName,Type,TotalCnt,CurIndex)" > if ( Type == 1 ) // EVENTCONFIG { //TotalVersionFileCnt = TotalCnt; alert("Install Completed !! "); // MiPlatform 뷰어가 포함된 HTML 페이지로 이동 window.location = "./MiPlatformView.html"; } </SCRIPT> <SCRIPT language="JavaScript" type="JavaScript/text"> function fnonload() { var bIsNeedUpdate = MiInstlr.ExistVersionUpCnt(); if (bIsNeedUpdate) MiInstlr.StartDownload(); else { // 배포 대상이 없으므로 MiPlatform 뷰어가 포함된 HTML 페이지로 이동 window.location = "./MiPlatformView.html"; } } </SCRIPT> </HEAD> <BODY onload="fnonload"> <SCRIPT language="JavaScript" type="Javascript/text" src="./MiInstlr.js"></SCRIPT> <SCRIPT language="JavaScript" type="Javascript/text" > CreateMiInstlr("./MiUpdater331.cab","2009,7,1,1","MiInstlr", "WIN32U","3.3","Demo"); MiInstlr.Launch = false; MiInstlr.UpdateURL = "http://your.site.com/site/update/update-info-file.xml"; MiInstlr.StartXML = "http://your.site.com/site/key/StartXML.xml"; MiInstlr.Componentpath = "%UserApp%\\Company\\KeyName\\Component"; </SCRIPT> </BODY> </HTML>
MiUpdater의 Property, Method, Event는 "5. 주요 모듈 설명"에서 설명합니다.
MiPlatformView.html은 "~~ MiPlatform View File"에서 설명합니다.
배포 방법 2의 Launch File 예제
배포 방법 2는 Launch File에서 MiUpdater를 사용해 MiPlatform을 배포하고, 배포된 MiPlatform을 별도의 프로세스로 구동하는 예제입니다.
이 방식은 기존의 HTML페이지에서 MiPlatform전용 브라우저로 사용하고자 할 때 유용한 방법입니다.
33~34 라인: MiUpdater331.cab을 다운로드하여 설치합니다.
35~41 라인 : MiUpdater의 파라미터(StartXML, UpdateURL, ComponentPath 등)를 입력합니다.
21~27 라인 : MiUpdater의 StartDownload() Method를 실행하여 주요 모듈을 배포합니다.
5~19 라인 : Run() Method를 실행하여 MiPlatform 전용 브라우저를 실행합니다
$r_title(LaunchFile) <HTML> <HEAD> <TITLE> 배포 방법 2의 예제</TITLE> <META http-equiv="Content-Type" content="text/html; charset=euc-kr"> <SCRIPT language="JavaScript" type="Javascript/text" for="MiInstlr" event="OnEndDownLoad(VersionFileName,DownFileName,Type,TotalCnt,CurIndex)" > function fndorun() { // MiPlatform 전용 Browser실행 MiInstlr.Run(); // 배포 화면 종료. window.location = "/index.html"; }; if ( Type == 1 ) // EVENTCONFIG { //TotalVersionFileCnt = TotalCnt; alert("Install Completed !! "); fndorun(); } </SCRIPT> <SCRIPT language="JavaScript" type="JavaScript/text"> function fnonload() { var bIsNeedUpdate = MiInstlr.ExistVersionUpCnt(); if ( bIsNeedUpdate ) MiInstlr.StartDownload(); else fndorun(); } </SCRIPT> </HEAD> <BODY onload="fnonload"> <SCRIPT language="JavaScript" type="Javascript/text" src="./MiInstlr.js"></SCRIPT> <SCRIPT language="JavaScript" type="Javascript/text" > CreateMiInstlr("./MiUpdater331.cab","2009,7,1,1","MiInstlr", "WIN32U","3.3","Demo"); MiInstlr.Launch = false; MiInstlr.UpdateURL = "http://your.site.com/site/update/update-info-file.xml"; MiInstlr.StartXML = "http://your.site.com/site/key/StartXML.xml"; MiInstlr.Componentpath = "%UserApp%\\Company\\KeyName\\Component"; MiInstlr.GlobalVal = "Data for Single-Sign-On"; MiInstlr.Width = 1032; // 구동될 전용 Browser의 넓이 MiInstlr.Height = 732; // 구동될 전용 Browser의 높이 </SCRIPT> </BODY> </HTML>
MiUpdater의 Property, Method, Event는 "5. 주요 모듈 설명"에서 설명합니다.
배포 방법 3의 Launch File 예제
배포 방법 3은 Launch File에서 MiUpdater를 별도의 프로세스로 구동하고, MiUpdater에서 MiPlatform을 배포하고, 배포된 MiPlatform을 전용 브라우저로 구동하는 예제입니다.
이 방식은 최초 설치 시 HTML로 된 기존의 페이지로 접근해 MiPlatform을 배포하고, 이후 전용 프로그램의 형태로 MiPlatform을 이용할 때 유용한 방법입니다.
개발자는 사용자에게 최초설치 이후 직접 MiPlatform을 실행하도록 하기 위해 ShortCut의 생성 또는 mpl 파일의 배포를 할 수 있습니다.
17~18 라인 : MiUpdater331.cab을 다운로드하여 설치합니다.
19~25 라인 : MiUpdater의 파라미터(StartXML, UpdateURL, ComponentPath 등)를 입력합니다.
5~12 라인 : MiUpdater의 Shortcut을 생성합니다.
사용자가 직접 MiUpdater를 수행합니다.
$r_title(LaunchFile) <HTML> <HEAD> <TITLE> 배포 방법 3의 예제</TITLE> <META http-equiv="Content-Type" content="text/html; charset=euc-kr"> <SCRIPT language="JavaScript" type="JavaScript/text"> function fnonload() { MiInstlr.MakeShortCut("%system%\\MiUpdater331.exe", "-R false -L true -D WIN32U -V 3.3 -K key", "Site Name", "%UserApp%\\Company\\KeyName\\icon.ico", "desktop"); } </SCRIPT> </HEAD> <BODY onload="fnonload"> <SCRIPT language="JavaScript" type="Javascript/text" src="./MiInstlr.js"></SCRIPT> <SCRIPT language="JavaScript" type="Javascript/text" > CreateMiInstlr("./MiUpdater331.cab","2009,7,1,1","MiInstlr", "WIN32U","3.3","Demo"); MiInstlr.Launch = false; MiInstlr.UpdateURL = "http://your.site.com/site/update/update-info-file.xml"; MiInstlr.StartXML = "http://your.site.com/site/key/StartXML.xml"; MiInstlr.Componentpath = "%UserApp%\\Company\\KeyName\\Component"; MiInstlr.GlobalVal = "Data for Single-Sign-On"; MiInstlr.Width = 1032; // 구동될 전용 Browser의 넓이 MiInstlr.Height = 732; // 구동될 전용 Browser의 높이 </SCRIPT> </BODY> </HTML>
MiUpdater의 Property, Method, Event는 "5. 주요 모듈 설명"에서 설명합니다.
배포 방법4의 Launch File 예제
배포 방법 4는 PDA에서 MiPlatform 전용 브라우저를 설치하고 실행하기 위한 방법입니다.
PDA용 Internet Explorer는 Cab의 설치 및 ActiveX의 사용에 제약이 있으므로 Cab 파일의 설치 및 구동을 사용자가 수행해야 합니다. ActiveSync 또는 메모리 카드 복사를 통한 Cab 파일의 복사는 별도로 하고 웹 브라우저를 이용하여 Cab 파일을 배포하는 것에 대해 설명합니다.
PDA용에 대한 배포는 용량 및 각 고객사별 단축 아이콘 생성 등을 위해 Cab을 각 고객사에 맞추어 제작되어야 합니다.
7라인: MiUpdater331.cab을 다운로드하여 설치합니다.
$r_title(LaunchFile) <HTML> <HEAD> <TITLE> 배포 방법 4의 예제</TITLE> <META http-equiv="Content-Type" content="text/html; charset=euc-kr"> </HEAD> <BODY> <A href="http://your.site.com/site/key/PocketPC/MiUpdater331.cab "> 설치 시작</A> </BODY> </HTML>
PDA용 MiUpdater331.cab은 개발자가 직접 작성해야 합니다.
Cab의 설치가 완료되면 PDA상에 바로가기 아이콘이 생성되고, 그 아이콘을 실행하여 MiUpdater 또는 MiPlatform을 실행해야 됩니다.
MiPlatform View File
MiPlatform View File은 IE상에서 MiPlatform ActiveX를 실행하는 HTML 파일입니다.
MiPlatform View File은 배포 방법 1에서 사용됩니다.
MiPlatform View File의 제작은 각 화면의 배치, 이용 방법등에 따라서 개발자에 의해 개발되어야 합니다.
MiPlatform View File의 이름 또는 화면의 구성은 개발자에 의해 임의로 정의될 수 있습니다.
MiPlatform View File의 용도
MiPatform View File은 MiPlatformX(MiPlatform 의 ActiveX) 또는 MiPlatformMX(MiPlatform 의 MDI형태의 ActiveX)를 IE 상에서 실행할 때 사용됩니다.
MiPlatformX의 실행에 필요한 파라미터를 입력합니다.
MiPlatformX와 다른 HTML 페이지를 연동하기 위해 MiPlatformX의 Property, Method, Event를 처리합니다.
MiPlatform View File의 예제
1~7 라인: CreateMiPlatformX()는 지정된 id, Key, nWidth, nHeight의 MiPlatformX를 생성합니다.
9~15 라인: CreateMiPlatformMX()는 지정된 id, Key, nWidth, nHeight의 MiPlatformMX를 생성합니다.
MiPlatformX와 MiPlatformMX는 "5.1.3 MiPlatformX"와 "5.1.4 MiPlatformMX"에서 더 자세히 설명합니다. 샘플은 UNICODE 버전을 기준으로 작성되었습니다.
$r_title(MiPlatformCtrl.js) function CreateMiPlatformX(id,Key,nWidth,nHeight) { document.write("<OBJECT classid='clsid:761C6511-03CE-4B78-ACD8-645CEF3CB714' id='" + id + "' " + "width=" + nWidth + " height=" + nHeight + ">" + "<PARAM E=LUE='" + Key + "' >" + "<PARAM E=AutoSize LUE='false' >" + "</OBJECT>"); } function CreateMiPlatformMX(id,Key,nWidth,nHeight) { document.write("<OBJECT classid='clsid:3F4762E6-3DBD-458C-9BE8-10C0F26C969D' id='" + id + "' " + "width=" + nWidth + " height=" + nHeight + ">" + "<PARAM E=LUE='" + Key + "' >" + "<PARAM E=AutoSize LUE='false' >" + "</OBJECT>"); }
21~24 라인: MiPlatformX를 생성합니다.
15~17 라인: DoRun() Method를 실행하여 MiPlatform을 실행합니다.
5~13 라인: MiPlatformX의 Initialize(), UserNotify(), Communication() Event를 처리하여 MiPlatformX의 동작 상태를 처리합니다.
$r_title(MiPlatformView File) <HTML> <HEAD> <TITLE> MiPlatform View File의 예제</TITLE> <META http-equiv="Content-Type" content="text/html; charset=euc-kr"> <SCRIPT language="JavaScript" for=MipX event="Initialize(RefHostwnd)" > alert("Initialize"); </SCRIPT> <SCRIPT language="JavaScript" for=MipX event="UserNotify(nNotifyID,Msg)" > alert("UserNotify(bStart : " + bStart) </SCRIPT> <SCRIPT language="JavaScript" for=MipX event="Communication(disp,bStart)" > alert("Communication(bStart : " + bStart) </SCRIPT> <SCRIPT lnaguage="javaScript" type=="Javascript/text"> function fnOnLoad(){ MipX.DoRun(); } </SCRIPT> </HEAD> <BODY OnLoad="fnOnLoad()"> <SCRIPT language="JavaScript" type="Javascript/text" src="./MiPlatformCtrl.js"></SCRIPT> <SCRIPT language="JavaScript" type="Javascript/text"> CreateMiPlatformX("MipX","Demo",1024,768); </SCRIPT> </BODY> </HTML>
Update Info File
Update Info File은 MiUpdater에서 배포할 파일의 목록을 관리하는 XML 파일입니다.
Update Info File에는 Update List File에 대한 URL을 포함하고 있습니다. 배포 작업은 Update List File 단위로 다운로드와 설치작업을 수행하게 됩니다. MiUpdater는 Update Info File에 기록된 Update List File이 모두 배포 완료된 시점에서 배포 완료로 인식하게 됩니다.
Update Info File 및 Update List File은 MiUpdater에 의해 사용자 장치에 저장되며, 다음 배포 작업을 할 때 배포여부를 결정하는 기준 정보로 활용됩니다. Update Info File은 Compiled XML 및 Compress XML 형태 또한 지원합니다.
"3.2.1 Luanch File"에서 간략하게 설명하였듯이 MiUpdater에 UpdateURL의 대상은 Update Info File이어야 합니다.
Update List File에 대해서는 "3.2.4 Update List File"에서 설명합니다.
Update Info File에서 Update List File을 버전을 관리하는 방법에 대해서는 "4. 버전 관리"에서 설명합니다.
Update Info File은 MiPlatform의 Dataset XML 구조를 기반으로 작성되어 있습니다.
Dataset 구조는 "6.1 XML Format"을 참조하십시오.
Update Info File의 용도
MiUpdater에게 배포 대상 파일의 목록에 대한 정보를 저장합니다.
Update Info File의 버전 정보를 저장합니다.
Update List File의 버전 정보를 저장합니다.
PreVersionCompare 값이 True로 설정된 MiUpdater에서 ExistVersionUpCnt() 함수를 사용 시 배포 여부를 결정하는 버전의 정보를 저장합니다.( 동작에 대해서는 "4. 버전 관리"에서 설명합니다. )
Update Info File의 XML Schema
Params | |||||
---|---|---|---|---|---|
Param id ="VERSION" type = "string" | Update Info File의 Version | ||||
Param id ="Config" type = "string" | Update Info File 항상 true 값을 갖습니다. | ||||
Param id ="DEVICE" type="string" | DeviceType (Win32 또는 CE 중 택일) | ||||
Param id ="STATUS" type="string" | 다운로드 상태를 저장합니다. 사용자 장치에서만 의미 있는 정보입니다. 오류 발생 시 Local에 저장되어 있는 파일에서 배포 상태를 점검 할 수 있습니다. 0: client에 배포 안됨 1: 다운로드 완료(임시 디렉토리) 2: 배포 완료 ※ 시스템에서 사용하는 부분이므로 "0"으로 세팅합니다. | ||||
N회 반복 | dataset id=DeviceName | ||||
colinfo id='DEVICE' type='string' size='255' | |||||
colinfo id='SOURCE' type='string' size='255' | |||||
colinfo id='VERSION' type='string' size='255' | |||||
colinfo id='UACFIX' type='string' size='255' | |||||
colinfo id='STATUS' type='string' size='2' | |||||
N회반복 | DEVICE | DeviceType (Win32 또는 CE 중 택일) | |||
SOURCE | Update List File의 URL 상대 경로의 형태로 입력 시 Update Info File의 경로를 기준으로 인식됩니다. | ||||
VERSION | Version 정보 (ex: 2009.7.1.1) | ||||
UACFIX | Window Vista 이후 버전에서 UAC 기능과 관련해 ActiveX 등록을 HKLM에 해야 할 경우에 대해 판단합니다. TRUE 또는 1 : HKLM에 등록해야 하는 경우. FALSE 또는 0 : HKLM에 등록할 필요가 없는 경우. 이외의 값 : 상관없이 다운로드 | ||||
STATUS | 다운로드 상태를 저장합니다. 사용자 장치에서만 의미 있는 정보입니다. 오류 발생 시 Local에 저장되어 있는 파일에서 다운로드 상태를 점검할 수 있습니다. 0: client에 배포 안됨 1: 다운로드 완료(임시 디렉토리) 2: 배포 완료 ※ 시스템에서 사용하는 부분이므로 "0"으로 세팅합니다. |
필수 항목은 회색음영으로 표시했습니다.
Update Info File의 예제
8~22 라인: PC 또는 NoteBook에 배포할 목록을 지정하는 부분입니다.
Microsoft Windows(32bit)용 MiPlatform에 대한 배포 정보를 가지는 2개의 Update List File의 URL을포함하고 있습니다. MiUpdater의 Parameter중 DeviceType이 CE로 설정되지 않은 모든 경우에 대해 배포할 때 사용됩니다.
24~33 라인: Pocket PC 계열의 PDA에 배포할 목록을 지정하는 부분입니다.
Microsoft Windows Mobile PocketPC(ARM)용 MiPlatform에 대한 배포 정보를 가지는 2개의 Update List File의 URL을 포함하고 있습니다. MiUpdater의 Parameter 중 DeviceType이 CE이고, 업데이트 대상이 PocketPC인 경우에 대해 배포할 때 사용됩니다.
$r_title(Update Info File) <?xml version='1.0' encoding='euc-kr'?> <root> <params> <param id='VERSION' type='string'>2009,7,1,1</param> <param id='Config' type='string'>true</param> </params> <!-- Device: 'win32 Device명: win32, Jupiter, Nexio, PocketPC --> <dataset id='win32'> <colinfo id='SOURCE' type="string" size='255'/> <colinfo id='DEVICE' type='string' size='255'/> <colinfo id='VERSION' type="string" size='255'/> <colinfo id='STATUS' type="string" size='2'/> <!--목록 리스트 --> <record> <DEVICE>win32</DEVICE> <!--Win32, Ce --> <SOURCE>/win32/MiPlatform_engine.xml</SOURCE> </record> <record> <DEVICE>win32</DEVICE> <SOURCE>/win32/MiPlatform_component.xml</SOURCE> </record> </dataset> <dataset id='PocketPC'> <colinfo id='SOURCE' type="string" size='255'/> <colinfo id='DEVICE' type='string' size='255'/> <colinfo id='VERSION' type="string" size='255'/> <colinfo id='STATUS' type="string" size='2'/> <record> <DEVICE>ce</DEVICE> <SOURCE>/ppc/MiPlatform.xml</SOURCE> </record> </dataset> </root>
Update List File
Update List File은 다운로드하여 설치할 파일의 목록과 정보를 가지고 있는 XML 파일입니다.
Update Info File에 등록해 사용하게 됩니다.
Update List File에는 배포 대상의 설치 및 가공 방법에 대한 정보를 포함하고 있습니다.
MiUpdater에서 Update List File을 이용하는 방법은 "4. 버전 관리"에서 설명합니다.
Update List File은 MiPlatform의 Dataset XML 구조를 기반으로 작성되어 있습니다.
Dataset 구조는 "6.1 XML Format"을 참조하십시오.
Update List File의 용도
MiUpdater에게 다운로드 및 설치할 파일의 정보를 제공합니다.
서버에 배치되어 있는 설치 대상 파일의 버전 정보를 저장합니다.
서버에 배치된 설치 대상 파일의 위치와 설치 방법을 저장합니다.
Param 값은 Dataset Row의 Default 값으로 사용됩니다.
Update List File의 XML Schema
Params | |||||
---|---|---|---|---|---|
Param id ="DEVICE" type = "string" | DeviceType (Win32 또는 CE 중 택일) | ||||
Param id ="SOURCE" type = "string" | Download File의 URL Update List File의 위치를 기준으로 상대위치로 지정가능합니다. | ||||
Param id ="TARGET" type = "string" | 설치 대상 파일이 설치될 위치. 일부 설치 방법에 대해서는 다른 용도로 사용됩니다. 사용자 장치의 경로를 표현 할때는 다음 Alias형태를 사용할 수 있습니다. "%Alias이름%상대경로" ex) %COMPOENT% 또는 %UserApp%Company\KeyName\ Alias의 목록은 "7.2 MiUpdater에서 사용하는 Alias 목록"을 참조하십시오. ACTION이 DOWN이면서 TARGET이 GUID의 형태로 지정되면 설치 방식을 CAB파일로 인지합니다. ACTION이 MSI라면 TARGET은 Product Code로 지정되어야 합니다. | ||||
Param id ="FILENAME" type = "string" | 다운로드할 파일 이름. 또는 다운로드할 MSI 파일 이름. | ||||
Param id ="PATCHFILENAME" type = "string" | 배포할 MSP 파일 이름. ACTION이 MSI인 경우에만 OLDVERSION과 함께 사용됩니다. | ||||
Param id ="VERSION" type = "string" | 배포할 파일의 Version 대상이 DLL 또는 Exe의 경우에 Version 정보 앞에 "System::"이 붙어 있으면 사용자 장치에 저장된 Update List File에 저장된 버전을 사용하지 않고 실제 파일의 버전 정보를 비교합니다. (설치 대상이 MSI, DLL, EXE, OCX, CAB의 경우에만 정상 동작합니다.) ACTION이 MSI인 경우에는 "[Major].[Minor].[Release]" 포맷을 사용합니다. 예) 3.30.10 DLL, EXE, OCX, CAB의 경우 4자리 형태의 버전 정보를 사용합니다. 예) 2009.7.1.1 | ||||
Param id ="UACFIX" type = "string" | Window Vista 이후 버전에서 UAC 기능과 관련해 ActiveX 등록을 HKLM에 해야할 경우에 대해 판단합니다. TRUE 또는 1 : HKLM에 등록해야 하는 경우. FALSE 또는 0 : HKLM에 등록할 필요가 없는 경우. 이외의 값 : 상관없이 다운로드 | ||||
Param id ="OLDVERSION" type = "string" | MSP로 설치 되어도 되는 버전. ACTION이 MSI이고 PATCHFILENAME이 설정된 경우에만 사용됩니다. 현재 사용자 장치에 저장된 버전이 OLDVERSION보다 이전 버전이라면 MSI를 통해 설치 되고, 이후 버전이라면 MSP를 통해 설치됩니다. | ||||
Param id ="ACTION" type = "string" | 설치 방법 지정. MSI, DOWN과 같은 형태로 입력하며 "[표 38] ACTION의 종류와 동작 방식"에서 자세히 설명합니다. | ||||
Param id ="STATUS" type = "string" | 다운로드 상태를 저장. 사용자 장치에서만 의미 있는 정보입니다. 오류 발생 시 Local에 저장되어 있는 파일에서 배포 상태를 점검 할 수 있습니다. 0: client에 배포 안됨 1: 다운로드 완료(임시 디렉토리) 2: 배포 완료 ※ 시스템에서 사용하는 부분이므로 "0"으로 세팅합니다. | ||||
Param id ="ARGUMENT" type = "string" | 설치 수행 시 부가적인 정보를 저장. ACTION이 MSI, DOWNRUN, DOWNLAUNCH일 때, 실행되는 프로그램의 인자를 지정합니다. | ||||
N회 반복 | dataset id=output | ||||
colinfo id='DEVICE' type='string' size='255' | |||||
colinfo id='SOURCE' type='string' size='255' | |||||
colinfo id='TARGET' type='string' size='255' | |||||
colinfo id='FILENAME' type='string' size='255' | |||||
colinfo id='PATCHFILENAME type='string' size='255' | |||||
colinfo id='VERSION' type='string' size='255' | |||||
colinfo id='UAC' type='string' size='255' | |||||
colinfo id='OLDVERSION' type='string' size='255' | |||||
colinfo id='ACTION' type='string' size='255' | |||||
colinfo id='STATUS' type='string' size='2' | |||||
colinfo id='ARGUMENT' type='string' size='255' | |||||
N회반복 | DEVICE | Params의 DEVICE와 동일한 용도입니다. 이 Element가 없으면 Params의 값을 사용합니다. | |||
SOURCE | Params의 SOURCE와 동일한 용도입니다. 이 Element가 없으면 Params의 값을 사용합니다. | ||||
TARGET | Params의 TARGET와 동일한 용도입니다. 이 Element가 없으면 Params의 값을 사용합니다. | ||||
VERSION | Params의 VERSION와 동일한 용도입니다. 이 Element가 없으면 Params의 값을 사용합니다. | ||||
UAC | Params의 UAC와 동일한 용도입니다. 이 Element가 없으면 Params의 값을 사용합니다. | ||||
ACTION | Params의 ACTION와 동일한 용도입니다. 이 Element가 없으면 Params의 값을 사용합니다. | ||||
FILENAME | Params의 FILENAME와 동일한 용도입니다. 이 Element가 없으면 Params의 값을 사용합니다. | ||||
PATCHFILENAME | Params의 PATCHFILENAME와 동일한 용도입니다. 이 Element가 없으면 Params의 값을 사용합니다. | ||||
OLDVERSION | Params의 OLDVERSION와 동일한 용도입니다. 이 Element가 없으면 Params의 값을 사용합니다. | ||||
ARGUMENT | Params의 ARGUMENT와 동일한 용도입니다. 이 Element가 없으면 Params의 값을 사용합니다. |
필수 항목은 회색음영으로 표시했습니다.
ACTION
ACTION 이름 | 의미 및 동작 방식 |
---|---|
MSI | MSI/MSP 형태의 설치파일을 수행하여 설치. MSI (Microsoft Installer)형태와 MSP(Microsoft Patch)의 형태로 제공된 설치 파일을 설치 합니다. TCHFILENAME을 이용해 MSI와 MSP중선택을 하게 됩니다. 사용자 장치가 Microsoft Windows인 경우에만 사용이 가능 합니다. (PDA 불가) MSP가 MSI보다 용량이 작지만, MSP 사용에는 다음과 같은 제약 조건이 있습니다.
위의 조건을 만족하는 OLDVERSION미만의 버전으로 설치되어 있거나, 설치가 되어 있지 않으면 MSI를 사용하고, MSP가 사용 가능하다면 MSP를 사용하도록 되어 있습니다. "4. 버전관리"에서 추가 적으로 설명합니다. 주의) MSI파일은 최초 설치시와 중간 Update시 msi파일의 이름이 동일하지 않은경우 설치 장애가 발생합니다. MSI사용시 각 Field의 내용은 다음과 같이 입력하게 됩니다. <ACTION> : "MSI"문자열. <FILENAME> : MSI확장자를 가지는 설치 파일의 파일명 <PATCHFILENAME> : MSP확장자를 가지는 패치 파일의 파일명. <SOURCE> : FILENAME의 설치 파일 또는 PATCHFILENAME의 패치 파일이 있는 서버의 URL, (상대경로로 입력한 경우 Update List File의 경로가 BaseURL로 사용됩니다.) <TARGET> : 설치될 MSI의 Product Code값. 설치 여부 및 버전상태를 알기 위한값입니다. <VERSION> : 서버에 위치한 MSI파일의 Product Version. 설치 여부를 결정하기 위해 사용됩니다. <OLDVERSION> : MSI와 MSP중 어떤 파일을 사용할지 결정하기 위한 최소 버전. <ARGUMENT> : msi설치시 msiexec.exe(MS사에서 제공하는 msi구동 프로그램)에 전달할 추가적인 인자 값. MSI engine의 버전에 따라 가능한 옵션을 조금씩 다르지만, 일반적으로 다음 2가지 옵션이 많이 사용됩니다. "/qb" : Install 시 발생하는 진행바와 최소한의 UI만을 표시 "/qn REBOOT=ReallySupress" : UI를 발생하지 않음. 단, 설치시점에 해당파일이 사용 중이라면 재시작이 필요합니다. |
DOWN | 파일을 다운로드 하여 TARGET의 경로로 복사. TARGET이 CAB의 CLSID이고( GUID의 형태), 대상 파일일 CAB인경우 CAB을 설치 방식을 사용합니다. (Cab 설치 기능은 Microsoft Windows 전용이며 PDA에서는 동작하지 않습니다.) CAB형태의 설치를 하게 되는경우 <VERSION>태그에 "System::"키워드가 입력되었다면 주어진 GUID를 CLSID로 가지는 COM(ActiveX)파일을 찾아 해당 파일의 파일 버전을 읽어들이게 됩니다. |
DOWNREG | 파일을 다운로드 하여 TARGET의 경로로 복사 후, COM의 SelfRegistry를 수행. COM 형태의 DLL 또는 OCX파일의 설치에 이용됩니다.(ActiveX포함) DOWNREG는 PC에서는 실패할 가능성이 있으므로 권장되지 않으며, PDA에서만 사용할 것을 권장합니다. 내부적으로 Microsoft Windows에서는 regsvr32.exe를 사용해 등록하며, PDA에서는 regsvrce.exe를 사용해 등록합니다. |
DOWNRUN | 파일을 다운로드 하여 TARGET의 경로로 복사 후 실행. 실행이 종료될 때까지 대기합니다. 최초 설치시 1회 실해되거나, 업데이트 마다 1회 실행되어야하는 설치 파일을 위한 기능입니다.(실행후 해당 파일은 보존하게 됩니다.) |
DOWNLAUNCH | 파일을 다운로드 하여 TARGET의 경로로 복사 후 실행. 실행이 종료되기를 기다리지 않으며, Update Info File에서 지정된 모든 대상이 배포 완료되는 시점에 실행됩니다. 업데이트 완료 시점에 최초 설치시 1회 실행되거나, 업데이트마다 1회 실행되어야 하는 설치 파일을 위한 기능입니다. |
CECAB | PDA용으로 제작된 CAB파일을 설치. DEVCIVE가 CE로 설정되어 있어야 정상 동작 합니다. TARGET은 설치를 수행 하기전에 임시로 설치할 경로로 설정합니다. |
DELETE | TARGET으로 지정된 파일을 제거. |
DELETEREG | TARGET으로 지정된 파일을 제거. COM 형태의 DLL 또는 OCX파일의 제거에 이용됩니다.(ActiveX포함) 단, 제거하기 전에 COM의 Self-Register기능을 이용해 등록해제 후 삭제합니다. Windows에서는 내부적으로 regsvr32.exe를 사용하며, PDA에서는 regsvrce.exe를 사용해 등록 해제합니다. 등록 해제 실패 여부와 무관하게 파일은 삭제됩니다. |
GUID의 형태 : "{"로 시작되어 "}"로 끝나며, 24자리의 16진수로 표기함.
예) {12345678-1234-1234-1234-123456789ABC}
Update List File의 예제
Windows용 예제
Windows용 MiPlatform 3.3 UNICODE버전의 Base Library와 Engine을 설치 하는 예제 입니다.
3~6 라인: DEVICE값과 msi파일이 있는 경로의 기본값을 설정합니다.
19~23 라인: MiPlatform의 Base Library의 설치정보입니다. 설치 형태는 MSI이며, 내용은 TOBESOFT에서 제공되는 MSI파일 입니다. MSP가 제공되지 않는 경우에 사용되는 형태입니다.
26~32 라인: MiPlatform의 Engine 및 Browser의 설치정보입니다. 설치 형태는 MSI이며, 내용은 TOBESOFT에서 제공되는 MSI와 MSP파일 입니다. OLD버전보다 이후의 버전이 설치 되어 있다면 MSP로 설치됩니다.
<?xml version='1.0' encoding='euc-kr'?> <root> <params> <!--디폴트값설정--> <param id='DEVICE' type='string'>WIN32</param> <param id='SOURCE' type='string'>/msi/</param> </params> <dataset id='output'> <colinfo id='DEVICE' type="string" size='255'/> <colinfo id='SOURCE' type="string" size='255'/> <colinfo id='TARGET' type="string" size='255'/> <colinfo id='FILENAME' type="string" size='255'/> <colinfo id='PATCHFILENAME' type="string" size='255' /> <colinfo id='VERSION' type="string" size='255'/> <colinfo id='OLDVERSION' type="string" size='255'/> <colinfo id='ACTION' type="string" size='255'/> <colinfo id='ARGUMENT' type="string" size='255'/> <colinfo id='STATUS' type="string" size='2'/> <record> <ACTION>MSI</ACTION> <TARGET>{3964575C-D828-4587-AED1-E538EAAFC083}</TARGET> <FILENAME>MiPlatform_InstallBase330.msi</FILENAME> <VERSION>System::3.30.1</VERSION> <ARGUMENT>/qb</ARGUMENT> </record> <record> <ACTION>MSI</ACTION> <TARGET>{65673658-248C-49AC-9EC4-25682074A312}</TARGET> <FILENAME>MiPlatform_InstallEngine330U.msi</FILENAME> <PATCHFILENAME>MiPlatform_InstallEngine330U.msp</PATCHFILENAME> <VERSION>System::3.30.20</VERSION> <OLDVERSION>3.30.10</OLDVERSION> <ARGUMENT>/qb</ARGUMENT> </record> </dataset> </root>
PocketPC용 예제
cketPC용 예제이나, PDA가 모두 유사한 형태로 사용됩니다.
cketPC에서는 Cab형태의 설치보다 파일 복사 형태의 설치가 유용합니다.
4~6 라인: ACTION, DEVICE값과 대상 파일이 있는 경로의 기본값을 설정합니다
20~22 라인: Engine파일의 한가지인 CyBaseLib330U.dll을 배포 합니다.(이 예제에는 CyBaseLib330U.dll만이 표기 되어 있으나 실제 배포시에는 더 많은 파일일 배포 됩니다.)
25~38 라인: MiPlatformX를 설치하고 등록합니다.
<?xml version='1.0' encoding='euc-kr'?> <root> <params> <!--디폴트값설정--> <param id='ACTION' type='string'>DOWN</param> <param id='DEVICE' type='string'>CE</param> <param id='SOURCE' type='string'>/engine/</param> </params> <dataset id='output'> <colinfo id='DEVICE' type="string" size='255'/> <colinfo id='SOURCE' type="string" size='255'/> <colinfo id='TARGET' type="string" size='255'/> <colinfo id='FILENAME' type="string" size='255'/> <colinfo id='PATCHFILENAME' type="string" size='255' /> <colinfo id='VERSION' type="string" size='255'/> <colinfo id='OLDVERSION' type="string" size='255'/> <colinfo id='ACTION' type="string" size='255'/> <colinfo id='ARGUMENT' type="string" size='255'/> <colinfo id='STATUS' type="string" size='2'/> <record> <TARGET>%WINDOW%</TARGET> <FILENAME>CyBaseLib330U.dll</FILENAME> <VERSION>System::2009,4,1,1</VERSION> </record> <record> <ACTION>DOWNREG</ACTION> <TARGET>%MIPLATFORM%</TARGET> <FILENAME>MiPlatformX330.ocx</FILENAME> <VERSION>System::2009,4,1,1</VERSION> </record> </dataset> </root>
StartXML File
StartXML File은 MiPlatform 서비스의 설정 정보와 기본 정보가 포함된 XML 파일입니다.
MiPatform(MiPlatform의 전용브라우저)은 서비스 정보를 얻기 위하여 StartXML File을 가장 먼저 다운로드 합니다. 즉, MiUpdater가 Update Info File을 제일 처음 다운로드하는 것처럼 MiPlatform은 StartXML File을 가장 먼저 다운로드해야 합니다. StartXML File은 다운로드된 후 Local에 Cache되며, 서버의 StartXML 파일이 변경되면 다시 다운로드됩니다.
MiPlatform은 "5. 주요 모듈 설명"에서 자세히 설명합니다.
StartXML File의 용도
StartXML의 버전을 구분하기 위해 버전 정보를 입력합니다.
서비스 전체에서 사용하는 정보들(Global변수, Script, Dataset, Service Object, Data Object, Image Resource)을 저장합니다.
화면에서 사용하는 메뉴를 구성합니다.
통신 시에 또는 DB 사용 시 필요한 Protocol을 정의합니다.
다국어를 지원하기 위한 Domain정보를 설정합니다.
서비스 실행 화면을 디자인할 때 필요한 Style 및 User Color를 설정합니다.
서비스 실행 Group(Application Group, Data Group)을 구성할 수 있으며, Group에 대해서 Prefix 값을 정의합니다. Prefix는 "StartXML구성"에서 설명합니다.
StartXML File의 구성
$r_title(Element Tree) <?xml version="1.0" encoding="euc-kr"?> <ConnectGroup> <!-- Root Element --> <Resource/> <Variables> <Var/> <!-- 1~n --> </Variables> <Usercolor/> <GlobalStyle> <Style/> <!-- 1~n --> </GlobalStyle> <Datasets> <Dataset> <!-- 1~n --> <Contents> <Column/> <!-- 1~n --> <ColInfo/> <!-- 1~n --> <Record/> <!-- 1~n --> </Contents> </Dataset> </Datasets> <DataObjects> <DataObject> <!-- 1~n --> <Contents/> </DataObject> </DataObjects> <ServiceObjects> <ServiceObject/> <!-- 1~n --> </ServiceObjects> <Container> <Component/> </Container> <ActiveX> <Component/> <!-- 1~n --> </ActiveX> <Protocols> <Protocol/> <!-- 1~n --> </Protocols> <ExtApis> <ExtApi/> <!-- 1~n --> </ExtApis> <MDIInfo> <Forms> <Form/> <!-- 1~n --> </Forms> <Shortcuts> <Shortcut/> <!-- 1~n --> <Variables> <Var/> <!-- 1~n --> </Variables> </Shortcuts> </MDIInfo> <DockBars> <DockBar/> <!-- 1~n --> </DockBars> <Domaininfo/> <AppGroups> <DataGroup/> <!-- 1~n --> <AppGroup> <!-- 1~n --> <Script/> <Resource/> <Variables> <Var/> <!-- 1~n --> </Variables> </AppGroup> </AppGroups> <Menu> <Item> <!-- 1~n --> <Item/> <!-- 1~n --> </Item> </Menu> <Script> <![CDATA[]]> </Script> </ConnectGroup>
Prolog Element
Prolog는 Root Element가 나오기 전에 선언되는 Header 정보입니다. Prolog는 XML선언문과 DTD에 관한 정보로 나뉘는데 StartXML File에서는 XML 선언문만 사용합니다.
Attribute | 설명 |
---|---|
version | W3C에서 발표된 XML Version |
encoding | CharSet |
<?xml version="1.0" encoding="euc-kr"?> |
Root Element
Root Element는 전역변수와 컴포넌트 통신 Protocol을 정의하고 기본 메뉴를 설정합니다.
태그는 <ConnectGroup>로 시작하여 </ConnectGroup>으로 종료합니다.
Attribute | 입력값 / 형태 설명 예시 | 필수여부 |
---|---|---|
id | String / default값은 "global" | X |
Startxml을 구분할 수 있는 고유 id 값 | ||
Id="abc" | ||
AboutDlgType | UserDefineDefault(Default) | X |
MiPlatform의 AboutBox Type을 결정하는 인자. 값은 Userdefine과 Default로 구분된다. 값을 입력하지 않은 경우 Default로 적용됩니다. Userdefine의 경우 AboutBox의 디자인은 사용자가 하게 된다. AboutString의 데이터를 이용하여 AboutBox를 구성하게 됩니다. 이 경우 기존의 AboutString의 입력값과는 다른 형태로 입력값을 지원합니다. 사용법은 AboutString 참조. 반드시 필요한 인자값은 아니며 없을 경우 Default AboutBox가 실행됩니다.
| ||
AboutDlgType="UserDefine" or AboutDlgType="Default" | ||
AboutImage | imageid | x 좌표 | y좌표 | X |
MiPlatform의 AboutBox에서 보여주는 회사 이미지
| ||
AboutImage="IMG_LEVEL_3|10|50" | ||
AboutScroll | True / False (Default Value) | X |
MiPlatform의 AboutBox에서 문자열의 스크롤 여부 (Win32에서만 사용 가능) | ||
AboutScroll="false" | ||
AboutString | AboutDlgType이 Default 이거나 AboutDlgType이 없는 경우 - 스트링|URL|x좌표 Default Value - \n\nMiPlatform Ver 1.0\n Copyright (c) 2003, Tobesoft AboutDlgType이 UserDefine인 경우 - URL|x좌표|y좌표Default값은 없다. 반드시 URL값은 있어야 한다. | X |
AboutDlgType이 Default 이거나 AboutDlgType이 없는 경우 MiPlatform의 AboutBox에서 보여주는 문자로 보통 회사명 URL을 입력하는 경우 AboutBox에서 문자를 클릭하여 IE에서 해당 URL을 띄울 수 있습니다. AboutDlgType이 UserDefine인 경우 사용자가 디자인한 xml파일을 띄워줍니다.
| ||
// AboutDlgType이 Default 이거나 AboutDlgType이 없는 경우 AboutString="Miplatform||50 Copyright (C) 2003, TobeSoft WebSite:http://www.tobesoft.com|http://www.tobesoft.com|30 mailto:comnik@tobesoft.com|mailto:comnik@tobesoft.com|30" // AboutDlgType이 UserDefine인 경우 AboutString="Part::test.xml|10|10" | ||
CodePage | Default Value - Prolog에는 encoding 값 | X |
전체에 사용되는 default CodePage | ||
CodePage="EUC-KR" | ||
Language | Language의 Locale identifier | X |
전체에 사용되는 default Language (※V3.3에서는 아랍어권 언어로 선택하면 타이틀, 시스템 메뉴, 창 메뉴 등의 위치가 오른쪽 중심으로 변경되는 기능이 추가되었습니다.) | ||
Language="1042" | ||
Font | "FontName,FontSize, Bold, Italic, StrikeOut, Underline" Default Value - Thahoma, 9 | X |
Default Font정의 | ||
Font="굴림,12,Bold" | ||
Initurl | AppGroup의 prefix::화면이름 | O |
초기화면 이름 SDI에서 SessionURL이 있는 경우 SessionURL이 먼저 Load되고 Session Form이 Close되면 InitURL이 활성화됩니다. MDI에서는 의미 없는 값입니다. | ||
initurl="sales::Login" | ||
ReSize | True / False (Default Value) | X |
MiPlatform resize 가능 여부 | ||
ReSize= "true" | ||
Title | "" | X |
초기 화면이 Load 되기 전 화면Title MDI에서 MainTitle로 사용됩니다. ChildWindow의 Title과 통합되어 MainTitle로 사용됩니다. | ||
title="test" | ||
Version | "" | X |
Version 정보 | ||
version="1.0" | ||
XMLFormat | True (Default Value) / False | X |
통신 시 Xml Format 사용 여부 True인 경우는 XML 통신 False인 경우는 Binary통신 | ||
XMLFormat="false" | ||
Titlebar | True (Default Value) / False | X |
MiPlatForm에서 타이틀 바 표시 여부 | ||
Titlebar= "True" | ||
Statusbar | True (Default Value) / False | X |
MiPlatForm에서 상태 바 표시 여부 | ||
Statusbar= "True" | ||
TraceMode | New / Append / None(Default Value) | X |
Trace 내용을 File로 Write할 때의 방식 정의 개발자 버전은 PID에서 보여줍니다. 사용자 버전은 File로 Write됩니다. TraceMode가 New인 경우는 기존 내용을 무시하고 새로 TraceFile로 작성됩니다. TraceMode가 Append인 경우에는 기존 TraceFile에 내용뒤에 추가됩니다. TraceMode가 None인 경우에는 Tracefile을 삭제 합니다. File 저장 경로는 %UserApp%\ TOBESOFT\MiPlatform330(U)\TraceLog_MiPlatform.txt 입니다. %UserApp%는 Alias에 대한 항목은 "7.2 MiUpdater에서 사용하는 Alias 목록"를 참고하십시오. | ||
TraceMode="none" | ||
UseUpdateMenu | True (Default Value) / False | X |
PDA의 Updater Menu 사용 여부 | ||
UseUpdateMenu="True" | ||
sessionURL | AppGroup의 prefix::화면 이름 | X |
Session 연결을 위한 Form Url 로그인 Form으로 사용됩니다. Session 처리 방법을 임의로 선택할 수 있습니다. Session Form에서 Session 여부를 설정합니다. Component reference의 Form Api의 함수(initsession, closesession 등이 있음) | ||
sessionURL="Tutorial::Session.xml" | ||
sessionopenstyle | Title: Titlebar 생성 여부 Status: Statusbar 생성 여부 Closeflag: 닫기 버튼 생성 여부 Resize: Form Resize 가능 여부 Scroll: Form Resize 시 Scroll 생성 여부 Titlebar: Titlebar 생성 여부 Statusbar: Statusbar 생성 여부 Width: 초기 화면 크기 Height: 초기 화면 크기 | X |
MDI에서 Session 연결을 위한 Form의 Open 될 때 Style Argument, OpenStyle 형식과 유사합니다. | ||
sessionopenstyle="titlebar=false Closeflag=false " | ||
style | "" | X |
Default Style ID GlobalStyle에서 지정된 Style 중 하나를 선택할 수 있습니다. | ||
style="" | ||
hideframe | True / False(Default Value) | X |
MDI에서 Session Form이 실행될 때 Main창 Open 여부 단, PlatformGlobal의 AppStatus 속성을 지정하는 경우 Main창이 Open됩니다. | ||
hideframe="true" | ||
bkwidth | "" Max : 현재 정의된 align을 기준으로 Maximize | X |
MDI Main 창의 BackGround에 표시될 이미지의 Width | ||
bkwidth="" | ||
bkheight | "" Max : 현재 정의된 align을 기준으로 Maximize | X |
MDI Main 창의 BackGround에 표시될 이미지의 Height | ||
bkheight="" | ||
bkvalign | "" Top : MDI Main 창 상단 Middle : MDI Main 창 중앙 Bottom : MDI Main 창 하단 | X |
MDI Main 창의 BackGround에 표시될 이미지의 세로 위치 | ||
bkvalign="middle" | ||
bkalign | "" Left : MDI Main 창 좌측 Center : MDI Main 창 중앙 Right : MDI Main 창 우측 | X |
MDI Main 창의 BackGround에 표시될 이미지의 가로 위치 | ||
bkalign="left" | ||
Bkimage | "" | X |
MDI Main 창의 BackGround에 표시될 이미지 Resource에 지정된 Image에서 선택 | ||
bkimage="" | ||
BkColor | X | |
MDI Main 창의 BackGround 색 | ||
BkColor="yellow" | ||
Fixedmenu | True / False(Default Value) | X |
Menu 고정 여부 | ||
FixedMenu="true" | ||
border | True(Default Value) / False | X |
MDI에서 MDIClient영역의 Border | ||
Border="false" | ||
OkButton | True / False(Default Value) | X |
PocketPC계열의 PDA에서 Main Browser의 SmartMinimize버튼 대신 Ok버튼을 사용할지여부. | ||
OkButton="true" | ||
UseDefaultMenu | True(Default Value) / False | X |
MiPlatform Browser의 기본 메뉴을 사용할 지 여부. Windows에서는 기본메뉴로 Exit가 있습니다. PDA에서는 기본메뉴로 Exit와 About메뉴를 포함합니다. | ||
UseDefaultMenu="false" | ||
ShowSubTitleText | True(DefaultValue) / False | X |
MDI의 ChildFrame이 Maximize된경우 MainTitle에 MdiChild의 SubTitle을 더해 보여줄지여부. | ||
ShowSubTitleText="false" | ||
ShowSubTitleButton | True(Defualt Value) / False | X |
메뉴가 없을때 childframe이 max가 되면 mainframe에 childframe을 제어하는 restore/min/close버튼들을 보일지 여부 | ||
ShowSubTitleButton="false" | ||
EnforcedIgnoreInput | True / False(Default) | X |
통신중에 사용자 입력을 금지할 수 있는 여부 true로 설정되면 SetCapture와 WaitCursor가 동작중일때, 마우스 및 키보드의 입력을 받아 들이지 않게 됩니다. 단, ESC키는 통신 중단을 의미하므로 받아 들여 통신 중단 여부를 처리합니다. 통신시 WaitCursor를 사용하는 경우에도 영향을 주게 됩니다. | ||
EnforcedIgnoreInput = "true" |
Event
Platform Global(StartXML)과 관련된 Event입니다. Event는 <ConnectGroup> 태그 상에 기술되며 일반 컴포넌트의 Event와 유사하게 처리됩니다. Script는 StartXML에 기술됩니다.
Event | Argument | 예시 | 필수 여부 |
---|---|---|---|
설명 | |||
OnInit | obj | OnInit="InitGlobal" | X |
obj:Platform Global Object StartXML을 다운로드한 후 Loading이 완료되면 발생됩니다. | |||
OnExit | obj | OnExit="ExitGlobal" | X |
obj:Platform Global Object 전체 프로그램을 종료하기 전에 발생됩니다. 하지만 이미 엔진쪽은 내려간 상태이므로 정상적인 작업을 할 수 없습니다. 단지 Browser를 닫지 않은 상태로만 유지할 수 있으므로 엔진쪽을 종료시키지 않으려면 OnBeforeExit Event나 Form의 OnUnLoadCompleted Event에서 false를 리턴합니다. 리턴 값에 따라 Exit 여부가 결정됩니다. 리턴 값을 True로 설정하면 Exit 됩니다. 리턴 값을 False로 설정하면 Exit 되지 않습니다. | |||
OnLoadCompleted | obj, strURL | OnLoadCompleted="GlobalLoadCompleted" | X |
obj:Platform Global Object strURL:Load가 완료된 URL StartXML을 다운로드한 후 Load가 완료되면 발생됩니다. | |||
OnError | obj nErrorCode strErrorMsg | OnError="ErrorGlobal" | X |
obj:Platform Global Object nErrorCode:에러 코드 strErrorMsg:에러 메시지 실행 중에 에러가 발생한 경우에 발생됩니다. | |||
OnBeforeExit | obj | OnBeforeExit="Global_BeforeExit" | X |
obj:Platform Global Object OnExit Event가 발생되기 전에 발생됩니다. 리턴 값에 따라 OnExit Event를 발생하지 여부가 결정됩니다. 리턴 값을 True로 설정하면 OnExit Event가 발생됩니다. 리턴 값을 False로 설정하면 OnExit Event가 발생되지 않습니다. 종료를 무시하고 싶은 경우에는 OnBeforeExit Event에서 False를 리턴합니다. | |||
onCopydata | obj strData nLen | OnCopyData="Globla_CopyData" | X |
obj:Platform Global Object strData:받은 데이터 nLen:받은 데이터의 사이즈 다른 어플리케이션으로부터 WM_COPYDATA 메시지를 받을 경우에 발생합니다. Global에 OnCopyData Event를 처리하는 함수가 있을 경우에 Global의 처리 함수를 수행합니다. Global에 OnCopyData Event를 처리하는 함수가 없을 경우에는 현재 활성돠 되어 있는 Form에서 처리 함수를 수행합니다. Global과 Form에 모두 처리함수가 있을 경우에는 Global의 함수만 처리됩니다. Form의 OnCopyData Event와 유사하므로 자세한 사항은 Component reference 매뉴얼을 참조합니다. | |||
onActivate | obj | onActivate ="Globla_Activate" | X |
obj:Platform Global Object MainFrame이 Active될때 발생합니다. | |||
onDeactivate | obj | onDeactivate ="Global_DeActivate" | X |
obj:Platform Global Object MainFrame이 DeActive될때 발생합니다 | |||
OnSize | obj, strType, nCx, nCy | OnSize="Global_Size" | X |
obj:Platform Global Object strType: Minimize/Maximize/Restore nCx:변경된 width 사이즈 nCy:변경된 Height 사이즈 MainFrame의 크기가 변경될 때 발생합니다. | |||
OnDetectLaunchingBrowser | obj | OnDetectLaunchingBrowser="Global_ DetectLaunchingBrowser" | X |
obj:Platform Global Object Browser(배포모듈)가 OnlyOne 속성이 True일 때 두번째 이상 Browser 생성 요청시 최초 생성되어 있는 Browser를 인지하여 Browser를 활성화한 후 Event를 발생시킵니다. | |||
OnKeyDown | obj, objSenderObj nChar, bShift, bControl, bAlt, nLLParam, nHLParam | OnKeyDown="Global_ OnKeyDown" | X |
obj:Platform Global Object ojbSenderObj:최초 key를 입력받은 object nchar:입력받은 key값, bShift: shiftkey가 눌렸는지 여부 bControl: control key가 눌렸는지 여부 bAlt:alt key가 눌렸는지 여부 nLLParam:windwos에서 key발생시 Low data nHLParam:windows에서 key발생시 High data MDI환경에서 ChildForm이 없을 때 MainFrame의 Key가 눌렸을 때 발생하는 Event입니다. Form의 OnKeyDown Event와 동일한 값이므로 자세한 사항은 Component reference 매뉴얼을 참조합니다. | |||
OnCommunication | obj, bStatus | OnCommunication ="Global_OnCommunication" | X |
obj:Platform Global Object bStatus: 통신 시작 되었을 때는 true, 끝났을때는 false 통신의 시작과 끝이되었을 때 Event가 발생합니다. 통신시 dialog를 띄우거나 할 때 유용합니다. |
Resource
모든 Application Group에서 사용 가능한 Resource를 선언하는 부분입니다. Resource는 MiPlatform에서 사용 가능한 이미지들의 집합입니다. 선언된 Resource 안의 이미지는 서비스를 하는 모든 화면에서 사용할 수 있습니다. 또한 모든 Device에서 공통으로 사용하는 Resource는 따로 정의할 수 있습니다. Server StartXML의 Resource Version이 Local에 저장되어 있는 Resource Version 보다 최신이면 파일을 Local에 다운로드 합니다. 생략할 수 있습니다
Attribute | 입력값/형태 | 예시 | 필수 여부 |
---|---|---|---|
설명 | |||
Url | "" | url="http://www.abc.co.kr/ global.res" | O |
모든 단말기에서 쓰이는 Resource 파일 이름 StartXML을 기준으로 한 상대경로도 가능합니다. | |||
Version | "" | version="1000" | O |
Version 정보 | |||
Ext | "" | Ext="res" | X |
확장자 이름 |
Variables
모든 화면에서 사용되는 전역 변수와 엔진 변수를 선언합니다. 생략 가능합니다.
엔진 변수는 통신 시 서버쪽으로 보내는 변수를 말합니다.
Var
Attribute | 입력값/형태 | 예시 | 필수 여부 |
---|---|---|---|
설명 | |||
Id | "" | id="name" | O |
변수 이름 | |||
Value | "" | Value="" | X |
변수 초기값 | |||
Type | Global(Default Value) Share | type="global" | X |
변수 Type - global : 전역 변수 모든 화면에서 공통으로 사용되는 변수 - share : 엔진 변수 통신 시 Cookie에 담아 서버쪽으로 보내는 변수로 Local과 서버에서 공유할 수 있습니다. |
Usercolor
화면을 디자인할 때 사용자가 사용할 Color를 선언합니다. 디자인을 변경할 때 각 화면의 Color값을 수정하지 않고 UserColor의 값을 변경하여 색을 수정합니다. 생략할 수 있습니다.
Attribute | 입력값/형태 | 예시 | 필수 여부 |
---|---|---|---|
설명 | |||
UserN | "" | User0="red" | X |
Color 선언. User0부터 User63까지 선언할 수 있습니다. Color Property 지정 시 red, blue값 대신 user0, user1로 값을 설정할 수 있습니다. |
GlobalStyle
Style은 Font, Color의 모든 속성을 정의한 것입니다.
GlobalStyle은 전체 화면에서 사용할 수 있는 Style을 정의한 것입니다. 툴에서 Style은 Component별로 설정할 수 있습니다.
Component의 Style을 기술합니다. 생략할 수 있습니다.
Style
Attribute | 입력값/형태 | 설명 | 예시 | 필수 여부 |
---|---|---|---|---|
ID | "" | Style 이름 | id="name" | O |
Font | "" | Font | font="tahoma,9" | X |
FixedFont | "" | 글자 길이가 같게 표시되는 Component Font | fixedfont="tahoma,9" | X |
TextColor | "" | Font Color | textcolor="BTNTEXT" | X |
WindowColor | "" | Window Color | windowcolor="white" | X |
ButtonColor | "" | Button Color | buttoncolor="BTNFACE" | X |
FormColor | "" | Form Color | formcolor="white" | X |
EditColor | "" | Edit Color | editcolor="white" | X |
DisableColor | "" | Component가 Disable 된 경우 Color | disablecolor="GRAYTEXT" | X |
DisableBKColor | "" | Component가 Disable 된 경우 Background Color | disablebkcolor="BTNFACE" | X |
BorderColor | "" | Component의 윤곽선 Color | bordercolor="black" | X |
DKShadowColor | "" | Component의 Border가 Flat이 아닌 경우 Dark Shadow Color | DKSHADOWcolor="3DDKSHADOW" | X |
Hilight3dColor | "" | 선택된 Grid, ListBox, ComboBox 등의 3D Color | HILIGHT3dcolor="BTNHIGHLIGHT" | X |
HilightTextColor | "" | 선택된 Grid, ListBox, ComboBox 등의 Text Color | HILIGHTTextcolor="HIGHLIGHTTEXT" | X |
HilightColor | "" | 선택된 Grid, ListBox, ComboBox 등의 Color | HILIGHTcolor="HIGHLIGHT" | X |
Shadowcolor | "" | Component의 Border가 Flat이 아닌 경우 Shadow Color | Shadowcolor="BTNSHADOW" | X |
Face3dColor | "" | Component의 Border가 Flat이 아닌 경우 표면 Color | face3dcolor="BTNFACE" | X |
Light3dcolor | "" | Component의 Border가 Flat이 아닌 경우 밝게 표시되는 Color | Light3dcolor="3DLIGHT" | X |
Datasets
Global로 사용하는 Dataset을 기술합니다. 생략할 수 있습니다. 간단하게만 서술하고 자세한 부분은Component 매뉴얼 중 Dataset 부분을 참고하십시오.
Dataset
Global로 사용하는 Dataset을 기술합니다.
Attribute | 입력값/형태 | 설명 | 예시 | 필수 여부 |
---|---|---|---|---|
Id | "" | Dataset의 ID | Id="g_test" | O |
GroupKey | "" | Dataset을 Groupping할 Column 이름 | GroupKey="column1" | X |
PivotKey | "" | Dataset을 Pivoting할 Column 이름 | PivotKey="column1" | X |
Auto | True(Default Value)False | Dataset에 ServiceID가 있는 경우 MiPlatform이 Loading될 때 Dataset의 자동 로드 여부 | Auto="false" | X |
ServiceID | "" | Dataset과 연결된 Business Service DataGroup의 "Prefix::경로"으로 입력합니다. | ServiceID="TestDB::Test.xml" | X |
ServiceDSetID | "" | ServiceID 호출 결과로 받을 Dataset 이름 | ServiceDSetID="output" | X |
UpdateControl | True(Default Value)False | Datset의 레코드별 상태 자동 제어 여부 True이면 자동으로 관리되며, 변경된 사항은 원본 레코드에 저장됩니다. | UpdateControl = "false" | X |
Argument | "" | ServiceID를 실행할 때 Argument값 "변수명=값 변수명=값"형식으로 입력합니다. | Argument="a=b c=d" | X |
Event | "" | Dataset과 연결된 Event | OnColumnChanged="g_test_OnColumnChanged" | X |
DatasetType | Dataset (Default) WebService Pivot Filter Group | Dataset의 종류 Dataset 형태가 아닌 다른경우에는 모두 DataObject가 지정되어야 합니다. | DatasetType = "dataset" | X |
DataObject | "DatasetID" "DataObject" | DatasetType가 WebService 일때에는 DataObjectID 를 그외 DatasetType가 Dataset이 아닌 Filter/Pivot/Group 일때에는 DatasetID가 지정됩니다. | DataObject = "datasetid" DataObject = "dataobjectid" | X |
contents
Dataset의 Column, Const Column, Record를 기술합니다.
Attribute | 입력값/형태 | 설명 | 예시 | 필수 여부 |
---|---|---|---|---|
Id | "" | Dataset의 ID | Id=" g_test" | O |
column
Const(상수) Column을 기술합니다.
Attribute | 입력값/형태 | 설명 | 예시 | 필수 여부 |
---|---|---|---|---|
Id | "" | Column(Const Column)의 이름 | id="item_cd" | O |
Type | "" | Column(Const Column)의 Type | type="STRING" | O |
colinfo
Dataset을 구성하고 있는 Column 정보를 기술입니다.
Attribute | 입력값/형태 | 설명 | 예시 | 필수 여부 |
---|---|---|---|---|
Id | "" | Column의 이름 | id="item_cd" | O |
Size | "" | Column의 Size | size="50" | O |
Type | "" | Column의 Type | type="STRING" | O |
Summ | "" | Count/min/avg/max/sumtext속성이 있습니다. 이 속성은 논리적인 row에 의해 column이 가상으로 생성되고, 설정에 따른 값이 저장됩니다. (Count는 GroupKey 속성과 연동됩니다.) | Summ="Count" | X |
BindCol | "" | GroupDataset의 경우 해당 컬럼이 가져야할 원본 Dataset의 컬럼ID를 지정합니다. | BindCol ="ColumnID" | X |
Record
Dataset에 포함된 Data의 내용입니다. 여러 개의 레코드를 기술할 수 있습니다.
Record Sub Element
Colinfo에 정의된 Column ID로 기술됩니다.
DataObjects
V3.3에서는 PID에서 Web Service부분을 제거했으므로 이 부분도 제거 되었습니다.
ServiceObjects
V3.3에서는 PID에서 Web Service부분을 제거했으므로 이 부분도 제거 되었습니다.
Container
Sub Element에 기술되는 Component의 공통 속성을 기술합니다.
Sub Element에 기술되는 Component의 Version이 없는 경우 Default Version 값을 대신 사용합니다.
Attribute | 입력값/형태 | 설명 | 예시 | 필수 여부 |
---|---|---|---|---|
url | "" | 다운로드할 Component 경로 지정된 경로에 파일이 존재하지 않는 경우, 다운로드하여 저장할 경로로 사용됩니다. | url="http://www.aaa.com/CompLoc" | X |
Version | "" | Version 정보 | Version="1000" | O |
Component
화면에서 사용할 Component List를 기술합니다.
Attribute | 입력값/형태 | 설명 | 예시 | 필수 여부 |
---|---|---|---|---|
Id | "" | 각 XML 파일에서 사용될 Component ID | id="Edit" | O |
Name | "" | Component DLL 파일 이름 Component DLL 내부의 Component 이름 | name="cyEdit" | O |
Moudle | "" | Component DLL 파일 이름 | Module="CyComCtl330" | X |
Style | "" | Component ID 별 Default Style | Stlye="Stlye0" | X |
Version | "" Default Value - Container 에 있는 version 값 | Version 정보 | Version="1000" | X |
새로운 Component를 개발한 경우, 추가 및 사용 방법
1. 새로 만든 Component 파일을 기존 Component가 설치된 경로에 추가합니다.
2. StartXML에 Component Tag를 추가하여 새로 만든 Component를 등록합니다.
예) User Component가 MyNewComp.dll인 경우
> Copy MyNewComp.dll Component가 설치된 경로
StartXML에는 다음과 같이 등록합니다.
<component id=" NewComp" name="MyNewComp" version="1000"/>
ActiveX
MiPlatform에서 ActiveX를 사용할 때 기술합니다.
MiPlatform에서 ActiveX를 사용하는 방법은 StartXML에 ActiveX만 등록하여 사용하는 방법과 ActiveX를 ComponentDLL로 랩핑해서 사용하는 방법이 있습니다.
보통 대부분의 경우는 StartXML에 등록해서 사용합니다. 하지만 LicenseKey와 관련된 프로그래밍을 하거나 Binding과 관련된 추가 코딩이 필요한 경우에 ActiveX를 Component DLL로 랩핑해서 사용합니다.
Sub Element에 기술되는 ActiveX의 공통 속성을 기술합니다.
Sub Element에 기술되는 ActiveX의 Version이 없는 경우 Default Version값을 대신 사용합니다
Attribute | 입력값/형태 | 설명 | 예시 | 필수 여부 |
---|---|---|---|---|
url | "" | Version이 바뀐 경우 다운로드할 ActiveX의 경로 | url="http://www.aaa.com/CompLoc" | X |
Version | "" | Version 정보 | Version="1000" | X |
Component
전체 화면에서 사용하는 ActivX Component를 기술합니다.
Attribute | 입력값/형태 | 설명 | 예시 | 필수 여부 |
---|---|---|---|---|
Id | "" | 각 XML 파일에서 사용될 Component ID | Id="AxChartFx" | O |
Progid | "" | ActiveX Program ID. ActiveX CLSID | Progid="ChartFX.Chart" Progid="{…}" | O |
Nowindow | "" | Component 윈도우 부재 여부 | Nowindow="true" | X |
Version | "" Default Value - ActiveX에 있는 version 값 | Version 정보 | Version="1000" | X |
Image | "" | 툴에서 제공되는 컴포넌트 이미지 번호 | Image="28" | O |
Title | "" | 툴에서 표시될 Component Title | Title="ActiveX1" | X |
UsePersistdata | "" | PersistData를 사용 여부 | UsePersistdata="true" | X |
LicenseKey | "" | 사용자 버전 배포용 해당 ActiveX LicenseKey | LicenseKey="" | X |
Protocols
통신 또는 DB 사용 시 사용되는 Protocol의 정보를 기술합니다.
Sub Element에 기술되는 Protocol의 공통 속성을 기술합니다
Sub Element에 기술되는 Protocol의 Version이 없는 경우 Default Version값을 대신 사용합니다
Attribute | 입력값/형태 | 설명 | 예시 | 필수 여부 |
---|---|---|---|---|
Version | "" | Version 정보 | version="1000" | O |
url | "" | Down받을 Protocol이 있는 위치 | url="http://www.aaa.com/ProtoLoc/" | X |
Protocol
사용하는 Protocol List를 기술합니다.
Protocol Adaptor는 기본적으로 HttpAdp, DB와 관련된 LiteDbAdp를 제공합니다.
Protocol마다 Attribute 리스트는 따로 정의됩니다. 기본 Attribute는 다음과 같습니다.
AppGroups Sub Tag 중 경로에 해당되는 Attribute값의 Prefix로 Protocol id를 사용합니다.
Attribute | 입력값/형태 | 설명 | 예시 | 필수 여부 |
---|---|---|---|---|
Id | "" | 각 XML 파일에서 사용된 Protocol ID | Id="http" | O |
Name | "" | Protocol DLL 파일 이름 | name="CyHttpAdp" | O |
Version | "" Default Value - Protocols에 있는 Version 값 | Version 정보 | version="1000" | X |
새로운 Adaptor를 개발한 경우, 추가 및 사용 방법
1. 기존 Component가 설치된 경로에 새로 만든 Component 파일을 추가합니다.
2. StartXML에 Component Tag를 추가하여 새로 만든 Component를 등록합니다
예) User Component가 MyNewAdp.dll인 경우
> Copy MyNewAdp.dll Component가 설치된 경로
StartXML에는 다음과 같이 등록합니다.
<protocol id="NewAdp" name="MyNewAdp" version="1000"/>
HttpAdp
HttpAdp는 통신을 담당하는 Adaptor입니다.
HttpAdp에서 제공되는 Attribute는 다음과 같습니다.
HttpAdp의 자세한 내용은 Component Reference 메뉴를 참고하십시오.
Attribute | 입력값/ 형태 | 설명 | 예시 | 필수 여부 |
---|---|---|---|---|
Id | "" | 각 XML 파일에서 사용된 Protocol ID | id="file" id="http" | O |
Name | "" | Protocol DLL 파일 이름 | name="CyHttpAdp" name="CyHttpAdp" | O |
Version | "" | Version 정보 | Version="1000" | X |
Compress | True False (Default Value) | 통신 시 압축 여부 | Compress="false" Compress="True" | X |
XMLFormat | True (Default Value) False | True인 경우 XML 통신 False인 경우는 Binary 통신 | XMLFormat="True" XMLFormat="False" | X |
GWServer | IP | GateWay Server IP | GWServer="10.1.54.1" | X |
GWPort | Port | GateWay Server Port | GWPort ="6000" | X |
CodePage | CodePage | CodePage 이름 Null인 경우 <ConnectGroup>의 CodePage를 참고합니다. | CodePage="EUC-KR" | X |
ScriptPath | 경로 | HttpAdp가 Local에 있는 파일을 접근할 때 사용되는 Script 경로 | scriptPath="script:GetReg('ScriptPath','c:\\Script\\')" | X |
UseCache | True (Default Value) False | Cache 여부 | usecache="true" usecache="false" | X |
Sync | True False(Default Value) | 통신 Sync 방식 Sync인 경우 데이터 처리가 완료될 때까지 다음 작업을 대기합니다. Async인 경우 데이터 처리가 완료될 때까지 기다리지 않고 다음 작업을 진행합니다. Sync를 선택한 경우 통신 응답을 받는 동안 멈춤 현상이 발생할 수 있습니다. | Sync="false" | X |
UseWaitCursor | True(Default Value) False | WaitCursor 사용 여부 | UseWaitCursor="true" | X |
Retry | "" Default Value -"2" | 통신 시 Retry 횟수 | Retry="3" | X |
TimeOut | "" Default Value -"30" | 통신 시 TimeOut(Second) | TimeOut="20" | X |
AutoCookie | True (Default Value) False | 통신 시 Shared Global 변수를 Cookie 변수로 전달 여부 | AutoCookie="false" | X |
SendHttpStr | 통신 시 보낸 Http Header String (Simulatform에서는 항상 LogView에 표현되며, MiPlatform에서는 TraceMode가 True인 경우에만 Log 파일에 표현됩니다.) | ReadOnly | X | |
RecvHttpStr | 통신 시 받은 Http Header String (Simulatform에서는 항상 LogView에 표현되며, MiPlatform에서는 TraceMode가 True인 경우에만 Log 파일에 표현됩니다.) | ReadOnly | X | |
SendContents | 통신 시 보낸 Contents (Simulatform에서는 항상 LogView에 표현되며, MiPlatform에서는 TraceMode가 True인 경우에만 Log 파일에 표현됩니다.) | ReadOnly | X | |
RecvContents | 통신 시 받은 Contents (Simulatform에서는 항상 LogView에 표현되며, MiPlatform에서는 TraceMode가 True인 경우에만 Log 파일에 표현됩니다.) | ReadOnly | X | |
CompressMethod | "ZLIB" "LZSS"(Default Value) | 압축 방식 | CompressMethod="Zlib" | X |
TraceMode | True False(Default Value) | Simulator인 경우에는 LogView에, MiPlatform인 경우에는 Log 파일에 표현됩니다. | TraceMode="true" | X |
LiteAdp
LiteAdp는 DB 관련 작업을 담당하는 Adaptor입니다.
LiteAdp에서 제공되는 Attribute는 다음과 같습니다.
LiteAdp 자세한 내용은 Component Reference 메뉴를 참고하십시오.
Attribute | 입력값/형태 | 설명 | 예시 | 필수 여부 |
---|---|---|---|---|
Id | "" | 각 XML 파일에서 사용될 Protocol ID | id="ldb" id="ldb" | O |
Name | "" | Protocol DLL 파일 이름 | name="CyLiteDBAdp" | O |
Version | "" | Version 정보 | Version="1000" | X |
Driver_Id | ADO/ODBC | Driver Adaptor ID | driver_id="ODBC" driver_id="ADO" | X |
Driver_name | AdaptDBAdo/ AdaptDBAdoce/ AdaptDBOdbc | Driver Adaptor 파일 이름 | driver_name="adaptdbodbc" driver_name="adaptdbado" | X |
Driver_ver | 숫자 | Driver Adaptor Version | driver_ver="10000" | X |
PreConnect | True(Defualt Value) false | 사전 DB 연결 여부 | PreConnect="True" PreConnect="false" | X |
Extapi_id | "" | DB별 Extension API | Extapi_id="StrFunc" | X |
Extapi_name | "" | Extension Adaptor 파일 이름 | Extapi_name="CyStrFunc" | X |
Extapi_ver | 숫자 | Extension API의 Version | Extapi_ver="1000" | X |
ConnectionString | ado(Provider= ;Data Source=;Persist Security Info=;) | Connection할 때 필요한 스트링 | ConnectionString="Driver={Microsoft Access Driver (*.mdb)}; DBQ=D:\\DB\\Test.mdb" ConnectionString="Provider=Microsoft.Jet.OLEDB.4.0;Data Source=D:\BJH_MineTech\DB\smilk.mdb;Persist Security Info=False" | X |
odbc(Driver=;DBQ=;) | (driver에 따라 다름) | X | ||
dbuser | "" | DB 접근 사용자 ID | dbuser="user" | X |
dbpass | "" | DB 접근 사용자 비밀번호 | dbpass="1234" | X |
DBSyncCall | True False(Default Value) | Thread 내에서 순차적 DB 연결 여부 (동시 DB 접근 시 문제가 생기는 경우에 사용됩니다.) | DBSyncCall=true | X |
Connected | True False | 현재 DB Connect 상태 | ReadOnly | X |
BindMethod | "Replace" "Ordered" (Default Value) "Named" | Bind Method 종류 | BindMethod="ordered" | X |
Sync | True False (Default Value) | 통신 Sync 방식 Sync인 경우 데이터 처리가 완료될 때까지 다음 작업을 대기합니다. Async인 경우 데이터 처리가 완료될 때까지 기다리지 않고 다음 작업을 진행합니다. Sync를 선택한 경우 통신 응답을 받는 동안 멈춤 현상이 발생할 수 있습니다. | Sync="False" Sync="True" | X |
ExtApis
외부 Libray를 Wrapping한 Dll의 속성을 기술합니다. 생략할 수 있습니다.
ExtApi
ExtApi에서 제공되는 Attribute는 다음과 같습니다
Attribute | 입력값/형태 | 설명 | 예시 | 필수 여부 |
---|---|---|---|---|
Id | "" | 외부Dll의 ID | id="ApiSample" | O |
Name | "" | 외부Dll의 파일 이름 | Name="CyApiSample" | O |
* MDIInfo
MDIInfo는 MDI에서 사용되는 Icon 정보와 Sub 화면으로 사용될 Form을 정의합니다.
MDI를 사용할 때 기술합니다. 생략 가능합니다.
forms
MDI Sub Form의 공통 속성을 기술합니다.
Attribute | 입력값/형태 | 설명 | 예시 | 필수 여부 |
---|---|---|---|---|
Left | "" | MDI Sub Form의 Left | Left="20" | X |
Top | "" | MDI Sub Form의 Top | Top="0" | X |
Width | "" | MDI Sub Form의 Width | width="240" | X |
Height | "" | MDI Sub Form의 Height | height="320" | X |
OpenStyle | "" | MDI Sub Form의 생성 Style -Status(StatusBar):StatusBar 사용 여부 True/False -Title(TitleBar) :TitleBar 사용 여부 True/False -CloseFlag :Close button 사용 여부 True/False -AutoSize :Form Size 변경 여부 True/False -Session :SessionURL 통과 확인 여부 True/False -Scroll :Scroll 사용 여부 True/False -Openstyle :Noraml(Resize 가능) Min(Minimize) Max(Maximze) Fixed(Resize 불가능) -Instance : Multi(여러 개의 Instance 사용 가능) Single(한 개의 Instance 사용 가능) Argument 형식과 유사 | OpenStyle="normal" OpenStyle= "Title=false CloseFlag=false" | X |
Form
MDI에서 Sub 화면으로 사용될 Form을 기술합니다.
Attribute | 입력값/형태 | 설명 | 예시 | 필수 여부 |
---|---|---|---|---|
Id | "" | MDI Sub Form으로 사용될 ID | id ="MDIForm1" | O |
IconID | "" | MDI Sub Form의 Icon Resource ID | IconID="IDB_COMBO2" | X |
Left | "" | MDI Sub Form의 Left | Left="10" | X |
Top | "" | MDI Sub Form의 Top | Top="10" | X |
Width | "" | MDI Sub Form의 Width | width="240" | X |
Height | "" | MDI Sub Form의 Height | height="320" | X |
initURL | "" | MDI Sub Form으로 사용될 Form URL Prefix::경로 | initURL="Tutorial::GridTest.xml" | O |
OpenStyle | "" | Default OpenStyle값을 참고합니다. | OpenStyle="Closeflag=false title=false" | X |
StartXML | "" | 연결할 프로젝트의 StartXML | StartXML="" | X |
Sessionurl | "" | 최초 연결 시 사용될 Form Url 로그인 Form으로 사용됩니다. Prefix::경로 | sessionurl="" | X |
Autostart | True False (Default Value) | 초기화 시 화면 호출 여부 | autostart="true" | X |
Session | True (Default Value) False | SessionURL 통과 확인 여부 | session="false" | X |
Scroll | True (Default Value) False | Scroll 사용 여부 | Scroll="false" | X |
Shortcuts
MDI에서 Sub Form 바로가기 아이콘의 공통 설정을 기술합니다.
Attribute | 입력값/형태 | 설명 | 예시 | 필수 여부 |
---|---|---|---|---|
Align | "" vertical: 수직정렬 Horizon: 수평정렬(Default Value) Custom:정의된 좌표를 따라 정렬 | 아이콘 정렬 순서 | align="vertical" | O |
Font | "" | Font | font="Tahoma,9" | O |
Color | "" | 아이콘 Color | color="black" | O |
BKColor | "" | 아이콘 BKColor | bkColor="red" | X |
ImageID | "" | 아이콘의 이미지 Resource ID StartXML의 Global에 설정된Resource입니다. Script에서 NewWindow 또는 NewWindowEx를 사용해 MDI Sub Form을 띄운 후 Minimize한 경우와 Script Form의 Icon Property가 없는 경우 Minimize Icon이 됩니다.투명색은 RGB(0, 128, 128)입니다. RGB(0,0,0)도 투명하게 처리되므로 주의하십시오. | ImageID="IDB_COMBO1" | O |
TopMargin | "" | 아이콘이 표시될 MDI Main 화면의 상단 여백 | TopMargin="30" | O |
LeftMargin | "" | 아이콘이 표시될 MDI Main 화면의 좌측 여백 | LeftMargin="40" | O |
Text | "" | 아이콘 Text | Text="" | X |
DisplayType | "Icon"(Default Value) "Report"중 택일 | Icon Manager의 Display형태를 ICon형식(기존과 동일한 형식)으로 보여줄지 Report형식으로 보여줄지 설정 Report 일 경우에는 Header를 선택하면 자동 소트됩니다. | DisplayType ="Report" | X |
HeaderTitle | "A:B:C" :으로 구분하며 3개의 값을 입력합니다. Default ("Title: Description: Status") | DisplayType이 "Report"일 경우 Header Title을 정의 Report의 Column개수는 3개로 고정이며 첫 Column은 Title정보, 두번째 Column은 Description 정보, 세번째 Column은 Form의 상태를 보여줍니다. | HeaderTitle="이름:설명:상태" | X |
Description | "" | DisplayType이 "Report"일 경우 아이템의 두번째 Column에 해당하는 문자값 | Description="Description" | X |
Shortcut
MDI에서 Sub Form 바로가기 아이콘의 설정을 기술합니다.
Attribute | 입력값/형태 | 설명 | 예시 | 필수 여부 |
---|---|---|---|---|
Id | "" | 바로가기 아이콘 ID | Id="icon1" | O |
ImageID | "" | 아이콘의 이미지 Resource ID StartXML의 Global에 설정된Resource입니다. | ImageID="IDB_COMBO2" | X |
Form | "" | 아이콘과 연결될 MDI Sub Form ID로 상단 form에 설정된 ID를 입력해야 합니다. | Form="MDIForm2" | O |
Text | "" | 아이콘 Text | Text="부동산" | X |
Instance | "" Single : MDI Sub Form 한 번만 생성(Default Value) Multi : MDI Sub Form 여러 번 생성 | 바로가기 실행 시 MDI Sub Form 반복 생성 여부 | Instance="single" | O |
Left | "" | 아이콘의 Left | Left="10" | X |
Top | "" | 아이콘의 Top | Top="10" | X |
Description | "" Default (Shortcuts의 Description의 값) | DisplayType이 "Report"일 경우 아이템의 두번째 Column에 해당하는 문자값 | Description="Description" | X |
Variables
MDI Sub Form 실행 시 전달될 Variable을 지정합니다.
바로가기 아이콘이 선택되어 MDI Sub Form이 실행될 때 Argument로 전달되는 값입니다. MDI Sub Form에서 변수를 접근할 수 있습니다. 생략할 수 있습니다.
var
MDI Sub Form 실행 시 전달할 Variable에 대해 기술합니다.
Attribute | 입력값/형태 | 설명 | 예시 | 필수 여부 |
---|---|---|---|---|
Id | "" | 변수 ID | id="gv_company" | O |
Value | "" | 변수 Value | value="" | O |
DockBars
MiPlatformX를 나타내는 DockBar를 Docking할 수 있습니다.
DockBar의 공통 속성을 기술합니다. 생략할 수 있습니다.
Attribute | 입력값/형태 | 설명 | 예시 | 필수 여부 |
---|---|---|---|---|
Fixed | True(Defalult Value) False | DockBar의 Docking 여부 | Fixed ="true" | O |
DockBar
DockBar의 속성을 기술합니다.
Attribute | 입력값/형태 | 설명 | 예시 | 필수 여부 |
---|---|---|---|---|
Id | "" | DockBar의 ID | id="DockBar" | O |
Fixed | True(lue) False | DockBar의 고정 위치 Docking 여부 Fixed가 false인 경우에 Left, Top, Right, Bottom에 Docking 가능합니다. Left, Right에서 Top, Bottom으로 변경할때나 Top, Bottom에서 Left,Right로 변경할 때 초기 사이즈를 주고 싶으면 HorzCx, HorzCy, VertCx, VertCy 값을 설정합니다. | Fixed ="true" | X |
Text | "" | Popup 메뉴의 DockBar Text | text ="DockBar1" | X |
Scroll | True False(Defalut Value) | Scroll 사용 여부 | scroll="false" | X |
Name | "" | DockBar에 표시될 Control. 현재는 MiPlatformX만 사용 가능 | name="MiPlatformX" | X |
Version | "" | DockBar Version | Version="" | X |
InitURL | "" | MiPlatformX로 표시되는 Form Url. Prefix::경로 | InitURL="Tutorial::Menu.xml" | X |
StartXML | 연결할 프로젝트의 StartXML | StartXML="" | X | |
Sessionurl | 최초 연결 시 사용되는 Form Url 로그인 Form으로 사용됩니다. Prefix::경로 | sessionurl="" | X | |
Left | "" | DockBar의 Left | left="0" | X |
Top | "" | DockBar의 top | top="0" | X |
Right | "" | DockBar의 Right | right="300" | X |
Bottom | "" | DockBar의 Bottom | bottom ="20" | X |
Width | "" | DockBar의 Width Align이 Left, Right일 때 적용됩니다. | Width="30" | X |
Height | "" | DockBar의 height Align이 Top, Bottom일때 적용됩니다. | Height="30" | X |
Align | "" left:왼쪽 top:위쪽 right:오른쪽 bottom:아래쪽 | DockBar의 위치 | align="top" | X |
Xbutton | True False | DockBar의 Close 아이콘 표시 여부 Fixed = True일 때 Default Value는 False Fixed = False일 때 Default Value는 True | Xbutton="false" | X |
Ledge | "" | DockBar에 표시되는 MiPlatform과의 좌측 여백 | ledge="" | X |
Tedge | "" | DockBar에 표시되는 MiPlatform과의 상단 여백 | tedge="" | X |
Redge | "" | DockBar에 표시되는 MiPlatform과의 우측 여백 | redge="" | X |
Bedge | "" | DockBar에 표시되는 MiPlatform과의 하단 여백 | bedge="" | X |
AddMenu | True(Default Value) False | DockBar의 Popup 메뉴 표시 여부 | AddMenu="false" | X |
Visible | True(Defalult Value) False | DockBar의 Visible 여부 | Visible="false" | X |
Border | True(Default Value) False | DockBar의 Border 생성 여부 | Border="false" | X |
Session | True(Default Value) False | SessionURL의 통과 확인 여부 | Session="false" | X |
Float | True False(DefaultValue) | DockBar가 초기에 Float상태로 생성될지 여부 Docking될 때 사이즈와 Float시 사이즈를 다르게 주고 싶을때는 FloatCx, FloatCy값을 설정합니다. | Float="false" | X |
FixedSize | True False(DefaultValue) | Docking되었을때 DockBar의 사이즈를 자동으로 조절하지 않고 고정할지 여부 | FixedSize="true" | X |
Index | "" | DockBar가 생성될 때 위치 정보 같은 Align값을 갖는 DockBar들 사이에서 Index번호가 정해진다. Align이 Left,Right일 경우에는 왼쪽을 0으로 오른쪽으로 갈수록 값이 증가합니다. Align이 Top, Bottom인 경우에는 위쪽을 0으로 하여 아래로 갈수록 값이 증가합니다. | Index="0" | X |
SubIndex | "" | 같은 Index를 가지는 DockBar에서의 Sub위치 정보 | SubIndex="1" | X |
HorzCx | "" | DockBar이 Top, Bottom에 Docking될때 넓이 | HorzCx="200" | X |
HorzCy | "" | DockBar이 Top, Bottom에 Docking될때 높이 | HorzCy="100" | X |
VertCx | "" | DockBar이 Left, Right에 Docking될때 넓이 | VertCx="200" | X |
VertCy | "" | DockBar이 Left, Right에 Docking될때 넓이 | VertCy="100" | X |
FloatCx | "" | DockBar이 Floating될때 넓이 | FloatCx="200" | X |
FloatCy | "" | DockBar이 Floating될때 넓이 | FloatCy="100" | X |
Domaininfo
국가별, 사용자별 등 다양한 요구에 따라 해당 Component에 표현 방식을 다르게 할 수 있는 기능입니다.
XML로 되어있는 Domain정보 파일을 읽어와서 Component에 적용해 주는 기능입니다. Domain 상세 정보는 부록 7-6. Domain 정보 파일 XML을 참고 합니다.
Attribute | 입력값/형태 | 설명 | 예시 | 필수 여부 |
---|---|---|---|---|
Ext | "" | X | prefix="xml" | X |
URL | "" | Domain정보가 들어있는 경로 StartXML을 기준으로 한 상대경로도 가능합니다. AppGroup의 prefix::화면 이름 경로도 가능합니다. | URL=".\domain.xml" | O |
Version | " | Version 정보 | Version ="1000" | O |
CacheLevel | none/ static/ dynamic/ session (Default Value) | Cache기능 사용 여부 None : Cache하지 않습니다. Static : Cache합니다. (local부터 찾아본 후 없으면 통신을 통해 다운로드 합니다.) session: 서버 연결 시, Version 정보를 비교한 후 서버의 Version 정보가 최신인 경우 Cache를 모두 삭제하고 새로 다운로드 합니다. Dynamic : session과 같은 방법을 사용합니다. 단, 같은 화면에 대해서도 매번 요청 작업을 합니다. 자세한 사항은 4.3 Caching을 참고합니다. | CacheLevel ="static" CacheLevel ="dynamic" | X |
AppGroups
AppGroup은 서비스를 Group으로 묶어서 관리를 쉽게하기 위한 단위입니다.
AppGroup에는 화면의 Data를 관리하는 DataGroup과 화면을 관리하는 Application Group으로 나뉩니다. DataGroup은 Data를 받을 경로, CacheLevel 및 TrMethod를 설정합니다. DataGroup은 Dataset을 Load하거나 Transaction Method를 호출할 때 사용됩니다. Application Group은 화면을 받을 경로, Resource를 받올 경로 및 Group 내에서 사용하는 변수 등을 설정합니다. Application Group은 화면 전환 시, Dialog 또는 Open Method를 호출할 때 URL정보로도 사용됩니다.
Server StartXML의 DataGroup별 CacheLevel과 Version 정보에 따라서 Server로부터 변경된 Data 수신 여부가 결정됩니다. Server의 StartXML Version 정보가 Local의 Version 정보보다 최신인 경우 다운로드 합니다. 단, CacheLevel에 따라 다운로드 여부가 달라질 수 있습니다.
DataGroup
화면을 구성하는 Data에 관한정보를 기술합니다.
Attribute | 입력값/형태 | 설명 | 예시 | 필수 여부 |
---|---|---|---|---|
Prefix | "" | 사용자 분류ID | prefix="none" prefix="db" | O |
Type | ASP/JSP/ SAP/ Local DB/ MiServer | PID에서 인지하기위한 대상 서비스의 Type. PID에서 실제Data와 연계하여 개발하기 위해 사용됩니다. | Type="ASP" | |
Baseurl (Url) | "" | DataSource의 기본 경로 WebListner와 DBManager를 사용하는 경우는 "http://서버경로? group=DBM&service=" 형태로 명시하며 Script 내부에서는 Prefix::Service명으로 사용합니다. ProtocolID::경로 | baseurl="http://10.1.54.2/nwl/ CyWebLsnrIIS300.dll? group=DBM&service=" baseurl="ldb://ldbsvc::" | O |
CacheLevel | none/static dynamic/ session Default Value - Session | Cache 기능 사용 여부 None : Cache하지 않습니다. static : Cache합니다. (local부터 찾아본 후 없으면 통신을 통해 다운로드 합니다.) Session : 서버 연결 시, Version 정보를 비교한 후 서버의 Version 정보가 최신인 경우 Cache를 모두 삭제하고 새로 다운로드 합니다. Dynamic : session과 같은 방법을 사용합니다. 단, 같은 화면에 대해서도 매번 요청 작업을 합니다. 자세한 사항은 4.2 Caching을 참고합니다. | cachelevel="dynamic" cachelevel="none" | X |
Ext | Default Value : dbs | Cache된 정보가 저장되는 파일의 확장자 | ext="dbs" | X |
CodePage | code page Default Value - ConnectGroup에 있는 CodePage 값 | code page 이름 Null인 경우 <ConnectGroup>의 CodePage를 참고합니다. | codePage="EUC-KR" | X |
Language | Locale ID | Locale ID | Language=" 1042" Language 관련 부록을 참고하십시오. | X |
Version | Default Value - 1000 | Version 정보 | version="1000" | O |
TrMethod | All Update normal (Default Value) | Transaction 실행 시 Method Type | trMethod="update" | X |
StreamVer | 3100 4000(DefaultValue) | Http Adaptor를 통해 통신할 때 Binary Type으로 통신을 Call할 때 LayOut을 설정하며 3.3이전 버전과 다르므로 전버전과 호환을 하기 위해서는 "3100"으로 설정합니다. 3.3버전으로 업그레이드 하는 경우에는 서버쪽도 3.3용 라이브러리를 사용해서 변경작업을 해야합니다. | StreamVer ="3100" | X |
KeepAlive | TrueFalse(Default) | KeepAlive 기능을 사용함 (HTTP 프로토콜만 지원합니다.) | KeepAlive="True" | X |
KeepAliveTime | 60 (Default) -1(계속 유지) | KeepAlive 기능을 유지 시킬 시간 초(second)-1 입력시 계속 유지 (HTTP 프로토콜만 지원합니다.) | KeepAliveTime="60" | X |
SocketCount | 5(Default) | KeepAlive를 사용 할 때 유지하고 있을 Socket의 개수 (HTTP 프로토콜만 지원합니다.) | SocketCount="5" | X |
AppGroup
그룹별 Script, Resource, Variables 정보를 기술합니다.
Attribute | 입력값/형태 | 설명 | 예시 | 필수 여부 |
---|---|---|---|---|
Title | "" | Application Group의 제목 | Title="품질관리" | X |
Prefix | "" | 사용자 분류 ID | prefix="Sample" | O |
Type | form/js/bs/file | PID에서 인지하기위한 AppGroup의 용도. AppGroup에 연결된 대상에 대해 PID가 처리할 방법에 대해 지정합니다. | Type="form" | |
CacheLevel | none/static dynamic/ session Default Value - Session | Cache 기능 사용 여부 None : Cache하지 않습니다. Static : Cache합니다. (local부터 찾아본 후 없으면 통신을 통해 다운로드 합니다.) session: 서버 연결 시 Version 정보를 비교한 후 서버의 Version 정보가 최신인 경우 Cache를 모두 삭제하고 새로 다운로드 합니다. dynamic: session과 같은 방법을 사용합니다. 단, 같은 화면에 대해서도 매번 요청 작업을 합니다. 자세한 사항은 4.3 Caching을 참고합니다. | cachelevel="dynamic" cachelevel="none" | X |
Ext | "" Default Value - "log" | cache된 정보가 저장되는 default 확장자 이름 | Ext="log" | X |
CodePage | code page Default Value - ConnectGroup에 있는 CodePage값 | code page 이름 | codePage="EUC-KR" | X |
Version | Version 정보 | version="1.0" | O | |
Language | Locale ID | Locale ID | Language=" 1042" Language 관련 부록을 참고하십시오. | X |
KeepAlive | TrueFalse(Default) | KeepAlive 기능을 사용함 (HTTP 프로토콜만 지원합니다.) | KeepAlive="True" | X |
KeepAliveTime | 60 (Default) -1(계속 유지) | KeepAlive 기능을 유지 시킬 시간 초(second)-1 입력시 계속 유지 (HTTP 프로토콜만 지원합니다.) | KeepAliveTime="60" | X |
SocketCount | 5(Default) | KeepAlive를 사용 할 때 유지하고 있을 Socket의 개수 (HTTP 프로토콜만 지원합니다.) | SocketCount="5" | X |
Script
AppGroup 내에서 화면을 구성할 XML 파일의 정보를 기술합니다.
Attribute | 입력값/형태 | 설명 | 예시 | 필수 여부 |
---|---|---|---|---|
Baseurl (Url) | "" | 화면 구성 XML파일의 기본 경로 WebListner를 사용하는 경우에는 "서버경로? ReqType=Script&id="형식으로 입력합니다. ProtocolID::경로 | baseurl="http://www.aaa.com/nwl/CyWebLsnrIIS300.dll? ReqType=Script&id=" baseurl="\MineTech\Services\" | O |
Ext | "" | Cache되는 파일의 확장자 이름 | ext="xml" | X |
CacheLevel | none/static dynamic/ session Default Value - AppGroup에 있는 CacheLevel값 | Cache기능 사용 여부 none: Cache하지 않습니다. static:Cache합니다. (local부터 찾아본 후 없으면 통신을 통해 다운로드 합니다) session: 서버 연결 시, Version 정보를 비교한 후 서버의 Version 정보가 최신인 경우 Cache를 모두 삭제하고 새로 다운로드 합니다. dynamic: session과 같은 방법을 사용합니다. 단 같은 화면에 대해서도 매번 요청 작업을 합니다. 자세한 사항은 4.3 Caching을 참고합니다. | CacheLevel =" dynamic" cachelevel="none" | X |
CodePage | code page Default Value - AppGroup 에 있는 CodePage 값 | code page 이름 | codePage="EUC-KR" | X |
Version | "" Default Value - AppGroup 에 있는 Version 값 | Version 정보 | Version="1000" | X |
TrMethod | All/ update/ normal (Default Value) | Transaction 실행 시 Method Type | trMethod="update" | X |
ScriptUrl | "" | Script의 경로 | Scripturl="file://d:\" | X |
Language | Locale ID | Locale ID | Language=" 1042" Language 관련 부록을 참고하십시오. | X |
Resource
AppGroup 내에서 사용하는 Resource 정보를 기술합니다. 생략할 수 있습니다.
Attribute | 입력값/형태 | 설명 | 예시 | 필수 여부 |
---|---|---|---|---|
Url (BaseUrl) | "" | Resource 파일의 기본경로 WebListner를 사용하는 경우에는 "서버경로? ReqType=res&id=resource이름"형식으로 입력합니다. ProtocolID::경로 | url="http://www.aaa.com/nwl/ CyWebLsnrIIS300.dll? ReqType=res&id=demo" url="file://D:\Resource\Test.res" | O |
Ext | "" | Cache 파일의 확장자 이름 | ext="xml" ext="res" | X |
CacheLevel | none/static dynamic/ session Default Value - AppGroup에 있는 CacheLevel값 | Cache기능 사용 여부 None : Cache하지 않습니다. Static : Cache합니다. (local부터 찾아본 후 없으면 통신을 통해 다운로드 합니다.) session: 서버 연결 시, Version 정보를 비교한 후 서버의 Version 정보가 최신인 경우 Cache를 모두 삭제하고 새로 다운로드 합니다. Dynamic : session과 같은 방법을 사용합니다. 단, 같은 화면에 대해서도 매번 요청 작업을 합니다. 자세한 사항은 4.3 Caching을 참고합니다. | CacheLevel ="static" CacheLevel ="dynamic" | X |
CodePage | code page Default Value - AppGroup 에 있는 CodePage값 | code page 이름 | codePage="EUC-KR" | X |
Version | "" Default Value - AppGroup 에 있는 Version값 | Version 정보 | version="1000" | X |
Variables
해당 AppGroup 내의 전역변수를 기술합니다. 생략 가능합니다.
Var
Attribute | 입력값/형태 | 설명 | 예시 | 필수 여부 |
---|---|---|---|---|
Id | "" | 변수 이름 | id="level" | O |
value | "" | 변수 초기값 | value="2" | X |
Menu
프로그램에서 사용되는 전체 화면 메뉴 설정합니다.
Item
Menu의 Sub Element로 각 메뉴항목에 대한 정의입니다. Item의 Sub Element로 item이 옵니다.
Attribute | 입력값/형태 | 설명 | 예시 | 필수 여부 |
---|---|---|---|---|
Id | "" | Item ID | id="111" | O |
Text | "" | 메뉴 Text Text가 없거나 "-" 일 경우는 구분선으로 사용 | Text="현재장애조회" | O |
url | Prefix::XML파일 이름 Script:함수이름 | 메뉴가 선택되었을 때 표시할 화면 이름 또는 "Script:"로 시작하면 선택되었을 때 실행되어야 하는 현재 Form에 있는 함수 이름 | url="sales::trouble_cur_ret" url="script:Click_Menu" | X 자식이 없는 경우 필수 |
Enable | True (Default Value) False | Enable/Disable 여부 | enable="True" enable="false" | X |
Script
Global 영역에서 실행되는 Script를 작성합니다. Global Event의 구현부도 작성합니다.
StartXML File의 예제
<?xml version="1.0" encoding="euc-kr"?> <!--connectGroup title="Tutorial" version="1.0" initurl="Tutorial::mstest.xml" --> <connectGroup id="MiPlatform V3.3" sessionURL="Tutorial::Session.xml" sessionopenstyle="titlebar=false" titlebar="true" Statusbar="true" style="" tracemode="true" hideframe="true" resize="false" bkwidth="" bkheight="" bkvalign="middle" bkalign="left" bkimage="" font="tahoma,9" title="Medical" version="1.0" initurl="Tutorial::testcalendarex" AboutScroll="true" AboutImage="|10|50" AboutString=" MiPlatform||50 Copyright (C) 2003, TOBESOFT WebSite: http://www.TOBESOFT.com|http://www.TOBESOFT.com|30 mailto: comnik@TOBESOFT.com|mailto:\comnik@TOBESOFT.com|30" > <resource url="D:\PIDScript\Tutorial.res" version="1000" ext="res"/> <variables> <var id="gs_id" value="" type="global" /> <var id="test_share" value="xxxxxx" type="share" /> </variables> <GlobalStyle> <style id="Mild" font="tahoma,9" fixedfont="tahoma,9" textcolor="#666666" windowcolor="#CCCC00" buttoncolor="#FFFF66" formcolor="#FFFFCC" editcolor="#FFFFFF" disablecolor="#333300" disablebkcolor="#CCCC99" bordercolor="#CCCCCC" DKSHADOWcolor="#666600" HILIGHT3Dcolor="#FFFFFF" HILIGHTTextcolor="#FFFF33" HILIGHTcolor="#FFFF33" Shadowcolor="#666600" face3dcolor="#FFFF33" Light3dcolor="#FFFFCC" Arrowcolor="red" ScrollbarColor="red" Scrollbarwidth="14"/> <style id="Impact" font="tahoma,9,bold" fixedfont="tahoma,9,bold" textcolor="black" windowcolor="gray" buttoncolor="#CC33CC" formcolor="#FFCC00" editcolor="#FF9999" disablecolor="red" disablebkcolor="white" bordercolor="red" DKSHADOWcolor="#330033" HILIGHT3dcolor="#CC99FF" HILIGHTTextcolor="black" HILIGHTcolor="red" Shadowcolor="#330033" face3dcolor="#CC99FF" Light3dcolor="#996699" Arrowcolor="red" ScrollbarColor="red" Scrollbarwidth="14"/> <style id="System" font="tahoma,9" fixedfont="tahoma,9" textcolor="BTNTEXT" windowcolor="white" buttoncolor="BTNFACE" formcolor="white" editcolor="white" disablecolor="GRAYTEXT" disablebkcolor="BTNFACE" bordercolor="black" DKSHADOWcolor="3DDKSHADOW" HILIGHT3dcolor="BTNHIGHLIGHT" HILIGHTTextcolor="HIGHLIGHTTEXT" HILIGHTcolor="HIGHLIGHT" Shadowcolor="BTNSHADOW" face3dcolor="BTNFACE" Light3dcolor="3DLIGHT" Arrowcolor="black" ScrollbarColor="SCROLLBAR" Scrollbarwidth="14"/> <style id="first" font="굴림,20" fixedfont="굴림체,9" textcolor="blue" windowcolor="gray" buttoncolor="red" formcolor="yellow" editcolor="cyan" disablecolor="brown" disablebkcolor="burlywood" bordercolor="beige" DKSHADOWcolor="black" HILIGHT3dcolor="bisque" Shadowcolor="blanchedalmond" face3dcolor="gray" light3dcolor="gray" HILIGHTcolor="blue" HILIGHTTextcolor="white" Arrowcolor="black" ScrollbarColor="lightgray" Scrollbarwidth="14"/> <style id="second" font="굴림,9" fixedfont="굴림체,9" textcolor="red" windowcolor="gray" buttoncolor="red" formcolor="blue" editcolor="cyan" disablecolor="brown" disablebkcolor="burlywood" bordercolor="beige" DKSHADOWcolor="black" HILIGHTcolor="bisque" Shadowcolor="blanchedalmond"/> </GlobalStyle> <Datasets> <Dataset Id="g_test" ServiceDSetID="output" OnColumnChanged="g_test_OnColumnChanged" CanRowPosChange="g_test_CanRowPosChange" CanColumnChange="g_test_CanColumnChange"> <contents id="g_test"> <colinfo id="item_cd" size="50" type="STRING"/> <colinfo id="Item_dt" size="8" type="DATE"/> <colinfo id="item_nm" size="50" type="STRING"/> <record> <item_cd>1</item_cd> <Item_dt>20040601</Item_dt> <item_nm>첫번째</item_nm> </record> <record> <item_cd>2</item_cd> <Item_dt>20040701</Item_dt> <item_nm>두번째</item_nm> </record> <record> <item_cd>3</item_cd> <Item_dt>20040714</Item_dt> <item_nm>세번째</item_nm> </record> <record> <item_cd>4</item_cd> <Item_dt>20040725</Item_dt> <item_nm>네번째</item_nm> </record> <record> <item_cd>5</item_cd> <Item_dt>20040725</Item_dt> <item_nm>다섯번째</item_nm> </record> <record> <item_cd>6</item_cd> <Item_dt>20040725</Item_dt> <item_nm>여섯번째</item_nm> </record> <record> <item_cd>7</item_cd> <Item_dt>20040725</Item_dt> <item_nm>일곱번째</item_nm> </record> <record> <item_cd>8</item_cd> <Item_dt>20040725</Item_dt> <item_nm>여덟번째</item_nm> </record> <record> <item_cd>9</item_cd> <Item_dt>20040801</Item_dt> <item_nm>아홉번째</item_nm> </record> </contents> </Dataset> </Datasets> <container version="1000" url="C:\\Program Files\\TOBESOFT\\MiPlatform\\DevComponent"> <component id="edit" name="cyedit" version="1000" image="3" title="Edit"/> <component id="button" name="cybutton" version="1000" image="2" title="Button"/> <component id="checkbox" name="cycheckbox" version="1000" image="4" title="Check Box"/> <component id="radio" name="cyradio" version="1000" image="7" title="Radio"/> <component id="TextArea" name="cyTextArea" version="1000" image="16" title="Text Area"/> <component id="Chart" name="cyChart" version="1000" image="17" title="Chart"/> <component id="List" name="cyListBox" version="1000" image="6" title="List"/> <component id="FileDialog" name="cyFileDialog" version="1000" image="18" title="File Dialog" bitmapID="183"/> <component id="TreeView" name="cyTreeView" version="1000" image="11" title="Tree View"/> <component id="Grid" name="cyGrid" version="1000" image="1" title="Grid"/> <component id="image" name="CyImage" version="1000" image="9" title="Image" bitmapID="183"/> <component id="spin" name="CySpin" version="1000" image="10" title="Spin"/> <component id="CalendarEx" name="cyCalendarEx" version="1000" image="13" title="CalendarEx"/> <component id="Calendar" name="cyCalendar" version="1000" image="13" title="Calendar"/> <component id="Static" name="cyStatic" version="1000" image="8" title="Static"/> <component id="maskedit" name="cyMaskedit" version="1000" image="19" title="MaskEdit"/> <component id="div" name="CyDiv" version="1000" image="20" title="Division"/> <component id="Tab" name="CyTab" version="1000" image="12" title="Tab"/> <component id="file" name="CyFile" version="1000" image="18" title="File" bitmapID="183"/> <component id="shape" name="CyShape" version="1000" image="18" title="Shape" bitmapID="183"/> <component id="Combo" name="CyComboEx" version="1000" image="5" title="ComboBoxEx"/> <component id="Menu" name="CyMenuBar" version="1000" image="5" title="MenuBar"/> </container> <activeX version="1000" url="file://C:\\Program Files\\TOBESOFT\\MiPlatform\\DevComponent\\"> <Component Id="AxChartFx" Progid="ChartFX.Chart" nowindow="true" Version="1000" Image="28" Title="activeX1"/> </activeX> <protocols version="1000" url="c:\\program files\\TOBESOFT\\MiPlatform"> <protocol id="file" name="CyHttpAdp" version="1000" scriptPath="script:GetReg('ScriptPath','D:\PIDScript\script')" usecache="false"/> <!-- <protocol id="ldb" name="CyLiteDBAdp" version="1000" driver_id="ODBC" driver_name="AdaptDBOdbc" driver_ver="10000" PreConnect="false" extapi_id="" extapi_name="" extapi_ver="10000" ConnectionString="DRIVER={Oracle Lite 40 ODBC Driver}; DSN=KIMJANG_Tutorial;" dbuser="" dbpass="" /> --> </protocols> <MDIInfo> <forms Left="20" Top="0" width="240" height="320" OpenStyle="normal"> <!--<form id ="MDIForm1" IconID="IDB_COMBO2" Left="10" Top="10" width="240" height="320" initURL="Tutorial::GridTest.xml" OpenStyle="max"/> --> <form id ="MDIForm1" IconID="IDB_COMBO2" Left="10" Top="10" width="240" height="320" initURL="Tutorial::GridTest.xml" OpenStyle="max" /> <form id ="MDIForm2" IconID="IDB_COMBO1" initURL="Tutorial::test1" /> <form id ="MDIForm3" IconID="IDB_COMBO1" initURL="Tutorial::test1" OpenStyle="Fixed"/> <!-- <form id ="MDIForm3" IconID="IDB_COMBO1" initURL="Tutorial::test1" startxml="" sessionurl="" autostart="true" session="false" OpenStyle="max"/> <form id ="MDIForm4" IconID="IDB_COMBO1" initURL="Tutorial::test1" autostart="true" session="false" OpenStyle="fixed"/> <form id ="MDIForm5" IconID="IDB_COMBO1" initURL="Tutorial::test1" autostart="false" session="true" /> --> </forms> <Shortcuts align="vertical" font="tahoma,9" color="black" ImageID="IDB_COMBO1" TopMargin ="30" LeftMargin="40" Text="" > <Shortcut id ="icon1" ImageID="IDB_COMBO2" Form="MDIForm2" text ="부동산" Instance="single" Left="10" Top="10" > <variables> <var id="gv_company" value=""/> <var id="gv_name" value=""/> </variables> </Shortcut> <Shortcut id ="icon2" text ="투비소프트" Form="MDIForm1" Instance="multi" Left="10" Top="50" /> <Shortcut id ="icon3" text ="1" Form="MDIForm3" Instance="multi" Left="10" Top="90" /> </Shortcuts> </MDIInfo> <DockBars Fixed ="true"> <DockBar id = "DockBar" Fixed ="true" text ="DockBar1" scroll="false" name="MiPlatformX" version="" InitURL="Tutorial::Menu.xml" left="0" top="0" right="300" bottom ="20" align="top" xbutton="false" ledge="" tedge="" redge="" bedge="" AddMenu="false"/> </DockBars> <AppGroups> <AppGroup prefix="Tutorial" version="1.0" type="form"> <script baseurl="D:\PIDScript\Win32-1" scripturl="D:\PIDScript\script" cachelevel="dynamic" ext="xml" version="1000" /> </AppGroup> <AppGroup prefix="ldbsvc" version="1.0"> <script baseurl="file://D:\PIDScript\Win32-1" cachelevel="none" ext="xml" version="1000" /> </AppGroup> <DataGroup prefix="Tutorial_DB" baseurl="ldb://ldbsvc::" cachelevel="none" version="1000" /> </AppGroups> <menu> <item id="1" text="Component Example" enable="true"> <item id="101" text="Button" url="script:g_test1()" enable="true"/> <item id="102" text="Calendar" url="script:g_test2()" enable="true"/> <item id="103" text="Chart" url="Tutorial_Chart" enable="true"/> <item id="104" text="CheckBox" url="Tutorial_CheckBox" enable="true"/> <item id="105" text="Combo" url="Tutorial_Combo" enable="true"/> <item id="106" text="Div" url="Tutorial_Div" enable="true"/> <item id="107" text="Dummy" url="Tutorial_Dummy" enable="true"/> <item id="108" text="edit" url="Tutorial_Edit" enable="true"/> <item id="109" text="ExtImage" url="Tutorial_ExtImage" enable="true"/> <item id="110" text="File" url="Tutorial_File" enable="true"/> <item id="111" text="FileDialog" url="Tutorial_FileDialog" enable="true"/> <item id="112" text="Flash" url="Tutorial_Flash" enable="true"/> <item id="113" text="Form" url="Tutorial_Form" enable="true"/> <item id="114" text="Grid" url="Tutorial_Grid" enable="true"/> <item id="115" text="Grid_Contents" url="Tutorial_GridContents" enable="true"/> <item id="116" text="Image" url="Tutorial_Image" enable="true"/> <item id="117" text="List" url="Tutorial_List" enable="true"/> <item id="118" text="MaskEdit" url="Tutorial_MaskEdit" enable="true"/> <item id="119" text="Radio" url="Tutorial_Radio" enable="true"/> <item id="120" text="Spin" url="Tutorial_Spin" enable="true"/> <item id="121" text="Static" url="Tutorial_Static" enable="true"/> <item id="122" text="Tab" url="Tutorial_Tab" enable="true"/> <item id="123" text="TextArea" url="Tutorial_TextArea" enable="true"/> <item id="124" text="TreeView" url="Tutorial_TreeView" enable="true"/> <item id="125" text="WebBrowser" url="Tutorial_WebBrowser" enable="true"/> </item> <item id="2" text="ScriptAPI Example" enable="true"> <item id="201" text="Script API" url="Tutorial_ScriptApi" enable="true"/> <item id="203" text="Engine Script API" url="Tutorial_ScriptEngine" enable="true"/> <item id="204" text="DataSet API" url="Tutorial_ScriptDataSet" enable="true"/> </item> </menu> <script><![CDATA[ function g_test1() { trace('call global g_test1 function!'); } function g_test2() { trace('call global g_test2 function!'); } ]]> </script> </connectGroup>