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