본문 바로가기
Delphi Tip/인터넷

ActiveX Form기초부터 배포까지

by MonoSoft 2021. 11. 23.
728x90
반응형

ActiveX Form기초부터 배포

 

개발환경 : Windows XP pro, Delphi 6.0, IIS 5.2

 

- 새프로젝트를 시작하자.

델파이를 시작하고 메뉴->File->New->Other을 선택한다.

New Items창에서 ActiveX텝으로 이동한다.

Active Form을 선택하고 OK버튼을 클릭한다.

 

- Active Form Wizard폼이 나타난다.

New ActiveX Name : ActXRun을 입력하면 아래는 알아서 변경된다.

OK버튼을 클릭한다.

경고메시지가 나오면 OK버튼을 클릭한다.

 

- 이제부터가 시작이다.

일단 저장을 한다. 

적당한 폴더를 선택(예제작성시는 c:\ActXRun폴더에 저장했다)하여 저장한다.

 

- 컴포넌트 추가

TButton(예제작성시 이름은 기본값을 사용한다)을 추가하고 Caption을 '실행'으로 수정한다.

버튼크기와 폼크기를 적장하게 수정한다.

 

- unit 추가

URLDownloadToFile함수를 사용하기 위해서 URLMon Unit을 추가한다. 

 

uses

Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,

ActiveX, AxCtrls, ActXRunProj1_TLB, StdVcl, StdCtrls, URLMon; //요넘 추가

 

- 프로퍼트 추가

메뉴->View-> Type Library을 선택한다.

ActXRunProj1.tlb(프로젝트이름에 따라 다를 수 있음)라는 라이브러리 창이 나타난다.

왼쪽트리에서 IActXRun을 선택하고 마우스 오른쪽버튼을 클릭하여 팝업창을 띠운다.

팝업창에서 New->Property클릭하면 Property가 추가되는데 이름을 Url로 한다.

오른으로 Attributes텝에서 Type를 BSTR로 수정한다.

위와 같은 방식으로 FileName를 추가하고 Type를 BSTR로 수정한다.

 

- 변수선언

ActXRunImpl1.pas로 와서 FUrl, FFileName를 추가한다.

type

TActXRun = class(TActiveForm, IActXRun)

Button1: TButton;

private

FUrl: string; //이넘 추가

FFileName: string; //이넘 추가

 

- Property코딩 

Pas화일 하단에 보면 Get_FileName, Set_FileName, Get_Url, Set_Url 함수가 있다.

아래와 같이 코딩한다.

 

function TActXRun.Get_FileName: WideString;

begin

result:= FFileName; //이넘 추가

end;

 

function TActXRun.Get_Url: WideString;

begin

result:= FUrl; //이넘 추가

end;

 

procedure TActXRun.Set_FileName(const Value: WideString);

begin

FFileName:= Value; //이넘 추가

end;

 

procedure TActXRun.Set_Url(const Value: WideString);

begin

FUrl:= Value; //이넘 추가

end;

 

- 이벤트 추가 

Button1에 OnClick Event을 추가한다.

코딩내용은 web에서 화일를 다운로드해서 바로 실행하는 내용이다.

FileName와 URL이 없는 상태에서는 기본값으로 화일을 다운로드해서 실행한다.

아래와 같이 코딩한다.

 

procedure TActiveFormX.Button1Click(Sender: TObject);

var sServerFileName, sLocaFileName: string;

begin

if FUrl = '' then FUrl := 'http://LocalHost/ActXRun';

if FFileName = '' then FFileName:= 'NOTEPAD.EXE';

sServerFileName:= FUrl;

if sServerFileName[Length(sServerFileName)] <> '/' then

sServerFileName:= sServerFileName + '/';

sServerFileName:= sServerFileName + FFileName;

sLocaFileName:= 'c:\temp\' + FFileName;

if not DirectoryExists('c:\temp') then

if not CreateDir('C:\temp') then

raise Exception.Create('Cannot create c:\temp');

URLDownloadToFile(nil, PChar(sServerFileName), PChar(sLocaFileName), 0, nil);

WinExec(PChar(sLocaFileName),SW_SHOW);

end;

 

- 코딩 마무리

컴파일을 하면 ActXRunProj1.ocx가 생성된다.

여기까지 프로그램 작성은 끝났다.

- Web Deployment Options 설정

Web에 올리기 위해서는 ocx보다는 압축된 형태의 화일인 cab화일을 사용하는것이 보통이다.

cab 화일을 만들기 위한 작업에 들어가자.

메뉴->Project->Web Deployment Options...메뉴를 선택한다.

Web Deployment Options창이 나타나고 Project탭에서 Directories and URLs 에디터에 

C:\ActXRun로 3개의 다 입력한다.

General Options에 Use CAB file compression, Deploy additonal files를 Check한다.

Packages, Additional Files탭은 여기서는 설정하지 않는다.

OK버튼을 클릭한다.

- Web Deploy

