VC로 ActiveX 배포하는 방법 정리 문서

다들 개발 하시느라 아~~ 주~~ 수고가 많으십니다.
드뎌.. 제가 ActiveX를 배포하는 방법을 알았습니다.
다른 사이트도 참고하고 본 사이트도 참고하고
아주..많이 배웠습니다.

그냥 단번에 될것 같았던것이 며칠이 걸리더군요. 일단 테스트용으로 정리 한것이라서 확실하지 않을 수 있습니다.만일 잘못된 부분이 있으면 cfdguru@hanmail.net으로 멜 보내주세요.

많은 도움이 되었으면 합니다. 좋은 하루들 되세요~~~

ActiveX Control IE 배포를 위한 단계 (많은 참고 : http://www.digital2000.pe.kr/ - 게시판)
ttp://www.digital2000.pe.kr에서 관련 프로그램을 다운로드 받습니다.

 1. .inf 파일을 만든다.

- .cab 파일에서 다운로드 된 뒤 어디다가 카피를 하고 Registery 에 등록을 할것인가 하는 것들을 각 파일들 마다 설정하고 cab 파일의 설정을 기입한다.

VC로 작업할 경우(VB는 잘 모름)는 Release Mode로 컴팔하고 mfc42.dll, msvcrt.dll, olepro32.dll 는 cab로 묶지 말고 MS사에서 다운로드 받는 형식으로 해야지 실행이 됩니다.
정확히 뭔 이유인줄은 모르겠지만 삽질을 한 결과...
그리고 Debug Mode로 컴팔하면 mfc42d.dll, msvcrtd.dll 이놈들이 필요한데(*d.dll은 Debug Mode에서 필요한 퐈일) 이넘들을 포함해서 cab을 만들고 배포를 하면 다운로드 카피가 안되네요~~

(예제) INF 화일예제

DestDir은 윈도우즈 디렉토리인 경우 10, 시스템 디렉토리인 경우 11 이며, Occache 디렉토리인 경우 비워둡니다.

[version]
signature="$CHICAGO$"
AdvancedINF=2.0

[Add.Code]
ExActiveX.ocx=ExActiveX.ocx
mfc42.dll=mfc42.dll
msvcrt.dll=msvcrt.dll
olepro32.dll=olepro32.dll

[mfc42.dll]
FileVersion=6.0.8267.0
hook=mfc42installer

[msvcrt.dll]
FileVersion=6.1.8924.0
hook=mfc42installer

[olepro32.dll]
FileVersion=5.0.4265
hook=mfc42installer

[mfc42installer]
file-win32-x86=http://activex.microsoft.com/controls/vc/mfc42.cab
run=%EXTRACT_DIR%\mfc42.exe

[ExActiveX.ocx]
file-win32-x86=thiscab
RegisterServer=yes
clsid={F218AA66-0E9F-11D6-81A8-00D0B790A174}
DestDir=11
FileVersion=1,0,0,0

2. .cab 파일을 맹근다(windows NT에서 작업해야함)

1) 캐비넷 유틸리티를 적절한 장소로 압축을 해제합니다.

2) 명령프롬프트상에서 아래와 같이 압축을 합니다.
cabarc -s 6144 n Jini.cab *.ocx *.dll *.inf

--> -s 6144 이 옵션을 주는 이유는 원래는 보안인증을 받아야 되는데 인증서버 없이 ActiveX 컨트롤에 보안인증을 하기 위해서는 MS에서  제공하는 "InetSDK" 를 설치하여서 인증을 얻는다(NT에서). 그래서 보안인증을 하기위한 공간이 마련되어 있어야 하기 때문.

3. 보안 인증을 얻고 인증 과정을 거친다.

-- 여기서는 인증서버 없이 보안인증을 하기로 한다.
테스트용으로 보안인증서버에서 인증키를 받을려면 NT의 Certificate Server를 설치하여 얻는다(Certificate Server 설치 및 LPK 맹그는 방법.txt를 참조) 상용서비스를 위한 보안인증키를 받을려면 인증기관(www.verisign.com)에 문의해야 한다.

