본문 바로가기

Programming/ActiveX

ActiveX 배포에 대한 좋은 글

ActiveX  배포에 대한 좋은 글
출처 : Devpia
http://www.devpia.com/MAEUL/Contents/Detail.aspx?BoardID=50&MAEULNo=20&no=676548&ref=676532
========================================================================
안녕하세요, 놀고먹는 백수입니다.
 

 ActiveX 를 만들다보면, Cab파일을 만들어서 배포하는데, 잘 안되는경우가 있습니다.

 시스템을 리부팅해야 한다는둥, 이전버젼이 계속 안지워지고, 매번 계속 다운을 받는다든가

 하는 상황이 발생할때가 있습니다.

 물론 inf랑 cab파일 다 잘만들었을때 얘기죠

 그래서 저는 , 강제로, 이전버젼의 aCtiveX를 강제로 삭제하고, 새로운버젼을 시스템 디렉토리에

 복사한다음, regsvr32까지 해주는 프로그램을 만들어서 씁니다.

 cab파일을 받았을때 AcitveX를 설치하고 등록하고 업데이트 하는 일을 명시적으로 직접

 프로그램에서 하는거죠 .


 
 Required Skill
 
 1. ActiveX ( ???.ocx) 파일을 실행파일에 포함시키는 방법

 2. 파일을 regsvr32 사용해서 실제로 등록 하는 방법 ( 로컬컴퓨터의 regsvr32 를 이용하는것이 아니라

 실제 구현한 함수를 사용합니다. )

 References

 1. Q/A 보드 184574 번글, 이승훈님의 '바이너리 리소스'라는 제목의 글을 참조하십시오 .

 2. Tip And Trick , 2039번글, 하형욱님(-_-)의 'Regsvr Function'이라는 제목의 글을 참조하십시오.


 Logique
 
 1. OCX를 resource에 넣어서, exe파일에 같이 들어가게 합니다.
 
 2. exe가 실행되면 , resource에 있는 ocx 파일을 로컬컴퓨터의 System Directory에 복사합니다.

  ( modeCreate 해서 이전파일을 지워주시구요 )

 3. regsvr 함수를 사용하여 복사한 ocx를 등록해줍니다.

 
 Another Information

 CAB파일을 만들때는 다음과 같이 INF 파일을 만들어줍니다.


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

[Setup Hooks]
InstallHook=InstallHook

[InstallHook]
run=%EXTRACT_DIR%컴파일해서만든프로그램이름.exe -remote


 웹페이지에 넣을때는 OCX 를 기준으로 해서 하던 것 처럼 해주시구요.

 cab파일 만들때는 . exe랑 inf 만 해주면 되겠지요. , OCX에 대한 정보가 없으니 inf가 정말 간단해졌습니다.



 그럼 로컬에 있는 버젼을 체크해서 버젼이 낮으면  

 서버에 있는 cab파일을 다운받고 ( 여기까지는 자동이죠? ) 

 inf 있는 내용대로 설치를 시작합니다.

 위와 같이 적어져먼 InstallHook에 명시된 프로그램이 실행되므로,

 우리가 프로그래밍한대로 , 수동으로 ocx복사하고, 등록까지 되겠죠.  



 장점 :   설치를 프로그램에서 명시적으로 하므로 , 설치때 특별한 일을 해줄수 있습니다.

             (만든 사람이름을 따로 보여준다든가. .등등의. )

 단점 : cab파일의 크기가 커집니다. 프로그램이 60k 가 좀 넘으므로, Ocx 를 패키징 하는것보다

          몇십 K 정도 더 커지겠죠.