다음을 통해 공유


기호를 사용하여 이진 패치 크기 줄이기

대상에 공용 기호를 사용하고 이미지 이진 파일을 업그레이드하면 이진 패치 크기를 약 절반으로 줄일 수 있습니다. 실제 감소는 사용되는 기호에 따라 달라집니다. 기호를 사용하면 기호 파일을 처리하는 데 시간이 오래 걸리기 때문에 패치 생성 시간이 느려질 수 있습니다.

기호를 사용하여 이진 패치의 크기를 줄이려면 대상 및 업그레이드 이미지 이진 파일 모두에 대한 기호를 제공해야 합니다. TargetImages 테이블의 SymbolPaths 열과 UpgradedImages 테이블의 SymbolPaths 열에 기호를 지정합니다. Microsoft Visual C++를 사용하여 PDB(프로그램 데이터베이스) 파일 형식으로 기호를 생성해야 합니다. 최신 버전의 Microsoft Visual C++는 PDB 파일에 필요한 모든 정보를 제공합니다. 이전 버전의 Microsoft Visual C++에서는 DBG(디버그) 파일 형식도 생성합니다. 이 경우 SymbolsPaths 값은 PDB 및 DBG 파일의 위치를 모두 지정해야 합니다.

예를 들어 패치의 TargetImage는 Windows 2000과 함께 제공되고 1.1.1029.0 버전의 MSI.DLL을 설치하는 설치 패키지일 수 있습니다. UpgradedImage는 Windows 2000 SP1(서비스 팩 1)과 함께 제공되고 1.11.1314.0 버전의 MSI.DLL을 설치하는 업데이트된 설치 패키지일 수 있습니다. 두 개의 PCP(패치 만들기 속성) 파일을 만들어야 합니다. 하나는 TargetImages 테이블과 UpgradedImages 테이블의 SymbolPaths 열이 모두 NULL(비어 있음)이고 다른 하나는 TargetImages 및 UpgradedImages 테이블의 SymbolPaths 열이 이진 파일의 기호 위치로 채워져 있는 파일입니다. 이 경우 기호를 사용하지 않고 생성된 패치의 크기는 기호를 사용하여 생성된 패치 크기의 약 3배가 될 수 있습니다.

Mpatch.exe 유틸리티를 사용하여 단일 파일에 대한 이진 패치 생성을 테스트하고 기호가 유효한지 여부를 확인할 수 있습니다. Mpatch.exe 유틸리티는 Windows Installer Developers용 Windows SDK 구성 요소에 포함되어 있습니다. Mpatch.exe 출력은 기호가 일치하지 않는지 여부를 나타냅니다.

예를 들어 다음 명령줄을 입력하여 기호가 유효한지 여부를 확인합니다.

mpatch.exe -NEWSYMPATH:d:\update -OLDSYMPATH:d:\target d:\target\example.dll d:\update\example.dll example.pat

기호가 올바른 위치에 있지 않으면 Mpatch.exe 출력에 다음 경고가 포함될 수 있습니다.

WARNING: no debug symbols for d:\update\example.dll