Spec-Zone.ru › Python 3.6

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

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

Database.OpenView(sql)

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

Database.Commit()

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

Database.GetSummaryInformation(count)

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

См. также

MSIDatabaseOpenView MSIDatabaseCommit MSIGetSummaryInformation

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

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

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

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

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

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

34.1.5. Ошибки

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

34.1.6. Объекты 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 и удаляет сгенерированный файл с диска.

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

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

34.1.8. Функции

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. Новые компоненты автоматически добавляются к функции по умолчанию, если явно не указана функция.

См. также

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

34.1.9. Классы 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.

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.

См. также

Таблица диалогов Таблица элементов управления Типы элементов управления Таблица условий элементов управления Таблица событий элементов управления Таблица сопоставления событий Таблица элементов радиокнопок

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

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.6/library/msilib.html

Spec-Zone.ru

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