(1) ActiveX 컨트롤을 웹사이트를 통하여 배포하기 위해서는 해당 ActiveX 컨트롤이 안전함을 보증하는 방법으로 보안인증 절차를거쳐야 합니다. 만약 잘못된 인증화일이나 인증을 하지 않았을경우에는 웹브라우저에 ActiveX 컨트롤이 제대로 표시되지 않습니다.

(2) 인증서버 없이 ActiveX 컨트롤에 보안인증을 하기 위해서는 MS에서제공하는 "InetSDK" 를 설치 하셔야 합니다.
"InetSDK" 는 본 사이트에 "자료실" 에 게시되어 있으므로 다운로드받으시면 됩니다.

InetSDK Tool 은 Windows NT 에서 DOS 명령어 창에서 사용하시면 됩니다.

(3) 인터넷 시스템 보증서(*.cer) 및 인증화일 (*.spc) 을 생성하는 방법

1) *.Cer 화일 생성
"InetSDK" 에 포함된 "makecert" DOS 프로그램을 도스창에서 실행시킵니다.

Ex) makecert -sk test test.cer

"-sk" 옵션은 keyName 이며, "test" 으로 부여 하였습니다.
"keyName" 은 보안인증할 때 필요하므로 잘 기억하시기 바랍니다.

2) *.spc 화일생성
"InetSDK" 에 포함된 "cert2spc" DOS 프로그램을 도스창에서 실행시킵니다.

Ex) cert2spc test.cer test.spc

1) 에서 생성된 "인터넷 시스템 보증서" 를 사용합니다.

2) 보안인증 (Code Sign)
"InetSDK" 에 포함된 "signcode" DOS 프로그램을 도스창에서 실행시킵니다.

Ex) signcode -spc test.spc -k test test.cab

3) 2) 에서 생성된 *.spc 화일을 사용하며, *.pvk 화일이 없으므로 1) 에서 사용한 KeyName으로 대체하기 위하여 "-k" 옵션을 사용하였습니다.

4) lpk_tool.exe를 이용하여 .ocx 파일의 사용권한 화일("*.LPK" ) 화일을 생성합니다.
이전에 먼저 c:\winnt\system32\regsvr32.exe를 사용하여 레지스트리에 ocx 파일을 등록을 해 놔야지 lpk_tool.exe를 찾습니다. (Windows NT Version)
ex)regsvr32 ExActiveX.ocx

< 주의 Caution !!!! >

-- 윈도 98에서 ocx파일 만든것을 윈도 NT 에다가 카피해놓고 레지스트리에다가 등록할려면 등록이 안됩니다. 그래서 VC 소스 자체를 NT에서 컴파일해서 ocx를  만든다음에 레지스트리에다가 등록해서 lpk파일을 만들어야 합니다.
-- 그리고 윈도 98에서 맨든 lpk파일을 서버에다가 올려놓고 한다면 윈도 98이하급에서는 ActiveX Control이 재대로 배포가 되어서 뜨는데 NT 브라우져에서는 안뜹니다.
그래서 꼭~~ NT에서 맨들어야 합니다.
-- VC 컴팔러로 ActiveX를 컴팔하면 자동으로 Registry에 등록이 되는데 다른 사람이 맨든 ocx 파일을 한다면 regsvr32로 강제 등록을 해야되겠지요 !!!


이제 배포화일 및 *LPK 화일을 웹서버에 업로드 한뒤, Test 를
해보시기 바랍니다.
-->LPK 화일을 HTML 화일에 기술하는 방법은 아래에 있습니다.

(참고)
timestamped 주의 메시지가 출력되나 상관 없습니다.
배포화일 "test.cab" 은 보안인증을 하기위한 공간이 마련되어있어야 합니다. 즉,배포화일(CAB) 을 작성할 때 -s 6144 옵션을 사용하셔야 합니다.

Ex) cabarc -s 6144 n test.cab *.ocx *.dll *.inf

________________________________________________________________________

