Включение файла шкафа в установку
В этом разделе описывается, в том числе файлы шкафов в установках. Дополнительные сведения см. в разделе "Использование шкафов и сжатых источников".
Включение файла шкафа в пакет установки
- Используйте средство создания шкафа для сжатия исходных файлов в файл шкафа. См . файлы кабинетов.
- Файл шкафа должен находиться в потоке данных внутри файла .msi или в отдельном файле шкафа, расположенном в корне исходного дерева, заданном таблицей каталогов.
- Определите, должен ли источник быть сжатым типом или смешанным типом, который содержит как несжатые, так и сжатые файлы. См . сжатые и несжатые источники. В зависимости от типа исходного изображения задайте сжатые или несжатые биты флага свойства сводки word Count.
- Добавьте запись в таблицу "Файл" для каждого из файлов в шкафу. Введите ключ файла в столбце "Файл", который точно соответствует ключу файла в кабинете. Ключи файлов чувствительны к регистру. Последовательность установки файлов в таблице "Файл" и шкафу также должна быть одинаковой. Последовательность файлов указывается порядковым номером в столбце последовательности. Чтобы прибыть к номеру последовательности для первого файла в кабинете, выполните указанные ниже действия. Найдите имеющуюся запись в таблице мультимедиа с наибольшим значением в столбце DiskID. Поле LastSequence этой записи предоставляет последний номер последовательности файлов, используемый на носителе. В таблице "Файл" назначьте первый файл нового кабинета порядковым номером, который больше этого. Назначьте номера последовательности всем остальным файлам в том же порядке, что и в файле кабинета. Описание оставшихся полей записи см . в таблице "Файл".
- Добавьте запись в таблицу мультимедиа для шкафа. Укажите значение в поле DiskID этой новой записи, которая больше, чем наибольшее значение DiskID, уже существующее в таблице. Введите имя шкафа в поле "Кабинет". Это имя должно быть в виде типа данных Кабинета . Префикс имени с знаком "#", если кабинет является потоком данных, хранящимся в файле .msi. Обратите внимание, что если кабинет является потоком данных, имя шкафа учитывает регистр. Если кабинет является отдельным файлом, имя файла не учитывает регистр.
- Определите наибольшее число последовательности файлов в новом кабинете, проверив столбец последовательности обновленной таблицы файлов. Введите значение, большее, чем это, в поле LastSequence новой записи таблицы Media. Описание оставшихся полей записи см . в таблице мультимедиа.
- Файл шкафа можно хранить в пакете установки с помощью средства, например Msidb.exe или с помощью функций базы данных установщика. В следующих четырех шагах объясняется, как добавить кабинет из программы с помощью функций базы данных.
- Чтобы добавить шкаф в пакет установки из программы, откройте представление в таблице _Streams базы данных с помощью MsiDatabaseOpenView.
- Используйте MsiRecordSetString, чтобы задать столбец Name таблицы _Streams имя, отображаемое в столбце "Кабинет" таблицы мультимедиа. Опустить знак номера: #.
- Используйте MsiRecordSetStream , чтобы задать столбец данных таблицы _Streams данным кабинета.
- Используйте MsiViewModify для обновления записи в таблице _Streams.
- Чтобы использовать Msidb.exe для добавления файла шкафа Mycab.cab в пакет установки с именем Mydatabase.msi, используйте следующую командную строку: Msidb.exe -d mydatabase.msi -a -a mycab.cab. В этом случае столбец "Кабинет" таблицы мультимедиа должен содержать строку: #mycab.cab.