Spec-Zone.ru › Python 3.7

msilib — Чтение и запись файлов Microsoft Installer

Исходный код: Lib/msilib/__init__.py

Модуль msilib поддерживает создание файлов Microsoft Installer (.msi) . Поскольку эти файлы часто содержат вложенный «архив» (.cab), он также предоставляет API для создания CAB-файлов. Поддержка чтения файлов .cab в настоящее время не реализована; чтение базы данных .msi возможно.

Этот пакет призван предоставить полный доступ ко всем таблицам в файле .msi, поэтому это довольно низкоуровневый API. Два основных применения этого пакета — команда distutils bdist_msi, и создание собственного пакета установщика Python (хотя в настоящее время для этого используется другая версия msilib).

Содержание пакета можно условно разделить на четыре части: низкоуровневые CAB-процедуры, низкоуровневые MSI-процедуры, высокоуровневые MSI-процедуры и стандартные структуры таблиц.

msilib.FCICreate(cabname, files)

Создает новый CAB-файл с именем cabname. files должен быть списком кортежей, каждый из которых содержит имя файла на диске и имя файла внутри CAB-файла.

Файлы добавляются в CAB-файл в порядке их появления в списке. Все файлы добавляются в один CAB-файл с использованием алгоритма сжатия MSZIP.

Обратные вызовы в Python для различных этапов создания MSI в настоящее время не доступны.

msilib.UuidCreate()

Возвращает строковое представление нового уникального идентификатора. Это оболочка функций Windows API UuidCreate() и UuidToString().

msilib.OpenDatabase(path, persist)

Возвращает новый объект базы данных, вызывая MsiOpenDatabase. path — имя файла MSI; persist может быть одним из констант MSIDBOPEN_CREATEDIRECT, MSIDBOPEN_CREATE, MSIDBOPEN_DIRECT, MSIDBOPEN_READONLY, или MSIDBOPEN_TRANSACT, и может включать флаг MSIDBOPEN_PATCHFILE. См. документацию Microsoft для значения этих флагов; в зависимости от флагов открывается существующая база данных или создается новая.

msilib.CreateRecord(count)

Возвращает новый объект записи, вызывая MSICreateRecord(). count — количество полей записи.

msilib.init_database(name, schema, ProductName, ProductCode, ProductVersion, Manufacturer)

Создает и возвращает новую базу данных name, инициализирует ее schema и устанавливает свойства ProductName, ProductCode, ProductVersion и Manufacturer.

schema должен быть объектом модуля, содержащим атрибуты tables и _Validation_records; обычно используется msilib.schema.

База данных будет содержать только схему и записи валидации после выполнения этой функции.

msilib.add_data(database, table, records)

Добавляет все records в таблицу с именем table в database.

Аргумент table должен быть одной из предопределенных таблиц в схеме MSI, например, 'Feature', 'File', 'Component', 'Dialog', 'Control', и т. д.

records должен быть списком кортежей, каждый из которых содержит все поля записи в соответствии со схемой таблицы. Для необязательных полей можно передать None.

Значения полей могут быть целыми числами, строками или экземплярами класса Binary.

class msilib.Binary(filename)

Представляет записи в таблице Binary; вставка такого объекта с помощью add_data() считывает файл с именем filename в таблицу.

msilib.add_tables(database, module)

Добавляет все содержимое таблицы из module в database. module должен содержать атрибут tables, перечисляющий все таблицы, для которых необходимо добавить содержимое, и по одному атрибуту на таблицу, содержащий фактическое содержимое.

Обычно используется для установки последовательных таблиц.

msilib.add_stream(database, name, path)

Добавляет файл path в таблицу _Stream в database с именем потока name.

msilib.gen_uuid()

Возвращает новый UUID в формате, обычно используемом MSI (т. е. в фигурных скобках и со всеми шестнадцатеричными цифрами в верхнем регистре).

См. также

FCICreate UuidCreate UuidToString

Объекты базы данных

Database.OpenView(sql)

Возвращает объект представления, вызывая MSIDatabaseOpenView(). sql — SQL-запрос для выполнения.

Database.Commit()

Подтверждает изменения, ожидающие обработки в текущей транзакции, вызывая MSIDatabaseCommit().

Database.GetSummaryInformation(count)

Возвращает новый объект сведений о сводке, вызывая MsiGetSummaryInformation(). count — максимальное количество обновленных значений.

Database.Close()

Закрывает объект базы данных с помощью MsiCloseHandle().

Добавлен в версии 3.7.

См. также

MSIDatabaseOpenView MSIDatabaseCommit MSIGetSummaryInformation MsiCloseHandle

Объекты представления

View.Execute(params)

Выполняет SQL-запрос представления через MSIViewExecute(). Если params не None, это запись, описывающая фактические значения маркеров параметров в запросе.

View.GetColumnInfo(kind)

