17db96d56Sopenharmony_ci:mod:`msilib` --- Read and write Microsoft Installer files 27db96d56Sopenharmony_ci========================================================== 37db96d56Sopenharmony_ci 47db96d56Sopenharmony_ci.. module:: msilib 57db96d56Sopenharmony_ci :platform: Windows 67db96d56Sopenharmony_ci :synopsis: Creation of Microsoft Installer files, and CAB files. 77db96d56Sopenharmony_ci :deprecated: 87db96d56Sopenharmony_ci 97db96d56Sopenharmony_ci.. moduleauthor:: Martin v. Löwis <martin@v.loewis.de> 107db96d56Sopenharmony_ci.. sectionauthor:: Martin v. Löwis <martin@v.loewis.de> 117db96d56Sopenharmony_ci 127db96d56Sopenharmony_ci**Source code:** :source:`Lib/msilib/__init__.py` 137db96d56Sopenharmony_ci 147db96d56Sopenharmony_ci.. index:: single: msi 157db96d56Sopenharmony_ci 167db96d56Sopenharmony_ci.. deprecated-removed:: 3.11 3.13 177db96d56Sopenharmony_ci The :mod:`msilib` module is deprecated 187db96d56Sopenharmony_ci (see :pep:`PEP 594 <594#msilib>` for details). 197db96d56Sopenharmony_ci 207db96d56Sopenharmony_ci-------------- 217db96d56Sopenharmony_ci 227db96d56Sopenharmony_ciThe :mod:`msilib` supports the creation of Microsoft Installer (``.msi``) files. 237db96d56Sopenharmony_ciBecause these files often contain an embedded "cabinet" file (``.cab``), it also 247db96d56Sopenharmony_ciexposes an API to create CAB files. Support for reading ``.cab`` files is 257db96d56Sopenharmony_cicurrently not implemented; read support for the ``.msi`` database is possible. 267db96d56Sopenharmony_ci 277db96d56Sopenharmony_ciThis package aims to provide complete access to all tables in an ``.msi`` file, 287db96d56Sopenharmony_citherefore, it is a fairly low-level API. One primary application of this 297db96d56Sopenharmony_cipackage is the creation of Python installer package itself (although that currently 307db96d56Sopenharmony_ciuses a different version of ``msilib``). 317db96d56Sopenharmony_ci 327db96d56Sopenharmony_ciThe package contents can be roughly split into four parts: low-level CAB 337db96d56Sopenharmony_ciroutines, low-level MSI routines, higher-level MSI routines, and standard table 347db96d56Sopenharmony_cistructures. 357db96d56Sopenharmony_ci 367db96d56Sopenharmony_ci 377db96d56Sopenharmony_ci.. function:: FCICreate(cabname, files) 387db96d56Sopenharmony_ci 397db96d56Sopenharmony_ci Create a new CAB file named *cabname*. *files* must be a list of tuples, each 407db96d56Sopenharmony_ci containing the name of the file on disk, and the name of the file inside the CAB 417db96d56Sopenharmony_ci file. 427db96d56Sopenharmony_ci 437db96d56Sopenharmony_ci The files are added to the CAB file in the order they appear in the list. All 447db96d56Sopenharmony_ci files are added into a single CAB file, using the MSZIP compression algorithm. 457db96d56Sopenharmony_ci 467db96d56Sopenharmony_ci Callbacks to Python for the various steps of MSI creation are currently not 477db96d56Sopenharmony_ci exposed. 487db96d56Sopenharmony_ci 497db96d56Sopenharmony_ci 507db96d56Sopenharmony_ci.. function:: UuidCreate() 517db96d56Sopenharmony_ci 527db96d56Sopenharmony_ci Return the string representation of a new unique identifier. This wraps the 537db96d56Sopenharmony_ci Windows API functions :c:func:`UuidCreate` and :c:func:`UuidToString`. 547db96d56Sopenharmony_ci 557db96d56Sopenharmony_ci 567db96d56Sopenharmony_ci.. function:: OpenDatabase(path, persist) 577db96d56Sopenharmony_ci 587db96d56Sopenharmony_ci Return a new database object by calling MsiOpenDatabase. *path* is the file 597db96d56Sopenharmony_ci name of the MSI file; *persist* can be one of the constants 607db96d56Sopenharmony_ci ``MSIDBOPEN_CREATEDIRECT``, ``MSIDBOPEN_CREATE``, ``MSIDBOPEN_DIRECT``, 617db96d56Sopenharmony_ci ``MSIDBOPEN_READONLY``, or ``MSIDBOPEN_TRANSACT``, and may include the flag 627db96d56Sopenharmony_ci ``MSIDBOPEN_PATCHFILE``. See the Microsoft documentation for the meaning of 637db96d56Sopenharmony_ci these flags; depending on the flags, an existing database is opened, or a new 647db96d56Sopenharmony_ci one created. 657db96d56Sopenharmony_ci 667db96d56Sopenharmony_ci 677db96d56Sopenharmony_ci.. function:: CreateRecord(count) 687db96d56Sopenharmony_ci 697db96d56Sopenharmony_ci Return a new record object by calling :c:func:`MSICreateRecord`. *count* is the 707db96d56Sopenharmony_ci number of fields of the record. 717db96d56Sopenharmony_ci 727db96d56Sopenharmony_ci 737db96d56Sopenharmony_ci.. function:: init_database(name, schema, ProductName, ProductCode, ProductVersion, Manufacturer) 747db96d56Sopenharmony_ci 757db96d56Sopenharmony_ci Create and return a new database *name*, initialize it with *schema*, and set 767db96d56Sopenharmony_ci the properties *ProductName*, *ProductCode*, *ProductVersion*, and 777db96d56Sopenharmony_ci *Manufacturer*. 787db96d56Sopenharmony_ci 797db96d56Sopenharmony_ci *schema* must be a module object containing ``tables`` and 807db96d56Sopenharmony_ci ``_Validation_records`` attributes; typically, :mod:`msilib.schema` should be 817db96d56Sopenharmony_ci used. 827db96d56Sopenharmony_ci 837db96d56Sopenharmony_ci The database will contain just the schema and the validation records when this 847db96d56Sopenharmony_ci function returns. 857db96d56Sopenharmony_ci 867db96d56Sopenharmony_ci 877db96d56Sopenharmony_ci.. function:: add_data(database, table, records) 887db96d56Sopenharmony_ci 897db96d56Sopenharmony_ci Add all *records* to the table named *table* in *database*. 907db96d56Sopenharmony_ci 917db96d56Sopenharmony_ci The *table* argument must be one of the predefined tables in the MSI schema, 927db96d56Sopenharmony_ci e.g. ``'Feature'``, ``'File'``, ``'Component'``, ``'Dialog'``, ``'Control'``, 937db96d56Sopenharmony_ci etc. 947db96d56Sopenharmony_ci 957db96d56Sopenharmony_ci *records* should be a list of tuples, each one containing all fields of a 967db96d56Sopenharmony_ci record according to the schema of the table. For optional fields, 977db96d56Sopenharmony_ci ``None`` can be passed. 987db96d56Sopenharmony_ci 997db96d56Sopenharmony_ci Field values can be ints, strings, or instances of the Binary class. 1007db96d56Sopenharmony_ci 1017db96d56Sopenharmony_ci 1027db96d56Sopenharmony_ci.. class:: Binary(filename) 1037db96d56Sopenharmony_ci 1047db96d56Sopenharmony_ci Represents entries in the Binary table; inserting such an object using 1057db96d56Sopenharmony_ci :func:`add_data` reads the file named *filename* into the table. 1067db96d56Sopenharmony_ci 1077db96d56Sopenharmony_ci 1087db96d56Sopenharmony_ci.. function:: add_tables(database, module) 1097db96d56Sopenharmony_ci 1107db96d56Sopenharmony_ci Add all table content from *module* to *database*. *module* must contain an 1117db96d56Sopenharmony_ci attribute *tables* listing all tables for which content should be added, and one 1127db96d56Sopenharmony_ci attribute per table that has the actual content. 1137db96d56Sopenharmony_ci 1147db96d56Sopenharmony_ci This is typically used to install the sequence tables. 1157db96d56Sopenharmony_ci 1167db96d56Sopenharmony_ci 1177db96d56Sopenharmony_ci.. function:: add_stream(database, name, path) 1187db96d56Sopenharmony_ci 1197db96d56Sopenharmony_ci Add the file *path* into the ``_Stream`` table of *database*, with the stream 1207db96d56Sopenharmony_ci name *name*. 1217db96d56Sopenharmony_ci 1227db96d56Sopenharmony_ci 1237db96d56Sopenharmony_ci.. function:: gen_uuid() 1247db96d56Sopenharmony_ci 1257db96d56Sopenharmony_ci Return a new UUID, in the format that MSI typically requires (i.e. in curly 1267db96d56Sopenharmony_ci braces, and with all hexdigits in uppercase). 1277db96d56Sopenharmony_ci 1287db96d56Sopenharmony_ci 1297db96d56Sopenharmony_ci.. seealso:: 1307db96d56Sopenharmony_ci 1317db96d56Sopenharmony_ci `FCICreate <https://msdn.microsoft.com/en-us/library/bb432265.aspx>`_ 1327db96d56Sopenharmony_ci `UuidCreate <https://msdn.microsoft.com/en-us/library/windows/desktop/aa379205.aspx>`_ 1337db96d56Sopenharmony_ci `UuidToString <https://msdn.microsoft.com/en-us/library/windows/desktop/aa379352.aspx>`_ 1347db96d56Sopenharmony_ci 1357db96d56Sopenharmony_ci.. _database-objects: 1367db96d56Sopenharmony_ci 1377db96d56Sopenharmony_ciDatabase Objects 1387db96d56Sopenharmony_ci---------------- 1397db96d56Sopenharmony_ci 1407db96d56Sopenharmony_ci 1417db96d56Sopenharmony_ci.. method:: Database.OpenView(sql) 1427db96d56Sopenharmony_ci 1437db96d56Sopenharmony_ci Return a view object, by calling :c:func:`MSIDatabaseOpenView`. *sql* is the SQL 1447db96d56Sopenharmony_ci statement to execute. 1457db96d56Sopenharmony_ci 1467db96d56Sopenharmony_ci 1477db96d56Sopenharmony_ci.. method:: Database.Commit() 1487db96d56Sopenharmony_ci 1497db96d56Sopenharmony_ci Commit the changes pending in the current transaction, by calling 1507db96d56Sopenharmony_ci :c:func:`MSIDatabaseCommit`. 1517db96d56Sopenharmony_ci 1527db96d56Sopenharmony_ci 1537db96d56Sopenharmony_ci.. method:: Database.GetSummaryInformation(count) 1547db96d56Sopenharmony_ci 1557db96d56Sopenharmony_ci Return a new summary information object, by calling 1567db96d56Sopenharmony_ci :c:func:`MsiGetSummaryInformation`. *count* is the maximum number of updated 1577db96d56Sopenharmony_ci values. 1587db96d56Sopenharmony_ci 1597db96d56Sopenharmony_ci.. method:: Database.Close() 1607db96d56Sopenharmony_ci 1617db96d56Sopenharmony_ci Close the database object, through :c:func:`MsiCloseHandle`. 1627db96d56Sopenharmony_ci 1637db96d56Sopenharmony_ci .. versionadded:: 3.7 1647db96d56Sopenharmony_ci 1657db96d56Sopenharmony_ci.. seealso:: 1667db96d56Sopenharmony_ci 1677db96d56Sopenharmony_ci `MSIDatabaseOpenView <https://msdn.microsoft.com/en-us/library/windows/desktop/aa370082.aspx>`_ 1687db96d56Sopenharmony_ci `MSIDatabaseCommit <https://msdn.microsoft.com/en-us/library/windows/desktop/aa370075.aspx>`_ 1697db96d56Sopenharmony_ci `MSIGetSummaryInformation <https://msdn.microsoft.com/en-us/library/windows/desktop/aa370301.aspx>`_ 1707db96d56Sopenharmony_ci `MsiCloseHandle <https://msdn.microsoft.com/en-us/library/windows/desktop/aa370067.aspx>`_ 1717db96d56Sopenharmony_ci 1727db96d56Sopenharmony_ci.. _view-objects: 1737db96d56Sopenharmony_ci 1747db96d56Sopenharmony_ciView Objects 1757db96d56Sopenharmony_ci------------ 1767db96d56Sopenharmony_ci 1777db96d56Sopenharmony_ci 1787db96d56Sopenharmony_ci.. method:: View.Execute(params) 1797db96d56Sopenharmony_ci 1807db96d56Sopenharmony_ci Execute the SQL query of the view, through :c:func:`MSIViewExecute`. If 1817db96d56Sopenharmony_ci *params* is not ``None``, it is a record describing actual values of the 1827db96d56Sopenharmony_ci parameter tokens in the query. 1837db96d56Sopenharmony_ci 1847db96d56Sopenharmony_ci 1857db96d56Sopenharmony_ci.. method:: View.GetColumnInfo(kind) 1867db96d56Sopenharmony_ci 1877db96d56Sopenharmony_ci Return a record describing the columns of the view, through calling 1887db96d56Sopenharmony_ci :c:func:`MsiViewGetColumnInfo`. *kind* can be either ``MSICOLINFO_NAMES`` or 1897db96d56Sopenharmony_ci ``MSICOLINFO_TYPES``. 1907db96d56Sopenharmony_ci 1917db96d56Sopenharmony_ci 1927db96d56Sopenharmony_ci.. method:: View.Fetch() 1937db96d56Sopenharmony_ci 1947db96d56Sopenharmony_ci Return a result record of the query, through calling :c:func:`MsiViewFetch`. 1957db96d56Sopenharmony_ci 1967db96d56Sopenharmony_ci 1977db96d56Sopenharmony_ci.. method:: View.Modify(kind, data) 1987db96d56Sopenharmony_ci 1997db96d56Sopenharmony_ci Modify the view, by calling :c:func:`MsiViewModify`. *kind* can be one of 2007db96d56Sopenharmony_ci ``MSIMODIFY_SEEK``, ``MSIMODIFY_REFRESH``, ``MSIMODIFY_INSERT``, 2017db96d56Sopenharmony_ci ``MSIMODIFY_UPDATE``, ``MSIMODIFY_ASSIGN``, ``MSIMODIFY_REPLACE``, 2027db96d56Sopenharmony_ci ``MSIMODIFY_MERGE``, ``MSIMODIFY_DELETE``, ``MSIMODIFY_INSERT_TEMPORARY``, 2037db96d56Sopenharmony_ci ``MSIMODIFY_VALIDATE``, ``MSIMODIFY_VALIDATE_NEW``, 2047db96d56Sopenharmony_ci ``MSIMODIFY_VALIDATE_FIELD``, or ``MSIMODIFY_VALIDATE_DELETE``. 2057db96d56Sopenharmony_ci 2067db96d56Sopenharmony_ci *data* must be a record describing the new data. 2077db96d56Sopenharmony_ci 2087db96d56Sopenharmony_ci 2097db96d56Sopenharmony_ci.. method:: View.Close() 2107db96d56Sopenharmony_ci 2117db96d56Sopenharmony_ci Close the view, through :c:func:`MsiViewClose`. 2127db96d56Sopenharmony_ci 2137db96d56Sopenharmony_ci 2147db96d56Sopenharmony_ci.. seealso:: 2157db96d56Sopenharmony_ci 2167db96d56Sopenharmony_ci `MsiViewExecute <https://msdn.microsoft.com/en-us/library/windows/desktop/aa370513.aspx>`_ 2177db96d56Sopenharmony_ci `MSIViewGetColumnInfo <https://msdn.microsoft.com/en-us/library/windows/desktop/aa370516.aspx>`_ 2187db96d56Sopenharmony_ci `MsiViewFetch <https://msdn.microsoft.com/en-us/library/windows/desktop/aa370514.aspx>`_ 2197db96d56Sopenharmony_ci `MsiViewModify <https://msdn.microsoft.com/en-us/library/windows/desktop/aa370519.aspx>`_ 2207db96d56Sopenharmony_ci `MsiViewClose <https://msdn.microsoft.com/en-us/library/windows/desktop/aa370510.aspx>`_ 2217db96d56Sopenharmony_ci 2227db96d56Sopenharmony_ci.. _summary-objects: 2237db96d56Sopenharmony_ci 2247db96d56Sopenharmony_ciSummary Information Objects 2257db96d56Sopenharmony_ci--------------------------- 2267db96d56Sopenharmony_ci 2277db96d56Sopenharmony_ci 2287db96d56Sopenharmony_ci.. method:: SummaryInformation.GetProperty(field) 2297db96d56Sopenharmony_ci 2307db96d56Sopenharmony_ci Return a property of the summary, through :c:func:`MsiSummaryInfoGetProperty`. 2317db96d56Sopenharmony_ci *field* is the name of the property, and can be one of the constants 2327db96d56Sopenharmony_ci ``PID_CODEPAGE``, ``PID_TITLE``, ``PID_SUBJECT``, ``PID_AUTHOR``, 2337db96d56Sopenharmony_ci ``PID_KEYWORDS``, ``PID_COMMENTS``, ``PID_TEMPLATE``, ``PID_LASTAUTHOR``, 2347db96d56Sopenharmony_ci ``PID_REVNUMBER``, ``PID_LASTPRINTED``, ``PID_CREATE_DTM``, 2357db96d56Sopenharmony_ci ``PID_LASTSAVE_DTM``, ``PID_PAGECOUNT``, ``PID_WORDCOUNT``, ``PID_CHARCOUNT``, 2367db96d56Sopenharmony_ci ``PID_APPNAME``, or ``PID_SECURITY``. 2377db96d56Sopenharmony_ci 2387db96d56Sopenharmony_ci 2397db96d56Sopenharmony_ci.. method:: SummaryInformation.GetPropertyCount() 2407db96d56Sopenharmony_ci 2417db96d56Sopenharmony_ci Return the number of summary properties, through 2427db96d56Sopenharmony_ci :c:func:`MsiSummaryInfoGetPropertyCount`. 2437db96d56Sopenharmony_ci 2447db96d56Sopenharmony_ci 2457db96d56Sopenharmony_ci.. method:: SummaryInformation.SetProperty(field, value) 2467db96d56Sopenharmony_ci 2477db96d56Sopenharmony_ci Set a property through :c:func:`MsiSummaryInfoSetProperty`. *field* can have the 2487db96d56Sopenharmony_ci same values as in :meth:`GetProperty`, *value* is the new value of the property. 2497db96d56Sopenharmony_ci Possible value types are integer and string. 2507db96d56Sopenharmony_ci 2517db96d56Sopenharmony_ci 2527db96d56Sopenharmony_ci.. method:: SummaryInformation.Persist() 2537db96d56Sopenharmony_ci 2547db96d56Sopenharmony_ci Write the modified properties to the summary information stream, using 2557db96d56Sopenharmony_ci :c:func:`MsiSummaryInfoPersist`. 2567db96d56Sopenharmony_ci 2577db96d56Sopenharmony_ci 2587db96d56Sopenharmony_ci.. seealso:: 2597db96d56Sopenharmony_ci 2607db96d56Sopenharmony_ci `MsiSummaryInfoGetProperty <https://msdn.microsoft.com/en-us/library/windows/desktop/aa370409.aspx>`_ 2617db96d56Sopenharmony_ci `MsiSummaryInfoGetPropertyCount <https://msdn.microsoft.com/en-us/library/windows/desktop/aa370488.aspx>`_ 2627db96d56Sopenharmony_ci `MsiSummaryInfoSetProperty <https://msdn.microsoft.com/en-us/library/windows/desktop/aa370491.aspx>`_ 2637db96d56Sopenharmony_ci `MsiSummaryInfoPersist <https://msdn.microsoft.com/en-us/library/windows/desktop/aa370490.aspx>`_ 2647db96d56Sopenharmony_ci 2657db96d56Sopenharmony_ci.. _record-objects: 2667db96d56Sopenharmony_ci 2677db96d56Sopenharmony_ciRecord Objects 2687db96d56Sopenharmony_ci-------------- 2697db96d56Sopenharmony_ci 2707db96d56Sopenharmony_ci 2717db96d56Sopenharmony_ci.. method:: Record.GetFieldCount() 2727db96d56Sopenharmony_ci 2737db96d56Sopenharmony_ci Return the number of fields of the record, through 2747db96d56Sopenharmony_ci :c:func:`MsiRecordGetFieldCount`. 2757db96d56Sopenharmony_ci 2767db96d56Sopenharmony_ci 2777db96d56Sopenharmony_ci.. method:: Record.GetInteger(field) 2787db96d56Sopenharmony_ci 2797db96d56Sopenharmony_ci Return the value of *field* as an integer where possible. *field* must 2807db96d56Sopenharmony_ci be an integer. 2817db96d56Sopenharmony_ci 2827db96d56Sopenharmony_ci 2837db96d56Sopenharmony_ci.. method:: Record.GetString(field) 2847db96d56Sopenharmony_ci 2857db96d56Sopenharmony_ci Return the value of *field* as a string where possible. *field* must 2867db96d56Sopenharmony_ci be an integer. 2877db96d56Sopenharmony_ci 2887db96d56Sopenharmony_ci 2897db96d56Sopenharmony_ci.. method:: Record.SetString(field, value) 2907db96d56Sopenharmony_ci 2917db96d56Sopenharmony_ci Set *field* to *value* through :c:func:`MsiRecordSetString`. *field* must be an 2927db96d56Sopenharmony_ci integer; *value* a string. 2937db96d56Sopenharmony_ci 2947db96d56Sopenharmony_ci 2957db96d56Sopenharmony_ci.. method:: Record.SetStream(field, value) 2967db96d56Sopenharmony_ci 2977db96d56Sopenharmony_ci Set *field* to the contents of the file named *value*, through 2987db96d56Sopenharmony_ci :c:func:`MsiRecordSetStream`. *field* must be an integer; *value* a string. 2997db96d56Sopenharmony_ci 3007db96d56Sopenharmony_ci 3017db96d56Sopenharmony_ci.. method:: Record.SetInteger(field, value) 3027db96d56Sopenharmony_ci 3037db96d56Sopenharmony_ci Set *field* to *value* through :c:func:`MsiRecordSetInteger`. Both *field* and 3047db96d56Sopenharmony_ci *value* must be an integer. 3057db96d56Sopenharmony_ci 3067db96d56Sopenharmony_ci 3077db96d56Sopenharmony_ci.. method:: Record.ClearData() 3087db96d56Sopenharmony_ci 3097db96d56Sopenharmony_ci Set all fields of the record to 0, through :c:func:`MsiRecordClearData`. 3107db96d56Sopenharmony_ci 3117db96d56Sopenharmony_ci 3127db96d56Sopenharmony_ci.. seealso:: 3137db96d56Sopenharmony_ci 3147db96d56Sopenharmony_ci `MsiRecordGetFieldCount <https://msdn.microsoft.com/en-us/library/windows/desktop/aa370366.aspx>`_ 3157db96d56Sopenharmony_ci `MsiRecordSetString <https://msdn.microsoft.com/en-us/library/windows/desktop/aa370373.aspx>`_ 3167db96d56Sopenharmony_ci `MsiRecordSetStream <https://msdn.microsoft.com/en-us/library/windows/desktop/aa370372.aspx>`_ 3177db96d56Sopenharmony_ci `MsiRecordSetInteger <https://msdn.microsoft.com/en-us/library/windows/desktop/aa370371.aspx>`_ 3187db96d56Sopenharmony_ci `MsiRecordClearData <https://msdn.microsoft.com/en-us/library/windows/desktop/aa370364.aspx>`_ 3197db96d56Sopenharmony_ci 3207db96d56Sopenharmony_ci.. _msi-errors: 3217db96d56Sopenharmony_ci 3227db96d56Sopenharmony_ciErrors 3237db96d56Sopenharmony_ci------ 3247db96d56Sopenharmony_ci 3257db96d56Sopenharmony_ciAll wrappers around MSI functions raise :exc:`MSIError`; the string inside the 3267db96d56Sopenharmony_ciexception will contain more detail. 3277db96d56Sopenharmony_ci 3287db96d56Sopenharmony_ci 3297db96d56Sopenharmony_ci.. _cab: 3307db96d56Sopenharmony_ci 3317db96d56Sopenharmony_ciCAB Objects 3327db96d56Sopenharmony_ci----------- 3337db96d56Sopenharmony_ci 3347db96d56Sopenharmony_ci 3357db96d56Sopenharmony_ci.. class:: CAB(name) 3367db96d56Sopenharmony_ci 3377db96d56Sopenharmony_ci The class :class:`CAB` represents a CAB file. During MSI construction, files 3387db96d56Sopenharmony_ci will be added simultaneously to the ``Files`` table, and to a CAB file. Then, 3397db96d56Sopenharmony_ci when all files have been added, the CAB file can be written, then added to the 3407db96d56Sopenharmony_ci MSI file. 3417db96d56Sopenharmony_ci 3427db96d56Sopenharmony_ci *name* is the name of the CAB file in the MSI file. 3437db96d56Sopenharmony_ci 3447db96d56Sopenharmony_ci 3457db96d56Sopenharmony_ci .. method:: append(full, file, logical) 3467db96d56Sopenharmony_ci 3477db96d56Sopenharmony_ci Add the file with the pathname *full* to the CAB file, under the name 3487db96d56Sopenharmony_ci *logical*. If there is already a file named *logical*, a new file name is 3497db96d56Sopenharmony_ci created. 3507db96d56Sopenharmony_ci 3517db96d56Sopenharmony_ci Return the index of the file in the CAB file, and the new name of the file 3527db96d56Sopenharmony_ci inside the CAB file. 3537db96d56Sopenharmony_ci 3547db96d56Sopenharmony_ci 3557db96d56Sopenharmony_ci .. method:: commit(database) 3567db96d56Sopenharmony_ci 3577db96d56Sopenharmony_ci Generate a CAB file, add it as a stream to the MSI file, put it into the 3587db96d56Sopenharmony_ci ``Media`` table, and remove the generated file from the disk. 3597db96d56Sopenharmony_ci 3607db96d56Sopenharmony_ci 3617db96d56Sopenharmony_ci.. _msi-directory: 3627db96d56Sopenharmony_ci 3637db96d56Sopenharmony_ciDirectory Objects 3647db96d56Sopenharmony_ci----------------- 3657db96d56Sopenharmony_ci 3667db96d56Sopenharmony_ci 3677db96d56Sopenharmony_ci.. class:: Directory(database, cab, basedir, physical, logical, default, [componentflags]) 3687db96d56Sopenharmony_ci 3697db96d56Sopenharmony_ci Create a new directory in the Directory table. There is a current component at 3707db96d56Sopenharmony_ci each point in time for the directory, which is either explicitly created through 3717db96d56Sopenharmony_ci :meth:`start_component`, or implicitly when files are added for the first time. 3727db96d56Sopenharmony_ci Files are added into the current component, and into the cab file. To create a 3737db96d56Sopenharmony_ci directory, a base directory object needs to be specified (can be ``None``), the 3747db96d56Sopenharmony_ci path to the physical directory, and a logical directory name. *default* 3757db96d56Sopenharmony_ci specifies the DefaultDir slot in the directory table. *componentflags* specifies 3767db96d56Sopenharmony_ci the default flags that new components get. 3777db96d56Sopenharmony_ci 3787db96d56Sopenharmony_ci 3797db96d56Sopenharmony_ci .. method:: start_component(component=None, feature=None, flags=None, keyfile=None, uuid=None) 3807db96d56Sopenharmony_ci 3817db96d56Sopenharmony_ci Add an entry to the Component table, and make this component the current 3827db96d56Sopenharmony_ci component for this directory. If no component name is given, the directory 3837db96d56Sopenharmony_ci name is used. If no *feature* is given, the current feature is used. If no 3847db96d56Sopenharmony_ci *flags* are given, the directory's default flags are used. If no *keyfile* 3857db96d56Sopenharmony_ci is given, the KeyPath is left null in the Component table. 3867db96d56Sopenharmony_ci 3877db96d56Sopenharmony_ci 3887db96d56Sopenharmony_ci .. method:: add_file(file, src=None, version=None, language=None) 3897db96d56Sopenharmony_ci 3907db96d56Sopenharmony_ci Add a file to the current component of the directory, starting a new one 3917db96d56Sopenharmony_ci if there is no current component. By default, the file name in the source 3927db96d56Sopenharmony_ci and the file table will be identical. If the *src* file is specified, it 3937db96d56Sopenharmony_ci is interpreted relative to the current directory. Optionally, a *version* 3947db96d56Sopenharmony_ci and a *language* can be specified for the entry in the File table. 3957db96d56Sopenharmony_ci 3967db96d56Sopenharmony_ci 3977db96d56Sopenharmony_ci .. method:: glob(pattern, exclude=None) 3987db96d56Sopenharmony_ci 3997db96d56Sopenharmony_ci Add a list of files to the current component as specified in the glob 4007db96d56Sopenharmony_ci pattern. Individual files can be excluded in the *exclude* list. 4017db96d56Sopenharmony_ci 4027db96d56Sopenharmony_ci 4037db96d56Sopenharmony_ci .. method:: remove_pyc() 4047db96d56Sopenharmony_ci 4057db96d56Sopenharmony_ci Remove ``.pyc`` files on uninstall. 4067db96d56Sopenharmony_ci 4077db96d56Sopenharmony_ci 4087db96d56Sopenharmony_ci.. seealso:: 4097db96d56Sopenharmony_ci 4107db96d56Sopenharmony_ci `Directory Table <https://msdn.microsoft.com/en-us/library/windows/desktop/aa368295.aspx>`_ 4117db96d56Sopenharmony_ci `File Table <https://msdn.microsoft.com/en-us/library/windows/desktop/aa368596.aspx>`_ 4127db96d56Sopenharmony_ci `Component Table <https://msdn.microsoft.com/en-us/library/windows/desktop/aa368007.aspx>`_ 4137db96d56Sopenharmony_ci `FeatureComponents Table <https://msdn.microsoft.com/en-us/library/windows/desktop/aa368579.aspx>`_ 4147db96d56Sopenharmony_ci 4157db96d56Sopenharmony_ci.. _features: 4167db96d56Sopenharmony_ci 4177db96d56Sopenharmony_ciFeatures 4187db96d56Sopenharmony_ci-------- 4197db96d56Sopenharmony_ci 4207db96d56Sopenharmony_ci 4217db96d56Sopenharmony_ci.. class:: Feature(db, id, title, desc, display, level=1, parent=None, directory=None, attributes=0) 4227db96d56Sopenharmony_ci 4237db96d56Sopenharmony_ci Add a new record to the ``Feature`` table, using the values *id*, *parent.id*, 4247db96d56Sopenharmony_ci *title*, *desc*, *display*, *level*, *directory*, and *attributes*. The 4257db96d56Sopenharmony_ci resulting feature object can be passed to the :meth:`start_component` method of 4267db96d56Sopenharmony_ci :class:`Directory`. 4277db96d56Sopenharmony_ci 4287db96d56Sopenharmony_ci 4297db96d56Sopenharmony_ci .. method:: set_current() 4307db96d56Sopenharmony_ci 4317db96d56Sopenharmony_ci Make this feature the current feature of :mod:`msilib`. New components are 4327db96d56Sopenharmony_ci automatically added to the default feature, unless a feature is explicitly 4337db96d56Sopenharmony_ci specified. 4347db96d56Sopenharmony_ci 4357db96d56Sopenharmony_ci 4367db96d56Sopenharmony_ci.. seealso:: 4377db96d56Sopenharmony_ci 4387db96d56Sopenharmony_ci `Feature Table <https://msdn.microsoft.com/en-us/library/windows/desktop/aa368585.aspx>`_ 4397db96d56Sopenharmony_ci 4407db96d56Sopenharmony_ci.. _msi-gui: 4417db96d56Sopenharmony_ci 4427db96d56Sopenharmony_ciGUI classes 4437db96d56Sopenharmony_ci----------- 4447db96d56Sopenharmony_ci 4457db96d56Sopenharmony_ci:mod:`msilib` provides several classes that wrap the GUI tables in an MSI 4467db96d56Sopenharmony_cidatabase. However, no standard user interface is provided. 4477db96d56Sopenharmony_ci 4487db96d56Sopenharmony_ci 4497db96d56Sopenharmony_ci.. class:: Control(dlg, name) 4507db96d56Sopenharmony_ci 4517db96d56Sopenharmony_ci Base class of the dialog controls. *dlg* is the dialog object the control 4527db96d56Sopenharmony_ci belongs to, and *name* is the control's name. 4537db96d56Sopenharmony_ci 4547db96d56Sopenharmony_ci 4557db96d56Sopenharmony_ci .. method:: event(event, argument, condition=1, ordering=None) 4567db96d56Sopenharmony_ci 4577db96d56Sopenharmony_ci Make an entry into the ``ControlEvent`` table for this control. 4587db96d56Sopenharmony_ci 4597db96d56Sopenharmony_ci 4607db96d56Sopenharmony_ci .. method:: mapping(event, attribute) 4617db96d56Sopenharmony_ci 4627db96d56Sopenharmony_ci Make an entry into the ``EventMapping`` table for this control. 4637db96d56Sopenharmony_ci 4647db96d56Sopenharmony_ci 4657db96d56Sopenharmony_ci .. method:: condition(action, condition) 4667db96d56Sopenharmony_ci 4677db96d56Sopenharmony_ci Make an entry into the ``ControlCondition`` table for this control. 4687db96d56Sopenharmony_ci 4697db96d56Sopenharmony_ci 4707db96d56Sopenharmony_ci.. class:: RadioButtonGroup(dlg, name, property) 4717db96d56Sopenharmony_ci 4727db96d56Sopenharmony_ci Create a radio button control named *name*. *property* is the installer property 4737db96d56Sopenharmony_ci that gets set when a radio button is selected. 4747db96d56Sopenharmony_ci 4757db96d56Sopenharmony_ci 4767db96d56Sopenharmony_ci .. method:: add(name, x, y, width, height, text, value=None) 4777db96d56Sopenharmony_ci 4787db96d56Sopenharmony_ci Add a radio button named *name* to the group, at the coordinates *x*, *y*, 4797db96d56Sopenharmony_ci *width*, *height*, and with the label *text*. If *value* is ``None``, it 4807db96d56Sopenharmony_ci defaults to *name*. 4817db96d56Sopenharmony_ci 4827db96d56Sopenharmony_ci 4837db96d56Sopenharmony_ci.. class:: Dialog(db, name, x, y, w, h, attr, title, first, default, cancel) 4847db96d56Sopenharmony_ci 4857db96d56Sopenharmony_ci Return a new :class:`Dialog` object. An entry in the ``Dialog`` table is made, 4867db96d56Sopenharmony_ci with the specified coordinates, dialog attributes, title, name of the first, 4877db96d56Sopenharmony_ci default, and cancel controls. 4887db96d56Sopenharmony_ci 4897db96d56Sopenharmony_ci 4907db96d56Sopenharmony_ci .. method:: control(name, type, x, y, width, height, attributes, property, text, control_next, help) 4917db96d56Sopenharmony_ci 4927db96d56Sopenharmony_ci Return a new :class:`Control` object. An entry in the ``Control`` table is 4937db96d56Sopenharmony_ci made with the specified parameters. 4947db96d56Sopenharmony_ci 4957db96d56Sopenharmony_ci This is a generic method; for specific types, specialized methods are 4967db96d56Sopenharmony_ci provided. 4977db96d56Sopenharmony_ci 4987db96d56Sopenharmony_ci 4997db96d56Sopenharmony_ci .. method:: text(name, x, y, width, height, attributes, text) 5007db96d56Sopenharmony_ci 5017db96d56Sopenharmony_ci Add and return a ``Text`` control. 5027db96d56Sopenharmony_ci 5037db96d56Sopenharmony_ci 5047db96d56Sopenharmony_ci .. method:: bitmap(name, x, y, width, height, text) 5057db96d56Sopenharmony_ci 5067db96d56Sopenharmony_ci Add and return a ``Bitmap`` control. 5077db96d56Sopenharmony_ci 5087db96d56Sopenharmony_ci 5097db96d56Sopenharmony_ci .. method:: line(name, x, y, width, height) 5107db96d56Sopenharmony_ci 5117db96d56Sopenharmony_ci Add and return a ``Line`` control. 5127db96d56Sopenharmony_ci 5137db96d56Sopenharmony_ci 5147db96d56Sopenharmony_ci .. method:: pushbutton(name, x, y, width, height, attributes, text, next_control) 5157db96d56Sopenharmony_ci 5167db96d56Sopenharmony_ci Add and return a ``PushButton`` control. 5177db96d56Sopenharmony_ci 5187db96d56Sopenharmony_ci 5197db96d56Sopenharmony_ci .. method:: radiogroup(name, x, y, width, height, attributes, property, text, next_control) 5207db96d56Sopenharmony_ci 5217db96d56Sopenharmony_ci Add and return a ``RadioButtonGroup`` control. 5227db96d56Sopenharmony_ci 5237db96d56Sopenharmony_ci 5247db96d56Sopenharmony_ci .. method:: checkbox(name, x, y, width, height, attributes, property, text, next_control) 5257db96d56Sopenharmony_ci 5267db96d56Sopenharmony_ci Add and return a ``CheckBox`` control. 5277db96d56Sopenharmony_ci 5287db96d56Sopenharmony_ci 5297db96d56Sopenharmony_ci.. seealso:: 5307db96d56Sopenharmony_ci 5317db96d56Sopenharmony_ci `Dialog Table <https://msdn.microsoft.com/en-us/library/windows/desktop/aa368286.aspx>`_ 5327db96d56Sopenharmony_ci `Control Table <https://msdn.microsoft.com/en-us/library/windows/desktop/aa368044.aspx>`_ 5337db96d56Sopenharmony_ci `Control Types <https://msdn.microsoft.com/en-us/library/windows/desktop/aa368039.aspx>`_ 5347db96d56Sopenharmony_ci `ControlCondition Table <https://msdn.microsoft.com/en-us/library/windows/desktop/aa368035.aspx>`_ 5357db96d56Sopenharmony_ci `ControlEvent Table <https://msdn.microsoft.com/en-us/library/windows/desktop/aa368037.aspx>`_ 5367db96d56Sopenharmony_ci `EventMapping Table <https://msdn.microsoft.com/en-us/library/windows/desktop/aa368559.aspx>`_ 5377db96d56Sopenharmony_ci `RadioButton Table <https://msdn.microsoft.com/en-us/library/windows/desktop/aa370962.aspx>`_ 5387db96d56Sopenharmony_ci 5397db96d56Sopenharmony_ci.. _msi-tables: 5407db96d56Sopenharmony_ci 5417db96d56Sopenharmony_ciPrecomputed tables 5427db96d56Sopenharmony_ci------------------ 5437db96d56Sopenharmony_ci 5447db96d56Sopenharmony_ci:mod:`msilib` provides a few subpackages that contain only schema and table 5457db96d56Sopenharmony_cidefinitions. Currently, these definitions are based on MSI version 2.0. 5467db96d56Sopenharmony_ci 5477db96d56Sopenharmony_ci 5487db96d56Sopenharmony_ci.. data:: schema 5497db96d56Sopenharmony_ci 5507db96d56Sopenharmony_ci This is the standard MSI schema for MSI 2.0, with the *tables* variable 5517db96d56Sopenharmony_ci providing a list of table definitions, and *_Validation_records* providing the 5527db96d56Sopenharmony_ci data for MSI validation. 5537db96d56Sopenharmony_ci 5547db96d56Sopenharmony_ci 5557db96d56Sopenharmony_ci.. data:: sequence 5567db96d56Sopenharmony_ci 5577db96d56Sopenharmony_ci This module contains table contents for the standard sequence tables: 5587db96d56Sopenharmony_ci *AdminExecuteSequence*, *AdminUISequence*, *AdvtExecuteSequence*, 5597db96d56Sopenharmony_ci *InstallExecuteSequence*, and *InstallUISequence*. 5607db96d56Sopenharmony_ci 5617db96d56Sopenharmony_ci 5627db96d56Sopenharmony_ci.. data:: text 5637db96d56Sopenharmony_ci 5647db96d56Sopenharmony_ci This module contains definitions for the UIText and ActionText tables, for the 5657db96d56Sopenharmony_ci standard installer actions. 566