런처 서비스 설치
PC에 런처 서비스 설치하고 윈도우 서비스 등록하기
런처 서비스는 윈도우 서비스로 등록되어 동작합니다. 런처를 사용하기 위해서는 먼저 윈도우 서비스를 등록해야 합니다.
1
설치 파일을 내려받아 관리자 권한으로 실행합니다.
설치 시 관리자 권한으로 실행하지 않은 경우에는 서비스 동작 시 오류가 발생할 수 있습니다.
런처 서비스 설치 시 설치 마법사 화면이 표시되지 않도록 하려면 "/VERYSILENT", "/SILENT" 옵션을 사용할 수 있습니다. "/VERYSILENT" 옵션은 설치 파일 실행 시 아무런 메시지 없이 서비스가 설치됩니다. "/SILENT" 옵션은 사용자의 조작 없이 설치 진행 상태만 표시하고 서비스가 설치됩니다.
TPLSvc_Setup.exe /VERYSILENT TPLSvc_Setup.exe /SILENT
2
설치 마법사 화면이 실행됩니다. [Insatll] 버튼을 클릭하고 설치를 진행합니다. 설치가 완료되면 윈도우 서비스로 등록되고 자동으로 실행됩니다.
[제어판 > 시스템 및 보안 > 관리자 도구 > 서비스] 항목에서 등록된 서비스가 동작하는 것을 확인할 수 있습니다. 해당 창에서 서비스를 중지하거나 다시 시작할 수 있습니다.
PC에서 런처 서비스 삭제하기
1
설치된 앱(프로그램) 목록에서 TPLSvc 항목을 찾아 [제거] 버튼을 클릭합니다.
2
삭제 여부를 확인합니다. [예] 버튼을 클릭하면 삭제가 진행됩니다. 등록된 서비스가 해제되고 런처 서비스가 삭제됩니다.
특정 포트에서 서비스가 실행하도록 지정하기
런처 서비스는 사용하는 포트가 지정되어 있는데, 이를 변경하고자 하는 경우에는 명령 프롬프트에서 직접 파라미터를 지정해 서비스를 실행할 수 있습니다.
1
런처 서비스가 설치된 경로를 확인합니다. 아래 경로에서 설치된 실행 파일을 확인할 수 있습니다.
C:\Program Files (x86)\TPLSvc\TPLSvc.exe
2
관리자 권한으로 명령 프롬프트를 실행하고 아래와 같이 파라미터를 지정해 윈도우 서비스를 해제할 수 있습니다. 런처 서비스를 삭제하는 것이 아니라 등록된 서비스만 해제합니다.
TPLSvc_Setup.exe –r false
3
서비스를 다시 등록하기 위해서는 아래와 같이 실행합니다.
TPLSvc_Setup.exe –r true
런처는 통신 방식에 따라 지정된 포트 중 하나를 사용합니다. 런처가 실행되는 시스템에 다른 서비스가 해당 포트를 이미 사용하고 있다면 포트를 변경해 사용할 수 있습니다. 이런 경우에는 서비스 등록 시 포트를 지정하는 파라미터(-p 포트번호1, -p 포트번호2 ... -p 포트번호n)를 추가로 지정합니다.
통신 방식 | 기본 포트 | 포트 지정 파라미터 |
---|---|---|
HTTP | 7895 ~ 7935 | -p |
HTTPS | 7936 ~ 7966 | -httpsp |
WS | 7970 ~ 7981 | -wsp |
WSS | 7982 ~ 7992 | -wssp |
예를 들어 HTTP 통신 시 8080포트와 8888포트를 사용하고자 한다면 아래와 같이 서비스를 등록합니다.
TPLSvc_Setup.exe –r true –p 8080 –p 8888
동작 방식
런처 서비스와 웹브라우저 간 동작 방식을 간단하게 설명하면 아래 표와 같습니다.
런처 서비스 | 웹브라우저 | |
---|---|---|
(2) id 할당 및 저장 후 id 반환 | ↔ | (1) 신규 id 요청 (create) |
(4) 필수 속성 저장 후 결과값 반환 | ↔ | (3) 필수 속성 설정 (setproperty) |
메서드 실행 후 결과값 반환 | ↔ | 메서드 실행 요청 (method) |
속성 정보 반환 | ↔ | 속성 정보 요청 (getproperty) |
이벤트 정보 반환 | ↔ | 이벤트 정보 요청 (event) |
id에 해당하는 정보삭제 | ↔ | id에 해당하는 정보삭제요청 (destroy) |
웹브라우저에서 런처 서비스 실행을 위해 형식에 맞는 데이터를 전송해야 합니다.
데이터는 JSON 형식으로 작성된 텍스트로 전송하며 결과값도 같은 형식입니다.
id 값은 런처 실행을 위한 필수 정보입니다. 반드시 신규 id 요청을 전송해야 합니다. (1, 2번 동작)
필수 속성 정보를 설정해야 합니다. (3, 4번 동작)
대소문자를 구분하므로 주의해야 합니다.
기본 설정
주소 설정
주소 설정은 필수 부분과 추가 부분으로 구분할 수 있습니다. 필수 부분에 추가 부분을 조합해 사용합니다.
필수 부분 | 로컬주소, 포트, 예약어(launcher) |
---|---|
추가 부분 | 플랫폼명, 타임스탬프 |
http://127.0.0.1:7895/launcher/nexacro/123456789 http://127.0.0.1:7895/launcher/xplatform/123456789 http://127.0.0.1:7895/launcher/miplatform/123456789
로컬주소(127.0.0.1)과 예약어(launcher)은 수정할 수 없습니다.
설치 시 특정 포트를 열어놓은 경우에는 해당 포트 번호를 사용할 수 있습니다.
타임스탬프는 웹브라우저 캐시 동작으로 통신이 되지 않는 것을 방지합니다.
기본 요소 설정
기본적으로 설정하는 요소는 platform, action, id, value입니다. 각 용도에 맞게 설정합니다.
platform
플랫폼을 나타내는 문자열입니다. 제품에 따라 아래 3가지 중 하나를 지정할 수 있습니다.
nexacro, xplatform, miplatform
action
런처 서비스에 요청할 동작 문자열을 지정합니다. 아래와 같은 동작을 지정할 수 있습니다.
동작 | 설명 |
---|---|
create | 런처 서비스에서 최초 id를 할당받을 때 |
destroy | 할당받은 id에 해당하는 정보를 런처 서비스에서 삭제 |
setproperty | 속성 설정 |
getproperty | 속성 정보 확인 |
method | 메서드 실행 |
event | 이벤트 관련 정보 확인 |
check | 런처 서비스 버전 정보 확인 |
id
런처 서비스로부터 할당받은 문자열이며 반드시 최초 동작 시 요청해야 합니다.
value
동작에 대한 구체적인 JSON 형식의 정보이며 동작에 따라 구성이 다릅니다.
$r_title(최초 id를 할당받기 위한 JSON : value 없음, 결과로 id가 전달됨) var objNexacro = new Object(); objNexacro.platform = 'nexacro'; objNexacro.action = 'create'; //objXP.id = ''; // 통신이 성공하면 정보가 채워지므로 생략해도 무관합니다.
$r_title(관련 속성 설정을 위한 JSON) var objNexacro = new Object(); objNexacro.platform = 'nexacro'; objNexacro.action = 'setproperty'; objNexacro.value = {"property name" : property value, ... };
$r_title(설정된 속성값을 확인하기 위한 JSON) var objNexacro = new Object(); objNexacro.platform = 'nexacro'; objNexacro.action = 'getproperty'; objNexacro.value = {"property name" : "", ... };
$r_title(메서드 호출을 위한 JSON) var objNexacro = new Object(); objNexacro.platform = 'nexacro'; objNexacro.action = 'method'; objNexacro.value = {"method name": {"param": method parameter array, "result": }};
$r_title(이벤트 정보를 확인하기 위한 JSON) var objNexacro = new Object(); objNexacro.platform = 'nexacro'; objNexacro.action = 'event'; objNexacro.value = {"event name" : {...}};
$r_title(런처 서비스 버전 정보 확인을 위한 JSON) var objNexacro = new Object(); objNexacro.platform = 'nexacro'; objNexacro.action = 'check'; objNexacro.value = {"getlauncherversion": {}};
데이터 전송
데이터 전송은 HTTP/HTTPS 통신(GET, POST)과 WebSocket 통신으로 구분합니다.
$r_title(GET 방식은 주소 뒤에 ?와 JSON 형식의 문자열이 첨부됩니다) var objNexacro = new Object(); var xhrObject = new XMLHttpRequest(); xhrObject.onreadystatechange = resultProcess; var jsonData = JSON.stringify(objNexacro); var openurl = "http://127.0.0.1/launcher/nexacro/"+new Date().getTime(); xhrObject.open("GET", openurl+"?"+jsonData, "true"); xhrObject.send(null);
$r_title(POST 방식은 send 메서드 파라미터에 JSON 형식의 문자열이 첨부됩니다) var objNexacro = new Object(); var xhrObject = new XMLHttpRequest(); xhrObject.onreadystatechange = resultProcess; var jsonData = JSON.stringify(objNexacro); var openurl = "http://127.0.0.1:80/launcher/nexacro/"+new Date().getTime(); xhrObject.open("POST", openurl, "true"); xhrObject.send(jsonData);
$r_title(WebSocket 통신 시 데이터 전송) var objNexacro = new Object(); var openurl = "ws://127.0.0.1:7970/launcher/nexacro/"+new Date().getTime(); var objWebSocket = new WebSocket(openurl); var jsonData = jsonData = JSON.stringify(objNexacro); if (objWebSocket != null) { objWebSocket.send(jsonData); } else { return null; }
데이터 전송은 JSON 형식의 문자열을 구성하면 어떤 식으로든 처리할 수 있습니다. stringify 메서드를 지원할 수 없거나 직접 설정하기 원한다면 다음과 같은 형태로 문자열을 만들어 처리합니다.
create '{"platform":"nexacro","action":"create"}'
launch method id값은 create에서 받은 값으로 치환해야 합니다. '{"platform":"nexacro","id":"12345678","action":"method", "value":{ "launch": null }}'
통신 결과 처리
JSON 형식의 문자열 데이터를 적절히 변환해 처리합니다.
$r_title(HTTP/HTTPS 통신 결과 처리) var result = xhrObject.responseText; // xhrObject는 XMLHttpRequest임 var objResult = eval('(' + result + ')');
$r_title(WebSocket 통신 결과 처리) function onMessage(evt) { var data = evt.data; var objResult = eval('(' + result + ')'); ... }
처리결과가 성공이라면 result 문자열이 'success' 로 처리됩니다.
if(objResult.result == "success" && objResult.id.length > 0) { objNexacro = objResult; // objXP는 송신정보를 담고 있었던 객체임 } else { window.console.log("error!!!"); }
TPLSvcAgent 사용
특정 환경에서 런처 서비스 실행 시 윈도우 운영체제 보안 제약 사항으로 서비스 실행에 필요한 일부 사용자 정보를 확인할 수 없습니다. 이를 우회하기 위해 별도의 에이전트 파일(TPLSvcAgent.exe)을 제공하며 multisession 속성 설정값에 따라 사용자 정보 필요시 에이전트 파일을 실행해 정보를 확인합니다.
TPLSvcAgent.exe 파일과 multisession 속성은 1.1.0.29 이상 버전에서 지원합니다.
지원 기능
multisession 속성값을 true로 설정하고 에이전트 실행 시 아래와 같은 기능을 지원합니다.
관리자 권한으로 nexacro.exe 실행
프록시 서버 사용 시 바로가기 이미지 파일 내려받기 지원
가상환경(citrix, vmware, windows remote desktop)에서 사용자 정보 확인
가상환경 설정에 따라 사용자 정보 확인 기능을 사용하지 못할 수도 있습니다.
사용 방법
에이전트 실행을 활성화하기 위해서는 런처 서비스 구동을 위한 setproperty 함수에서 multisession 속성값을 true로 설정합니다.
objNexacro.action = 'setproperty'; objNexacro.value = { ... "multisession": true, ... };
가상환경에서 사용자 정보 확인 시에는 최초 id 할당 시(create action) 콜백 함수에서 id 값을 document의 title 속성값으로 설정해 주어야 합니다.
function createProcess() { ... if (bMultiSession == true) { top.document.title = objNexacro.id; } ... }