Возвращает запись, описывающую столбцы представления, вызывая MsiViewGetColumnInfo(). kind может быть либо MSICOLINFO_NAMES, либо MSICOLINFO_TYPES.

View.Fetch()

Возвращает запись результата запроса, вызывая MsiViewFetch().

View.Modify(kind, data)

Изменяет представление, вызывая MsiViewModify(). kind может быть одним из MSIMODIFY_SEEK, MSIMODIFY_REFRESH, MSIMODIFY_INSERT, MSIMODIFY_UPDATE, MSIMODIFY_ASSIGN, MSIMODIFY_REPLACE, MSIMODIFY_MERGE, MSIMODIFY_DELETE, MSIMODIFY_INSERT_TEMPORARY, MSIMODIFY_VALIDATE, MSIMODIFY_VALIDATE_NEW, MSIMODIFY_VALIDATE_FIELD, или MSIMODIFY_VALIDATE_DELETE.

data должна быть записью, описывающей новые данные.

View.Close()

Закрывает представление с помощью MsiViewClose().

См. также

MsiViewExecute MSIViewGetColumnInfo MsiViewFetch MsiViewModify MsiViewClose

Объекты сводной информации

SummaryInformation.GetProperty(field)

Возвращает свойство сводки, используя MsiSummaryInfoGetProperty(). field — имя свойства и может быть одним из констант PID_CODEPAGE, PID_TITLE, PID_SUBJECT, PID_AUTHOR, PID_KEYWORDS, PID_COMMENTS, PID_TEMPLATE, PID_LASTAUTHOR, PID_REVNUMBER, PID_LASTPRINTED, PID_CREATE_DTM, PID_LASTSAVE_DTM, PID_PAGECOUNT, PID_WORDCOUNT, PID_CHARCOUNT, PID_APPNAME, или PID_SECURITY.

SummaryInformation.GetPropertyCount()

Возвращает количество свойств сводки с помощью MsiSummaryInfoGetPropertyCount().

SummaryInformation.SetProperty(field, value)

Устанавливает свойство с помощью MsiSummaryInfoSetProperty(). field может иметь те же значения, что и в GetProperty(), value — новое значение свойства. Возможные типы значений — целое число и строка.

SummaryInformation.Persist()

Записывает измененные свойства в поток сводной информации, используя MsiSummaryInfoPersist().

См. также

MsiSummaryInfoGetProperty MsiSummaryInfoGetPropertyCount MsiSummaryInfoSetProperty MsiSummaryInfoPersist

Объекты записей

Record.GetFieldCount()

Возвращает количество полей записи через MsiRecordGetFieldCount().

Record.GetInteger(field)

Возвращает значение поля field как целое число, где возможно. field должно быть целым числом.

Record.GetString(field)

Возвращает значение поля field как строку, где возможно. field должно быть целым числом.

Record.SetString(field, value)

Устанавливает значение поля field на value через MsiRecordSetString(). field должно быть целым числом; value — строкой.

Record.SetStream(field, value)

Устанавливает значение поля field на содержимое файла с именем value через MsiRecordSetStream(). field должно быть целым числом; value — строкой.

Record.SetInteger(field, value)

Устанавливает значение поля field на value через MsiRecordSetInteger(). И field, и value должны быть целыми числами.

Record.ClearData()

Устанавливает все поля записи в 0 через MsiRecordClearData().

См. также

MsiRecordGetFieldCount MsiRecordSetString MsiRecordSetStream MsiRecordSetInteger MsiRecordClearData

Ошибки

Все обертки функций MSI генерируют MSIError; строка в исключении будет содержать более подробную информацию.

Объекты CAB

class msilib.CAB(name)

Класс CAB представляет собой файл CAB. Во время создания MSI файлы будут добавляться одновременно в таблицу Files и в файл CAB. Затем, после добавления всех файлов, файл CAB может быть записан и добавлен в файл MSI.

name — имя файла CAB в файле MSI.

append(full, file, logical)

Добавляет файл с путем full в файл CAB под именем logical. Если файл с именем logical уже существует, создается новое имя файла.

Возвращает индекс файла в файле CAB и новое имя файла внутри файла CAB.

commit(database)

Генерирует файл CAB, добавляет его как поток в файл MSI, помещает его в таблицу Media и удаляет сгенерированный файл с диска.

Объекты каталогов

class msilib.Directory(database, cab, basedir, physical, logical, default[, componentflags])

Создает новый каталог в таблице каталогов. В любой момент времени для каталога существует текущий компонент, который либо явным образом создаётся с помощью start_component(), либо неявно, когда файлы добавляются в первый раз. Файлы добавляются в текущий компонент и в файл cab. Для создания каталога необходимо указать базовый объект каталога (может быть None), путь к физическому каталогу и имя логического каталога. default задает значение слота DefaultDir в таблице каталогов. componentflags задает значения по умолчанию для новых компонентов.

