윈도우 프로젝트 필수 유틸리티 추가 팁

저작권 안내
  • 책 또는 웹사이트의 내용을 복제하여 다른 곳에 게시하는 것을 금지합니다.
  • 책 또는 웹사이트의 내용을 발췌, 요약하여 강의 자료, 발표 자료, 블로그 포스팅 등으로 만드는 것을 금지합니다.

윈도우 프로젝트 필수 유틸리티 추가 팁

목차

디지털 서명 자동화 하기

CruiseControl.NET으로 디지털 서명을 자동화 하는 방법입니다. WDK 6001의 signtool.exe를 사용하면 일일이 비밀번호를 입력하지 않아도 디지털 서명을 할 수 있습니다.

signtool.exe에서 사용되는 인증서는 PFX 형식의 인증서입니다. SPC, PVK 형태의 인증서를 가지고 있다면 pvk2pfx.exe를 사용하여 PFX 형식으로 변환하여야 합니다.

C:\WinDDK\6001\bin\SelfSign\pvk2pfx.exe -pvk hello.pvk -spc hello.spc -pfx hello.pfx

위와 같이 pvk2pfx.exe를 실행하면 인증서의 비밀번호를 입력하는 창이 나옵니다. 인증서의 비밀번호를 입력하면 PFX 형태의 인증서가 만들어집니다.

<!-- 디지털 서명 -->
<exec>
    <executable>signtool.exe</executable>
    <baseDirectory>C:\WinDDK\6001\bin\SelfSign</baseDirectory>
    <buildArgs>sign /f C:\Cert\hello.pfx
        /p 인증서 암호
        /t http://timestamp.verisign.com/scripts/timestamp.dll
        C:\build\hello\Release\hello.exe</buildArgs>
</exec>

또는 PFX 형태의 인증서를 컴퓨터에 설치하였다면

<!-- 디지털 서명 -->
<exec>
    <executable>signtool.exe</executable>
    <baseDirectory>C:\WinDDK\6001\bin\SelfSign</baseDirectory>
    <buildArgs>sign /v /s my /n "Hello Co., Ltd."
        /t http://timestamp.verisign.com/scripts/timestamp.dll
        C:\build\hello\Release\hello.exe</buildArgs>
</exec>

64비트 커널 모드 드라이버라면

<!-- 디지털 서명 -->
<exec>
    <executable>signtool.exe</executable>
    <baseDirectory>C:\WinDDK\6001\bin\SelfSign</baseDirectory>
    <buildArgs>sign /v /ac MSCV-VSClass3.cer
        /s my /n "Hello Co., Ltd."
        /t http://timestamp.verisign.com/scripts/timestamp.dll
        C:\build\hello\Release\hello.exe</buildArgs>
</exec>

MSCV-VSClass3.cer는 베리사인용 Cross-Certificate입니다. 이것은 Microsoft Cross-Certificates for Windows Vista Kernel Mode Code Signing에서 각자 인증서 회사에 맞는 것을 받아서 사용합니다.

커밋 되었을 때 빌드 하기

Subversion에 소스를 커밋하였을 때 빌드하는 방법입니다. 아래 예제는 1초마다 소스가 수정(커밋)되었는지 확인한 뒤 수정되었다면 빌드합니다.

<triggers>
    <intervalTrigger name="commit" 
        seconds="1" buildCondition="IfModificationExists"/>
</triggers>

seconds의 1은 1초마다 소스가 수정되었는지 확인하는 것입니다. 이 숫자는 각자의 상황에 맞게 수정하여 사용하면 됩니다(예제와 같은 intervalTrigger를 사용하는 프로젝트가 많고, 주기가 짧을 수록 서버에 부하가 심해지므로 적당히 조절할 필요가 있습니다).

buildCondition에는 IfModificationExists를 설정하여 소스가 수정되었을 때 빌드하도록 합니다. ForceBuild를 설정하면 소스의 수정(커밋)여부와 관계없이 무조건 빌드하게 됩니다.

2010년 이후 PowerShell 스크립트 설정

현재 책에 포함된 PowerShell 스크립트는 전체 연도를 만들어내기 위해 9.12.31 형태의 날짜의 앞에 200 숫자를 붙입니다. 이렇게 하여 2009.12.31.1과 같은 날짜 형식의 버전이 생성됩니다.

2010년 이후에는 10.1.4와 같이 되기 때문에 날짜의 앞에 200이 아닌 20을 붙여야 2010.1.4.1과 같은 날짜 형식의 버전을 생성할 수 있습니다.

P.420 "날짜를 버전으로 사용하기"

rcversion-date.ps1

    $full_date = "20"+$date+"."

...

$year = "20"+(get-date -format %y)

...
tracversion-date.ps1
...

    $full_date = "20"+$date+"."

...

$version_string = "20"+$date+"."+$next_version

...

하지만 이 방법은 2099년 까지 밖에 사용할 수 없으니 2100년 이후에도 사용할 수 있게 하고 싶은 분들은 아래와 같이 수정하면 연도 변화와 관계 없이 사용할 수 있습니다(그때까지 이 스크립트가 남아있을지는 의문이지만).

rcversion-date.ps1 rcversion-date.ps1

...

$date = (get-date -uformat %Y)+"."+(get-date -format %M.%d)

...

    $full_date = $date+"."

...

$year = get-date -uformat %Y

...

tracversion-date.ps1 tracversion-date.ps1

...

$date = (get-date -uformat %Y)+"."+(get-date -format %M.%d)

...

    $full_date = $date+"."

...

$version_string = $date+"."+$next_version

...

저작권 안내

이 웹사이트에 게시된 모든 글의 무단 복제 및 도용을 금지합니다.
  • 블로그, 게시판 등에 퍼가는 것을 금지합니다.
  • 비공개 포스트에 퍼가는 것을 금지합니다.
  • 글 내용, 그림을 발췌 및 요약하는 것을 금지합니다.
  • 링크 및 SNS 공유는 허용합니다.