msilib
— Чтение и запись файлов установщика Microsoft¶
Исходный код: Lib/msilib/__init__.py
msilib
поддерживает создание файлов Microsoft Installer (.msi
).
Поскольку эти файлы часто содержат встроенный CAB-файл (.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
. Значение этих флагов см. в документации корпорации майкрософт; в зависимости от флагов открывается существующая база данных или создается новая база данных.
-
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)¶ Представляет записи в двоичной таблице; вставка такого объекта с помощью команды
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 (т.е. в фигурных фигурных скобках и со всеми шестизначными цифрами в верхнем регистре).
См.также
Объекты базы данных¶
-
Database.
OpenView
(sql)¶ Возвращает объекта представления путем вызова метода
MSIDatabaseOpenView()
. sql - SQL инструкция для выполнения.
-
Database.
Commit
()¶ Зафиксируйте изменения, ожидающие выполнения в текущей транзакции, путем вызова метода
MSIDatabaseCommit()
.
-
Database.
GetSummaryInformation
(count)¶ Возвращает новый объект сводной информации путем вызова метода
MsiGetSummaryInformation()
. count - максимальное количество обновленных значения.
-
Database.
Close
()¶ Закрыть объект базы данных через
MsiCloseHandle()
.Добавлено в версии 3.7.
Объекты представления¶
-
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()
.
Итоговые информационные объекты¶
-
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()
.
Рекордные объекты¶
-
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()
.
Ошибки¶
Все обертки вокруг функций 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
и удалите сгенерированный файл с диска.
-
Объекты Directory¶
-
class
msilib.
Directory
(database, cab, basedir, physical, logical, default[, componentflags])¶ Создать новый каталог в таблице каталогов (Directory). Существует текущий компонент в каждый момент времени для каталога, который либо явно создается через
start_component()
, либо неявно при первом добавлении файлов. Файлы добавляются в текущий компонент и в CAB-файл. Для создания каталога необходимо указать объект базового каталога (может бытьNone
), путь к физическому каталогу и логическое имя каталога. default указывает слот DefoteDir в таблице каталогов. componentflags задает флаги по умолчанию, которые получают новые компоненты.-
start_component
(component=None, feature=None, flags=None, keyfile=None, uuid=None)¶ Добавить запись в таблицу Component и сделайте этот компонент текущим компонентом для этой папки. Если имя компонента не задано, имя каталога равно используемый. Если № feature дан, текущая особенность - используемый. Если flags не заданы, флаги каталога по умолчанию являются используемый. Если № keyfile дан, KeyPath оставляют пустым во входящем в комплект столе.
-
add_file
(file, src=None, version=None, language=None)¶ Добавить файл в текущий компонент каталога, начав новый, если нет текущего компонента. По умолчанию имя файла в исходном файле и таблице файлов будет идентичным. Если указан файл src, он интерпретируется относительно текущего каталога. При необходимости для записи в таблице файл (File) можно указать version и language.
-
glob
(pattern, exclude=None)¶ Добавить список файлов к текущему компоненту, как определено в образце шарика. Отдельные файлы могут быть исключены из списка exclude.
-
remove_pyc
()¶ Удалить файлы
.pyc
при удалении.
-
Особенности¶
-
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
.
См.также
Классы графический интерфейса пользователя¶
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
.
-
radiogroup
(name, x, y, width, height, attributes, property, text, next_control)¶ Добавление и возвращает элемента управления
RadioButtonGroup
.
-
checkbox
(name, x, y, width, height, attributes, property, text, next_control)¶ Добавление и возвращает элемента управления
CheckBox
.
-
Предварительно вычисленные таблицы¶
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, для стандартных действий установщика.