Information/C++ 2016. 1. 22. 15:43

C++/ cap 파일 만들기

dll이나 ocx를 웹에서 배포하기 위해 cab파일로 변환

참고로 여기에서 cab파일을 만들때는 테스트인증서를 가지고 만들지만 실제 배포에 있어서는 정식 인증서를 발급받아 배포
이유는 MS사의 Internet Explorer에서 보안 강화로 인하여 테스트 인증서로는 배포한다 하더라도 Internet Explorer에서는 설치가 안된다.

cab파일을 만들기 위해서 작업 순서는 다음과 같다.

1. DLL이나 OCX파일을 준비 한다.

2. *.inf 파일을 작성한다.

3. 테스트 인증서를 만들고 인증서를 넣은 cab파일을 만든다.

4. 웹에 cab파일을 올린다.

이제 하나하나 짚어가며 설명을 하겠다.

1. DLL이나 OCX파일을 준비 한다.
   - 자기가 구현하고자 하는 어플리케이션을 만든다.(어플리케이션 개발까지는 설명하지 않겠다.)

2. *.inf 파일을 작성한다.(아래는 주석을 뺀 내용이다.)
   - 좀 긴것같지만 수정해야할 부분은 많지 않다.(붉은색으로 표시한 부분만 수정하면된다.)

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

[Add.Code]
TestActiveX.ocx=TestActiveX.ocx  <--- 대상 OCX, DLL을 적어준다.
mfc42.dll=mfc42.dll
msvcrt.dll=msvcrt.dll
olepro32.dll=olepro32.dll


[TestActiveX.ocx]  <--- 대상 OCX, DLL을 적어준다.
file-win32-x86=thiscab
clsid={XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX}  
;VC++의 파일 목록줄 XXXXX.old파일의 마지막 clsid를 적어준다.
FileVersion=1,0,0,1  
;VC++의 WorkSpace중 ResourceView에 Version폴더의 Version_info내용중 fileversion을 쓴다.
RegisterServer=yes


[msvcrt.dll]
FileVersion=6,0,8168,0 <--컴파일러 버전을 적어준다.
hook=mfc42installer


[mfc42.dll]
FileVersion=6,0,8168,0
hook=mfc42installer


[olepro32.dll]
FileVersion=5,0,4261,0
hook=mfc42installer


[mfc42installer]
file-win32-x86=<LINK TYPE="GENERIC" VALUE="http://activex.microsoft.com/controls/vc/mfc42.cab">http://activex.microsoft.com/controls/vc/mfc42.cab</LINK>
run=%EXTRACT_DIR%\mfc42.exe

이로써 inf파일 작성이 끝났다.

3. 테스트 인증서를 만들고 인증서를 넣은 cab파일을 만든다.
   - 테스트 인증서를 만들기 위해서는 InetSDK가 필요하다.(첨부 확인 : inetsdk.zip)
     (콘솔 모드에서 실행하여야 한다.)
  1) cabarc N TestActiveX.cab TestActiveX.ocx TestActiveX.inf 
      : TextActiveX.ocx를 TestActiveX.inf 설정을 통하여 TestActiveX.cab를 만든다는 의미이다.
  2) 서명하기.
      ㄱ) makecert -sv Test.pvk -n "CN=Test ActiveX OCX" Test.cer
          - 비밀번호를 묻는 윈도우가 나온다. 비밀번호 입력후 기억해 두자. 
      ㄴ) cert2spc Test.cer Test.spc
          - Test.cer 파일로 부터 Test.spc 파일을 만든다.
      ㄷ) signcode -v Test.pvk -spc Test.spc TestActiveX.cab
          - 비밀번호를 묻는 윈도우가 나오며 ㄱ)에서 입력한 비밀번호를 넣는다.
      ㄹ) setreg -q 1 TRUE
          - 올바르게 테스트 인증서가 첨부되었는지 확인한다.(Warling은 무시하여도 된다.)

4. 웹에 cab파일을 올린다.
<html>
<head>
<title>등록했다.</title>
</head>

<body bgcolor="white" text="black" link="blue" vlink="purple" alink="red">

<object classid="CLSID:XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX" codebase="TestActiveX.cab#version=1,0,0,1" width="300" height="330" id="TestActiveX">

</object>

</body>

</html>


'Information > C++' 카테고리의 다른 글

C++/ 레지스트리 키 확인  (0) 2016.01.22
Information/C++ 2016. 1. 22. 15:20

C++/ 레지스트리 키 확인

#include <windows.h>

void main()
{
     HKEY key;
     if(RegOpenKeyEx(HKEY_LOCAL_MACHINE, "Software\\Adobe", 0, KEY_ALL_ACCESS, &key) == ERROR_SUCCESS)
      {
             // 키를 오픈하는데 성공했습니다.
             // 이제 이 키를 이용해 레지스트리를 마음대로 ...
      }
      else
      {
             // 키 오픈에 실패했네요....
      }
}

'Information > C++' 카테고리의 다른 글

C++/ cap 파일 만들기  (0) 2016.01.22