2011년 1월 25일 화요일

코드사인(codesign) 자동화

 

프로그램을 배포할 때 설치파일이나 CAB 파일을 만들어서 배포하려면 바이너리나 설치파일, CAB 파일에 응용 프로그램 인증 즉 코드사인이 필요하다. 코드사인을 할 때 보통 spc, pvk 인증서, 개인키 파일을 이용해서 signcode.exe로 코드사인하는 경우 항상 비밀번호를 입력해줘야 하는 불편이 있고 프로세스를 자동화할 수 없게 만든다. 다음처럼 인증서와 개인키 파일을 임포트하게 되면 그러한 불편 없이 바로 코드사인이 가능하다.
1. pvkimprt.exe 파일을 다운로드해서 적당한 위치에 압축을 해제한다.
http://www.microsoft.com/downloads/details.aspx?FamilyID=F9992C94-B129-46BC-B240-414BDFF679A7&displaylang=EN
2. pvkimprt.exe를 실행한다.

pvkimprt mycert.spc mykey.pvk
3. 개인키 비밀번호를 물어보면 비밀번호를 입력한다.
4. [다음]을 누른다.
5. 인증서 종류를 기준으로 인증서 저장소를 자동으로 선택에 체크하고 [다음]을 누른다.
6. [마침]을 누른다.
7. 임포트한 인증서는 IE에서 도구 > 인터넷 옵션 > 내용 > 인증서의 개인탭에서 확인할 수 있다.
(signcode를 실행하려면 인증서의 "발급 대상"을 확인한다.)
8. signcode.exe를 실행한다.
signcode -cn "인증서 발급 대상(CN)" -n "설명" -i "정보 URL" -t http://timestamp.verisign.com/scripts/timstamp.dll "대상 파일"
9. 비밀번호 입력없이 코드사인이 완료된다.
이외에도 "pvkimprt -pfx mycert.spc mykey.pvk"를 실행하거나 IE의 인증서 다이얼로그에서 내보내기를 선택하면 인증서를 pfx파일로 내보내기 할 수 있고 signtool.exe에 다음처럼 코드사인도 가능하다.
signtool sign /f mycomp.pfx /p password /v /d "설명" /du "정보 URL" /t http://timestamp.verisign.com/scripts/timstamp.dll "대상 파일"

잔잔한 파도 :: 코드사인(codesign) 자동화


만약 오류가 발생할경우 http://www.xxeo.com/archives/2004/05/06/whipped-cream-microsoft-authenticode-pvkmprtexeerror-000004c0-and-other-delights.html
참고.

[INOSETUP] 동일한 프로그램이 설치여부 확인하기

function InitializeSetup(): Boolean;
var
Install_Dir: String;
findStr: String;
index: Integer;
ResultInstall: Boolean;
begin
findStr:='\ID';
if RegQueryStringValue(HKEY_CURRENT_USER, 'Software\mgun', 'Install_Dir', Install_Dir) then
begin
  ResultInstall := MsgBox('이미 "' +Install_Dir +'" 동일한 프로그램이 설치되어 있습니다. 설치하시겠습니까?', mbInformation, MB_YESNO) = idYes;
  if ResultInstall = false then
  begin
   exit;            // 설치중지라면 exit
  end;
end
Result := true;
end;