패치가 원래 설치 원본에 대한 액세스 권한을 요구하지 않도록 방지

패치를 적용하려면 원래 설치 원본에 액세스해야 하는 상황을 모두 제거할 수는 없습니다.

패치가 원래 원본에 액세스해야 할 가능성을 최소화하려면 다음 사항을 준수합니다.

  • 전체 파일 전용 패치를 사용합니다. 이렇게 하면 이전에 릴리스된 모든 버전의 파일에 대해 이진 패치를 만들 필요가 없습니다. 전체 파일 패치는 일반적으로 이진 패치보다 크기가 큽니다. PCP(패치 만들기 속성) 파일에서 값이 1인 IncludeWholeFilesOnly 속성을 작성하여 패치를 전체 파일 패치로 쉽게 설정할 수 있습니다.
  • 원래 원본 위치에 액세스하는 사용자 지정 작업이 없도록 합니다.
  • ResolveSource 작업이 조건부로 지정되어 필요한 경우에만 실행되거나 전혀 없도록 합니다.
  • 확인되지 않은 모든 파일에 대해 MsiFileHash 테이블을 채웁니다. Windows Installer SDK 도구인 Msifiler.exe는 쉽게 이 작업을 수행할 수 있습니다.
  • 모든 파일에 올바른 버전 및 언어 정보가 있는지 확인합니다. Windows Installer SDK 도구인 Msifiler.exe는 쉽게 이 작업을 수행할 수 있습니다.

패치 시 원본 요구 사항

다음 경우에 패치를 적용하려면 원래 설치 원본에 액세스해야 할 수 있습니다.

  • 패치는 현재 원본에서 실행되는 기능에 적용됩니다. 이 경우 기능은 원본에서 실행 상태로부터 로컬 상태로 전환됩니다.

  • 패치는 누락되거나 손상된 파일이 있는 구성 요소에 적용됩니다.

  • 패치는 MsiFileHash 항목이 없는 버전이 지정되지 않은 파일도 포함하는 구성 요소의 파일에 적용됩니다. 원본 위치에서 버전이 지정되지 않은 파일을 불필요하게 다시 복사하지 않도록 하려면 채워진 MsiFileHash 테이블이 필요합니다.

  • 패치는 amus 또는 emus의 REINSTALLMODE로 적용되었습니다. 이 옵션은 파일 버전에 관계없이 파일 복사 작업을 수행한다는 측면에서 위험합니다. 이로 인해 파일의 다운-레빙(down-reving)이 발생할 수 있으며 거의 항상 원본이 필요합니다. 권장되는 REINSTALLMODE 값은 omus입니다.

  • 제품에 대해 캐시된 패키지가 없습니다. 패치를 적용하려면 캐시된 패키지가 필요합니다. 캐시된 패키지는 %windir%\Installer 폴더에 저장됩니다.

  • ResolveSource 작업을 호출하기 위해 패키지가 작성됩니다. 이 작업은 일반적으로 해당 실행으로 인해 항상 원본에 액세스할 수 있으므로 적절하게 피하거나 조건을 지정해야 합니다.

  • 패키지에는 모종의 방식으로 소스에 액세스하려고 시도하는 사용자 지정 작업이 있습니다. 가장 일반적인 예는 형식 23 동시 설치 사용자 지정 작업입니다.

    참고

    동시 설치는 일반에 릴리스할 애플리케이션을 설치하는 데 권장되지 않습니다. 동시 설치에 대한 자세한 내용은 동시 설치를 참조하세요.

     

  • 패치 패키지는 컴퓨터에서 파일의 현재 버전에 적용되지 않는 이진 패치로 구성됩니다.

패치를 적용할 때 Windows Installer가 원래 원본에 액세스해야 하는 다음 샘플을 생각해보겠습니다.

  1. 제품 샘플의 RTM 버전을 설치합니다.
  2. 컴퓨터에 Qfe1.msp 패치를 적용합니다. 이는 Example.dll 의 1.0 버전을 1.1 버전으로 패치합니다.
  3. 새로운 패치인 Qfe2.msp가 제공되어 Example.dll을 버전 1.2로 업데이트하고 Qfe1.msp는 사용되지 않습니다. 그러나 패치는 제품의 RTM 버전을 사용하여 생성되었기 때문에 Example.dll의 버전 1.0을 대상으로만 만들어졌습니다. Example.dll 버전 1.2에는 Example.dll 버전 1.1에 포함된 수정 사항이 포함되어 있지만 RTM과 QFE2 이미지 간에 .msp 파일이 생성되었습니다. 따라서 Qfe2.msp가 컴퓨터에 적용되면 Windows Installer가 원래 원본에 액세스해야 합니다. Example.dll에 대한 이진 패치는 버전 1.1에 적용할 수 없고, 버전 1.0에만 적용할 수 있습니다. 이렇게 되면 패치를 성공적으로 적용할 수 있도록 설치 관리자는 원래 원본 위치에서 Example.dll의 1.0 버전을 다시 복사하게 됩니다.

패치를 제거할 때의 원본 요구 사항

Windows Installer가 패치에 대한 기준 정보를 저장하지 않은 경우 패치를 제거하려면 원래 설치 원본에 액세스해야 할 수 있습니다. Windows Installer 3.0부터 설치 관리자는 업데이트할 때 파일에 대한 기준 정보를 선택적으로 저장합니다. 기준 캐시에 대한 자세한 내용은 패치 크기 감소를 참조하세요.