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