(1) InetSDK 에서 제공하는 인증화일은 테스트를 위한 인증화일이므로 Local 이아닌 인터넷에서는 인증을 확인할수 없는 메시지가 표시됩니다.
(2) 상업적으로 웹사이트를 운영하지 않는 이상 이정도의 메시지는 감수할수밖에 없습니다.
(3) 정식으로 인증화일을 사용하시려면 인증기관(www.verisign.com) 에 문의해보시기 바랍니다.

___** 정식 인증키 받을때 **______________________________________________________

1) 코드사인유틸리티를 설치합니다.

2) 아래와 같이 하여 보안인증을 사인 합니다.
c:\inetsdk\bin\signcode -v mhenz.pvk -spc mhenz.spc Jini.cab -t
http://timestamp.verisign.com/scripts/timstamp.dll

3) 그러면 "Enter Private Key Password"라고 하는 패스워드를 묻는 다이얼로그 박스가 나오는데 패스워드를 "천재1" 이라고 치면 성공적으로 통과 합니다.

4) 보안인증이 제대로 됐는지 알아보기 위해서 아래의 명령으로 확인을 합니다.
성공적으로 보안인증이 되었으면 정상적인 보안경고 창이 뜹니다.
c:\inetsdk\bin\chktrust Jini.cab

5) 완성!!! 이제 인증된 cabinet파일이 맹길어 졌습니다.

_________________________________________________________________________________

  [라이선스 패키지(*.LPK) 화일을 HTML 화일에 기술하는 방법]

  *.LPK 화일은 배포화일(*.CAB)에 대한 정보와 함께 HTML 화일에 기술 합니다.
  만약 라이선스 패키지화일에 대한 기술이 없거나 잘못된 경로를 포함한다면사용자의 웹브라우저에는 ActiveX 컨트롤이 표시되지 않습니다.
  *.LPK 화일은 다음과 같이 HTML Code 에 포함 시킵니다.
  만약, LPK 화일이 "abc.LPK"라고 한다면...

  LPK file CLASSID는 우데서나 동일

  <주의 Caution!!!> Linux Server에서는 abc.LPK , AbcTest.CAB 의 파일 이름을 서버에 올린 파일 대소문자 잘 보고 적어 줘야합니다. 리눅스는 대소문자 구별 !!

  <OBJECT CLASSID="clsid:5220cb21-c88d-11cf-b347-00aa00a28331">
  <PARAM NAME="LPKPath" VALUE="abc.LPK">
  </OBJECT>

  <OBJECT ID="AbcTest" WIDTH=784 HEIGHT=540
  CLASSID="CLSID:61087749-4602-11D3-BE14-00AA00697980"
  CODEBASE="AbcTest.CAB#version=1,0,0,0">
  </OBJECT>


(주의) "LPKPath" 는 파라미터 이름일뿐이므로 그 자리에 LPK 화일에 대한 경로를 기술할 필요는 없습니다. LPK 화일에 대한 경로는 기본적으로 웹서버에서 배포화일이 존재하는 경로와 동일하다고 생각 하시면 됩니다. 그리고 반드시 배포파일과 동일한 경로에 LPK 화일과 배포화일을 올려야 합니다.

LPK 화일에 대한 정보를 먼저 기술하고, 배포화일(*.CAB)에 대한 정보를 기술 하셔야 합니다.

이상으로 문서에 게재된 순서를 바탕으로 제작 배포한 결과 아~~ 주~~ 잘 떳습니다.
(win98, win2000, XP)

이 문서는
http://www.digital2000.pe.kr - 게시판
http://www.daul.co.kr/madchick/ Q & A 게시판
을 토대로 나름대로 정리하고 삽질을 한 결과를 문서로 제작하였습니다

'NIght.. > Technical Know-How' 카테고리의 다른 글

Visual Studio 2005 TFS SP1의 알려진 문제점  (0) 2008/10/30
vector 사용시 추가사항  (0) 2008/10/30
VC로 ActiveX 배포하는 방법 정리 문서  (0) 2008/10/30
try catch문 사용예 3  (0) 2008/10/30
try catch문 사용예 2  (0) 2008/10/30
try catch문 사용예 1  (0) 2008/10/30

Write your message and submit