다음을 통해 공유


설치에 캐비닛 파일 포함

이 섹션에서는 설치에 캐비닛 파일을 포함하는 방법을 설명합니다. 자세한 내용은 캐비닛 및 압축된 원본 사용을 참조하세요.

설치 패키지에 캐비닛 파일을 포함하려면

  1. 캐비닛 만들기 도구를 사용하여 원본 파일을 캐비닛 파일로 압축합니다. 캐비닛 파일을 참조하세요.
  2. 캐비닛 파일은 .msi 파일 내의 데이터 스트림 또는 Directory 테이블에 지정된 원본 트리의 루트에 있는 별도의 캐비닛 파일에 있어야 합니다.
  3. 원본이 압축된 형식인지 또는 압축되지 않은 파일과 압축된 파일이 모두 있는 혼합 형식인지 확인합니다. 압축된 원본과 압축되지 않은 원본을 참조하세요. 원본 이미지의 유형에 따라 단어 수 요약 속성의 압축됨 또는 압축되지 않음 플래그 비트를 설정합니다.
  4. 캐비닛의 각 파일에 대해 File 테이블에 레코드를 추가합니다. 캐비닛에 있는 파일의 파일 키와 정확히 일치하는 파일 키를 File 열에 입력합니다. 파일 키는 대/소문자를 구분합니다. File 테이블과 캐비닛의 파일 설치 시퀀스도 동일해야 합니다. 파일 시퀀스는 Sequence 열의 시퀀스 번호로 지정됩니다. 캐비닛에서 첫 번째 파일의 시퀀스 번호에 도달하려면 다음을 수행합니다. DiskID 열에서 가장 큰 값을 갖는 기존 레코드를 Media 테이블에서 찾습니다. 이 레코드의 LastSequence 필드는 미디어에 사용된 마지막 파일 시퀀스 번호를 제공합니다. File 테이블에서 새 캐비닛의 첫 번째 파일에 이보다 큰 시퀀스 번호를 할당합니다. 캐비닛 파일과 동일한 순서로 나머지 모든 파일에 시퀀스 번호를 할당합니다. 나머지 레코드 필드에 대한 설명은 File 테이블을 참조하세요.
  5. 캐비닛의 Media 테이블에 레코드를 추가합니다. 테이블에 이미 있는 가장 큰 DiskID 값보다 큰 값을 이 새 레코드의 DiskID 필드에 지정합니다. 캐비닛의 이름을 Cabinet 필드에 넣습니다. 이 이름은 캐비닛 데이터 형식이어야 합니다. 캐비닛이 .msi 파일에 저장된 데이터 스트림인 경우 이름 앞에 숫자 기호 "#"을 접두사로 지정합니다. 캐비닛이 데이터 스트림인 경우 캐비닛 이름은 대/소문자를 구분합니다. 캐비닛이 개별 파일인 경우 파일 이름은 대/소문자를 구분하지 않습니다.
  6. 업데이트된 File 테이블의 Sequence 열을 확인하여 새 캐비닛에서 가장 큰 파일 시퀀스 번호를 확인합니다. 이 값보다 큰 값을 Media 테이블의 새 레코드의 LastSequence 필드에 입력합니다. 나머지 레코드 필드에 대한 설명은 Media 테이블을 참조하세요.
  7. Msidb.exe와 같은 도구를 사용하거나 설치 관리자의 데이터베이스 함수를 사용하여 설치 패키지에 캐비닛 파일을 저장할 수 있습니다. 다음 네 단계에서는 데이터베이스 함수를 사용하여 프로그램에서 캐비닛을 추가하는 방법을 설명합니다.
  8. 프로그램의 설치 패키지에 캐비닛을 추가하려면 MsiDatabaseOpenView를 사용하여 데이터베이스의 _Streams 테이블에서 보기를 엽니다.
  9. MsiRecordSetString을 사용하여 _Streams 테이블의 Name 열을 Media 테이블의 Cabinet 열에 표시되는 이름으로 설정합니다. 숫자 기호 #은 생략합니다.
  10. MsiRecordSetStream을 사용하여 _Streams 테이블의 Data 열을 캐비닛의 데이터로 설정합니다.
  11. MsiViewModify를 사용하여 _Streams 테이블의 레코드를 업데이트합니다.
  12. Msidb.exe를 사용하여 Mydatabase.msi라는 설치 패키지에 Mycab.cab 캐비닛 파일을 추가하려면 Msidb.exe -d mydatabase.msi -a mycab.cab 명령줄을 사용합니다. 이 경우 Media 테이블의 Cabinet 열에는 #mycab.cab 문자열이 포함되어야 합니다.