메뉴->Project->Web Deploy을 선택하면 ActXRunProj1.cab, ActXRunProj1.htm, ActXRunProj1.inf화일이 생성된다.

 

- 델파이 작업끝

Test를 위해서 NOTEPAD.EXE화일을 C:\ActXRun폴더에 복사한다.

ActXRunProj1.htm화일을 IE에서 열어보면 실행이란 버튼이 있는 ActiveX Form이 보일 것이다.

만약에 않보이면 위에서 부터 다시 잘 살펴보자. 

여기까지가 델파이 작업의 끝이다. 

이제부터는 IIS를 설정하고 cab화일을 codesign해서 사용하는 것을 하겠다.

 

- IIS설정

'관리 도구'에서 '인터넷 정보서비스'를 선택한다.

'인터넷 정보서비스'가 없다면 IIS를 설치해야 한다.

'기본 웹 사이트'에서 '가상 디렉터리'를 추가한다.

별칭은 'ActXRun'로 하고 디렉터리는 'C:\ActXRun'로 설정한다.

IE에서 'http://127.0.0.1/ActXRun/ActXRunProj1.htm'입력하여 확인한다.

ActiveX Form이 않보인다고 이상하게 생각하지 접근가능한지만 확인한다.

화면이 보이면 IIS에서 할 일도 다 했다.

 

- Htm화일 수정

anycert.co.kr싸이트에서 codesign.exe을 다운받는 내용으로 수정해 보자.

ActXRunProj1.htm화일을 오픈해서 아래와 같이 수정한다.

 

Delphi 6 ActiveX Test Page

You should see your Delphi 6 forms or controls embedded in the form below.

classid="clsid:F7A9CFCB-9063-478C-8731-D3A3C7117244"

codebase="http://127.0.0.1/ActXRun/ActXRunProj1.cab"

width=58

height=26

align=center

hspace=0

vspace=0

 

- ActiveX Form이 설치되는 폴더 

'C:\WINDOWS\Downloaded Program Files'폴더에 가면 ActXRun Control이런 화일이 있다.

ActiveX프로그램을 개발하다 보면 자주오는 곳이므로 알아두는 것이 편리한다.

ActXRun Control를 삭제한다.(삭제가 않되면 ActXRun Control를 사용하고 IE를 닫고하면 된다.)

ActXRunProj1.htm화일을 IE로 오픈하면 이제는 ActiveX Form이 않보인다.

 

- codesign설치

델마당 자료실이나 http://www.anycert.co.kr/program/codesign.exe를 받아서 

적당한 폴더에 압축을 푼다.

여러개의 화일이 있는데 사용법은 간단하다.

 

- cab화일 test인증하기

cab화일을 그냥 web에 올리면 보안경고와 함께 볼 수가 없다.

일반적으로 game싸이트나 다른 싸이트를 방문하게 되면 보안경고메시지와 함께 설치여부를

확인하게 되는데 인증작업을 한 ActiveX화일만이 이런 메시지를 볼 수 있다.

 

ActXRunProj1.cab화일을 codesign이 설치된 폴더에 복사한다.

cmd도스 창을 열고 codesign폴더로 이동한다.

 

아래와 같이 입력한다.

makecert -n "CN=test" -sv test.pvk test.cer 

개인공개키를 생성하는 화면이 나타나면 적당한 패스워드를 입력한다.

test.pvk와 test.cer 파일이 생성되고 생성된 ser 파일을 이용해서 

spc 파일을 생성한다. 아래와 같이 입력한다.

cert2spc test.cer test.spc 

Succeeded라는 메시지가 나타나면 spc 파일이 성공적으로 생성된것이다. 

cab 파일 서명을 위해 아래와 같이 입력한다.

signcode -spc test.spc -v test.pvk -n "ActXRun" ActXRunProj1.cab

 

이전에 설정한 비밀번호를 입력한다. 

Test Sign 과정이 마무리되면 아래와 같이 인증확인을 해볼 수 있다. 

chktrust ActXRunProj1.cab

결론적으로 정리하면 위에 내용은 아래와 같이 입력한 것이다.

makecert -n "CN=test" -sv test.pvk test.cer 

cert2spc test.cer test.spc 

signcode -spc test.spc -v test.pvk -n "ActXRun" ActXRunProj1.cab

chktrust ActXRunProj1.cab

 

- 마무리

인증된 ActXRunProj1.cab화일을 C:\ActXRun폴더로 복사하고

IE에서 ActXRunProj1.htm를 오픈하면 "ActXRun"설치여부를 확인하는 보안경고가

나타난다.

"예"버튼을 클릭하면 이 모든 작업이 끝난다.

 

여기까지나 기본적인 ActiveX From을 작성하여 배포하는 순서이다.

막상해보면 별로 복잡하지도 않은 것이 처음 해보는 사람에게는 체계적으로 

설명된 내용을 찾기 힘들어서 고생하는 경우가 많다.

이 글이 ActiveX Form를 처음 사용하는 사람들에서 조금이나만 도움이 될 수 있었으면 한다.

 

728x90
반응형

댓글