start_component(component=None, feature=None, flags=None, keyfile=None, uuid=None)

Добавляет запись в таблицу компонентов и делает этот компонент текущим компонентом для этого каталога. Если имя компонента не указано, используется имя каталога. Если feature не указан, используется текущая функция. Если flags не указаны, используются флаги по умолчанию для каталога. Если keyfile не указан, KeyPath в таблице компонентов остается пустым.

add_file(file, src=None, version=None, language=None)

Добавляет файл в текущий компонент каталога, создавая новый, если текущий компонент отсутствует. По умолчанию имя файла в источнике и таблице файлов будет идентичным. Если указан файл src, он интерпретируется относительно текущего каталога. Дополнительно можно указать version и language для записи в таблице файлов.

glob(pattern, exclude=None)

Добавляет список файлов в текущий компонент в соответствии с шаблоном glob. Отдельные файлы можно исключить в списке exclude.

remove_pyc()

Удаляет файлы .pyc при удалении.

См. также

Таблица каталогов Таблица файлов Таблица компонентов Таблица FeatureComponents

Функции

class msilib.Feature(db, id, title, desc, display, level=1, parent=None, directory=None, attributes=0)

Добавляет новую запись в таблицу Feature, используя значения id, parent.id, title, desc, display, level, directory и attributes. Полученный объект функции можно передать в метод start_component() объекта Directory.

set_current()

Делает эту функцию текущей функцией для msilib. Новые компоненты автоматически добавляются в функцию по умолчанию, если функция не указана явно.

См. также

Таблица функций

Классы GUI

msilib предоставляет несколько классов, которые оборачивают таблицы GUI в базе данных MSI. Однако стандартный пользовательский интерфейс не предоставляется; используйте bdist_msi для создания файлов MSI с пользовательским интерфейсом для установки пакетов Python.

class msilib.Control(dlg, name)

Базовый класс элементов управления диалоговым окном. dlg — объект диалогового окна, к которому принадлежит элемент управления, а name — имя элемента управления.

event(event, argument, condition=1, ordering=None)

Создает запись в таблице ControlEvent для этого элемента управления.

mapping(event, attribute)

Создает запись в таблице EventMapping для этого элемента управления.

condition(action, condition)

Создает запись в таблице ControlCondition для этого элемента управления.

class msilib.RadioButtonGroup(dlg, name, property)

Создает элемент управления «радиокнопка» с именем name. property — свойство установщика, которое устанавливается при выборе радиокнопки.

add(name, x, y, width, height, text, value=None)

Добавляет радиокнопку с именем name в группу по координатам x, y, width, height с меткой text. Если value равно None, оно по умолчанию равно name.

END_OF_DOCUMENT_MARKER
class msilib.Dialog(db, name, x, y, w, h, attr, title, first, default, cancel)

Возвращает новый объект Dialog. В таблицу Dialog добавляется запись со значениями указанных координат, атрибутов диалога, заголовка, имени элементов управления «Первая», «По умолчанию» и «Отмена».

control(name, type, x, y, width, height, attributes, property, text, control_next, help)

Возвращает новый объект Control. В таблицу Control добавляется запись с указанными параметрами.

Это универсальный метод; для конкретных типов предоставляются специализированные методы.

text(name, x, y, width, height, attributes, text)

Добавляет и возвращает элемент управления Text.

bitmap(name, x, y, width, height, text)

Добавляет и возвращает элемент управления Bitmap.

line(name, x, y, width, height)

Добавляет и возвращает элемент управления Line.

pushbutton(name, x, y, width, height, attributes, text, next_control)

Добавляет и возвращает элемент управления PushButton.

radiogroup(name, x, y, width, height, attributes, property, text, next_control)

Добавляет и возвращает элемент управления RadioButtonGroup.

checkbox(name, x, y, width, height, attributes, property, text, next_control)

Добавляет и возвращает элемент управления CheckBox.

См. также

Таблица диалогов Таблица элементов управления Типы элементов управления Таблица ControlCondition Таблица ControlEvent Таблица EventMapping Таблица RadioButton

Предвычисленные таблицы

msilib предоставляет несколько подпакетов, содержащих только определения схемы и таблиц. В настоящее время эти определения основаны на версии MSI 2.0.

msilib.schema

Это стандартная схема MSI для MSI 2.0, в которой переменная tables содержит список определений таблиц, а _Validation_records содержит данные для проверки MSI.

msilib.sequence

Этот модуль содержит содержимое таблиц стандартной последовательности: AdminExecuteSequence, AdminUISequence, AdvtExecuteSequence, InstallExecuteSequence и InstallUISequence.

msilib.text

Этот модуль содержит определения таблиц UIText и ActionText для стандартных действий установщика.

© 2001–2020 Python Software Foundation
Licensed under the PSF License.
https://docs.python.org/3.7/library/msilib.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API