mirror of
https://github.com/fofolee/uTools-Manuals.git
synced 2025-06-08 15:04:05 +08:00
1 line
48 KiB
HTML
1 line
48 KiB
HTML
<div class="body" role="main"><div class="section" id="module-msilib"><h1><span class="yiyi-st" id="yiyi-10">34.1. <a class="reference internal" href="#module-msilib" title="msilib: Creation of Microsoft Installer files, and CAB files. (Windows)"><code class="xref py py-mod docutils literal"><span class="pre">msilib</span></code></a> - 读取和写入Microsoft安装程序文件</span></h1><p><span class="yiyi-st" id="yiyi-11"><strong>源代码:</strong> <a class="reference external" href="https://hg.python.org/cpython/file/3.5/Lib/msilib/__init__.py">Lib / msilib / __ init __。py</a></span></p><p><span class="yiyi-st" id="yiyi-12"><a class="reference internal" href="#module-msilib" title="msilib: Creation of Microsoft Installer files, and CAB files. (Windows)"><code class="xref py py-mod docutils literal"><span class="pre">msilib</span></code></a>支持创建Microsoft Installer(<code class="docutils literal"><span class="pre">.msi</span></code>)文件。</span><span class="yiyi-st" id="yiyi-13">因为这些文件通常包含嵌入的“cabinet”文件(<code class="docutils literal"><span class="pre">.cab</span></code>),所以它还公开了一个API来创建CAB文件。</span><span class="yiyi-st" id="yiyi-14">支持读取<code class="docutils literal"><span class="pre">.cab</span></code>文件目前未实现;可以读取对<code class="docutils literal"><span class="pre">.msi</span></code>数据库的支持。</span></p><p><span class="yiyi-st" id="yiyi-15">此包旨在提供对<code class="docutils literal"><span class="pre">.msi</span></code>文件中所有表的完全访问,因此,它是一个相当低级的API。</span><span class="yiyi-st" id="yiyi-16">此包的两个主要应用程序是<a class="reference internal" href="distutils.html#module-distutils" title="distutils: Support for building and installing Python modules into an existing Python installation."><code class="xref py py-mod docutils literal"><span class="pre">distutils</span></code></a>命令<code class="docutils literal"><span class="pre">bdist_msi</span></code>和创建Python安装程序包本身(虽然目前使用不同版本的<code class="docutils literal"><span class="pre">msilib</span></code></span></p><p><span class="yiyi-st" id="yiyi-17">包内容可大致分为四个部分:低级CAB例程,低级MSI例程,更高级MSI例程和标准表结构。</span></p><dl class="function"><dt id="msilib.FCICreate"><span class="yiyi-st" id="yiyi-18"> <code class="descclassname">msilib.</code><code class="descname">FCICreate</code><span class="sig-paren">(</span><em>cabname</em>, <em>files</em><span class="sig-paren">)</span></span></dt><dd><p><span class="yiyi-st" id="yiyi-19">创建名为<em>cabname</em>的新CAB文件。</span><span class="yiyi-st" id="yiyi-20"><em>文件</em>必须是元组列表,每个元组包含磁盘上文件的名称和CAB文件中的文件名称。</span></p><p><span class="yiyi-st" id="yiyi-21">这些文件将按照它们在列表中显示的顺序添加到CAB文件。</span><span class="yiyi-st" id="yiyi-22">使用MSZIP压缩算法将所有文件添加到单个CAB文件中。</span></p><p><span class="yiyi-st" id="yiyi-23">目前没有公开回调到Python的MSI创建的各个步骤。</span></p></dd></dl><dl class="function"><dt id="msilib.UuidCreate"><span class="yiyi-st" id="yiyi-24"> <code class="descclassname">msilib.</code><code class="descname">UuidCreate</code><span class="sig-paren">(</span><span class="sig-paren">)</span></span></dt><dd><p><span class="yiyi-st" id="yiyi-25">返回新的唯一标识符的字符串表示形式。</span><span class="yiyi-st" id="yiyi-26">它包装Windows API函数<code class="xref c c-func docutils literal"><span class="pre">UuidCreate()</span></code>和<code class="xref c c-func docutils literal"><span class="pre">UuidToString()</span></code>。</span></p></dd></dl><dl class="function"><dt id="msilib.OpenDatabase"><span class="yiyi-st" id="yiyi-27"> <code class="descclassname">msilib.</code><code class="descname">OpenDatabase</code><span class="sig-paren">(</span><em>path</em>, <em>persist</em><span class="sig-paren">)</span></span></dt><dd><p><span class="yiyi-st" id="yiyi-28">通过调用MsiOpenDatabase返回一个新的数据库对象。</span><span class="yiyi-st" id="yiyi-29"><em>path</em>是MSI文件的文件名; <em>persist</em>可以是常数<code class="docutils literal"><span class="pre">MSIDBOPEN_CREATEDIRECT</span></code>,<code class="docutils literal"><span class="pre">MSIDBOPEN_CREATE</span></code>,<code class="docutils literal"><span class="pre">MSIDBOPEN_DIRECT</span></code>,<code class="docutils literal"><span class="pre">MSIDBOPEN_READONLY</span></code>或<code class="docutils literal"><span class="pre">MSIDBOPEN_TRANSACT</span></code>,并且可以包括标志<code class="docutils literal"><span class="pre">MSIDBOPEN_PATCHFILE</span></code>。</span><span class="yiyi-st" id="yiyi-30">有关这些标志的含义,请参阅Microsoft文档;根据标志,打开现有数据库或创建新数据库。</span></p></dd></dl><dl class="function"><dt id="msilib.CreateRecord"><span class="yiyi-st" id="yiyi-31"> <code class="descclassname">msilib.</code><code class="descname">CreateRecord</code><span class="sig-paren">(</span><em>count</em><span class="sig-paren">)</span></span></dt><dd><p><span class="yiyi-st" id="yiyi-32">通过调用<code class="xref c c-func docutils literal"><span class="pre">MSICreateRecord()</span></code>返回一个新的记录对象。</span><span class="yiyi-st" id="yiyi-33"><em>count</em>是记录的字段数。</span></p></dd></dl><dl class="function"><dt id="msilib.init_database"><span class="yiyi-st" id="yiyi-34"> <code class="descclassname">msilib.</code><code class="descname">init_database</code><span class="sig-paren">(</span><em>name</em>, <em>schema</em>, <em>ProductName</em>, <em>ProductCode</em>, <em>ProductVersion</em>, <em>Manufacturer</em><span class="sig-paren">)</span></span></dt><dd><p><span class="yiyi-st" id="yiyi-35">Create and return a new database <em>name</em>, initialize it with <em>schema</em>, and set the properties <em>ProductName</em>, <em>ProductCode</em>, <em>ProductVersion</em>, and <em>Manufacturer</em>.</span></p><p><span class="yiyi-st" id="yiyi-36"><em>模式</em>必须是包含<code class="docutils literal"><span class="pre">tables</span></code>和<code class="docutils literal"><span class="pre">_Validation_records</span></code>属性的模块对象;通常,应使用<a class="reference internal" href="#msilib.schema" title="msilib.schema"><code class="xref py py-mod docutils literal"><span class="pre">msilib.schema</span></code></a>。</span></p><p><span class="yiyi-st" id="yiyi-37">此函数返回时,数据库将仅包含模式和验证记录。</span></p></dd></dl><dl class="function"><dt id="msilib.add_data"><span class="yiyi-st" id="yiyi-38"> <code class="descclassname">msilib.</code><code class="descname">add_data</code><span class="sig-paren">(</span><em>database</em>, <em>table</em>, <em>records</em><span class="sig-paren">)</span></span></dt><dd><p><span class="yiyi-st" id="yiyi-39">将所有<em>记录</em>添加到<em>数据库</em>中名为<em>表</em>的表。</span></p><p><span class="yiyi-st" id="yiyi-40"><em>表</em>参数必须是MSI模式中的预定义表之一,例如。</span><span class="yiyi-st" id="yiyi-41"><code class="docutils literal"><span class="pre">'Feature'</span></code>, <code class="docutils literal"><span class="pre">'File'</span></code>, <code class="docutils literal"><span class="pre">'Component'</span></code>, <code class="docutils literal"><span class="pre">'Dialog'</span></code>, <code class="docutils literal"><span class="pre">'Control'</span></code>, etc.</span></p><p><span class="yiyi-st" id="yiyi-42"><em>记录</em>应该是元组的列表,每个元组包含根据表的模式的记录的所有字段。</span><span class="yiyi-st" id="yiyi-43">对于可选字段,可以传递<code class="docutils literal"><span class="pre">None</span></code>。</span></p><p><span class="yiyi-st" id="yiyi-44">字段值可以是二进制类的int,字符串或实例。</span></p></dd></dl><dl class="class"><dt id="msilib.Binary"><span class="yiyi-st" id="yiyi-45"> <em class="property">class </em><code class="descclassname">msilib.</code><code class="descname">Binary</code><span class="sig-paren">(</span><em>filename</em><span class="sig-paren">)</span></span></dt><dd><p><span class="yiyi-st" id="yiyi-46">表示二进制表中的条目;使用<a class="reference internal" href="#msilib.add_data" title="msilib.add_data"><code class="xref py py-func docutils literal"><span class="pre">add_data()</span></code></a>插入此类对象会将名为<em>filename</em>的文件读入表中。</span></p></dd></dl><dl class="function"><dt id="msilib.add_tables"><span class="yiyi-st" id="yiyi-47"> <code class="descclassname">msilib.</code><code class="descname">add_tables</code><span class="sig-paren">(</span><em>database</em>, <em>module</em><span class="sig-paren">)</span></span></dt><dd><p><span class="yiyi-st" id="yiyi-48">将<em>模块</em>中的所有表内容添加到<em>数据库</em>。</span><span class="yiyi-st" id="yiyi-49"><em>模块</em>必须包含属性<em>tables</em>,其中列出了应添加内容的所有表,以及每个具有实际内容的表的一个属性。</span></p><p><span class="yiyi-st" id="yiyi-50">这通常用于安装序列表。</span></p></dd></dl><dl class="function"><dt id="msilib.add_stream"><span class="yiyi-st" id="yiyi-51"> <code class="descclassname">msilib.</code><code class="descname">add_stream</code><span class="sig-paren">(</span><em>database</em>, <em>name</em>, <em>path</em><span class="sig-paren">)</span></span></dt><dd><p><span class="yiyi-st" id="yiyi-52">将<em>路径</em>添加到<em>数据库</em>的<code class="docutils literal"><span class="pre">_Stream</span></code>表中,流名称为<em>name</em>。</span></p></dd></dl><dl class="function"><dt id="msilib.gen_uuid"><span class="yiyi-st" id="yiyi-53"> <code class="descclassname">msilib.</code><code class="descname">gen_uuid</code><span class="sig-paren">(</span><span class="sig-paren">)</span></span></dt><dd><p><span class="yiyi-st" id="yiyi-54">以MSI通常需要的格式返回新的UUID。</span><span class="yiyi-st" id="yiyi-55">在大括号中,并且所有十六进制在大写)。</span></p></dd></dl><div class="admonition seealso"><p class="first admonition-title"><span class="yiyi-st" id="yiyi-56">也可以看看</span></p><p class="last"><span class="yiyi-st" id="yiyi-57"><a class="reference external" href="https://msdn.microsoft.com/library?url=/library/en-us/devnotes/winprog/fcicreate.asp">FCICreateFile</a> <a class="reference external" href="https://msdn.microsoft.com/library?url=/library/en-us/rpc/rpc/uuidcreate.asp">UuidCreate</a> <a class="reference external" href="https://msdn.microsoft.com/library?url=/library/en-us/rpc/rpc/uuidtostring.asp">UuidToString</a></span></p></div><div class="section" id="database-objects"><h2><span class="yiyi-st" id="yiyi-58">34.1.1. </span><span class="yiyi-st" id="yiyi-59">Database Objects</span></h2><dl class="method"><dt id="msilib.Database.OpenView"><span class="yiyi-st" id="yiyi-60"> <code class="descclassname">Database.</code><code class="descname">OpenView</code><span class="sig-paren">(</span><em>sql</em><span class="sig-paren">)</span></span></dt><dd><p><span class="yiyi-st" id="yiyi-61">通过调用<code class="xref c c-func docutils literal"><span class="pre">MSIDatabaseOpenView()</span></code>返回视图对象。</span><span class="yiyi-st" id="yiyi-62"><em>sql</em>是要执行的SQL语句。</span></p></dd></dl><dl class="method"><dt id="msilib.Database.Commit"><span class="yiyi-st" id="yiyi-63"> <code class="descclassname">Database.</code><code class="descname">Commit</code><span class="sig-paren">(</span><span class="sig-paren">)</span></span></dt><dd><p><span class="yiyi-st" id="yiyi-64">通过调用<code class="xref c c-func docutils literal"><span class="pre">MSIDatabaseCommit()</span></code>来提交当前事务中待完成的更改。</span></p></dd></dl><dl class="method"><dt id="msilib.Database.GetSummaryInformation"><span class="yiyi-st" id="yiyi-65"> <code class="descclassname">Database.</code><code class="descname">GetSummaryInformation</code><span class="sig-paren">(</span><em>count</em><span class="sig-paren">)</span></span></dt><dd><p><span class="yiyi-st" id="yiyi-66">通过调用<code class="xref c c-func docutils literal"><span class="pre">MsiGetSummaryInformation()</span></code>返回新的摘要信息对象。</span><span class="yiyi-st" id="yiyi-67"><em>count</em>是更新值的最大数量。</span></p></dd></dl><div class="admonition seealso"><p class="first admonition-title"><span class="yiyi-st" id="yiyi-68">也可以看看</span></p><p class="last"><span class="yiyi-st" id="yiyi-69"><a class="reference external" href="https://msdn.microsoft.com/library?url=/library/en-us/msi/setup/msidatabaseopenview.asp">MSIDatabaseOpenView</a> <a class="reference external" href="https://msdn.microsoft.com/library?url=/library/en-us/msi/setup/msidatabasecommit.asp">MSIDatabaseCommit</a> <a class="reference external" href="https://msdn.microsoft.com/library?url=/library/en-us/msi/setup/msigetsummaryinformation.asp">MSIGetSummaryInformation</a></span></p></div></div><div class="section" id="view-objects"><h2><span class="yiyi-st" id="yiyi-70">34.1.2. </span><span class="yiyi-st" id="yiyi-71">View Objects</span></h2><dl class="method"><dt id="msilib.View.Execute"><span class="yiyi-st" id="yiyi-72"> <code class="descclassname">View.</code><code class="descname">Execute</code><span class="sig-paren">(</span><em>params</em><span class="sig-paren">)</span></span></dt><dd><p><span class="yiyi-st" id="yiyi-73">通过<code class="xref c c-func docutils literal"><span class="pre">MSIViewExecute()</span></code>执行视图的SQL查询。</span><span class="yiyi-st" id="yiyi-74">如果<em>params</em>不是<code class="docutils literal"><span class="pre">None</span></code>,则它是描述查询中参数标记的实际值的记录。</span></p></dd></dl><dl class="method"><dt id="msilib.View.GetColumnInfo"><span class="yiyi-st" id="yiyi-75"> <code class="descclassname">View.</code><code class="descname">GetColumnInfo</code><span class="sig-paren">(</span><em>kind</em><span class="sig-paren">)</span></span></dt><dd><p><span class="yiyi-st" id="yiyi-76">通过调用<code class="xref c c-func docutils literal"><span class="pre">MsiViewGetColumnInfo()</span></code>返回描述视图列的记录。</span><span class="yiyi-st" id="yiyi-77"><em>种类</em>可以是<code class="docutils literal"><span class="pre">MSICOLINFO_NAMES</span></code>或<code class="docutils literal"><span class="pre">MSICOLINFO_TYPES</span></code>。</span></p></dd></dl><dl class="method"><dt id="msilib.View.Fetch"><span class="yiyi-st" id="yiyi-78"> <code class="descclassname">View.</code><code class="descname">Fetch</code><span class="sig-paren">(</span><span class="sig-paren">)</span></span></dt><dd><p><span class="yiyi-st" id="yiyi-79">通过调用<code class="xref c c-func docutils literal"><span class="pre">MsiViewFetch()</span></code>返回查询的结果记录。</span></p></dd></dl><dl class="method"><dt id="msilib.View.Modify"><span class="yiyi-st" id="yiyi-80"> <code class="descclassname">View.</code><code class="descname">Modify</code><span class="sig-paren">(</span><em>kind</em>, <em>data</em><span class="sig-paren">)</span></span></dt><dd><p><span class="yiyi-st" id="yiyi-81">通过调用<code class="xref c c-func docutils literal"><span class="pre">MsiViewModify()</span></code>修改视图。</span><span class="yiyi-st" id="yiyi-82"><em>kind</em> can be one of <code class="docutils literal"><span class="pre">MSIMODIFY_SEEK</span></code>, <code class="docutils literal"><span class="pre">MSIMODIFY_REFRESH</span></code>, <code class="docutils literal"><span class="pre">MSIMODIFY_INSERT</span></code>, <code class="docutils literal"><span class="pre">MSIMODIFY_UPDATE</span></code>, <code class="docutils literal"><span class="pre">MSIMODIFY_ASSIGN</span></code>, <code class="docutils literal"><span class="pre">MSIMODIFY_REPLACE</span></code>, <code class="docutils literal"><span class="pre">MSIMODIFY_MERGE</span></code>, <code class="docutils literal"><span class="pre">MSIMODIFY_DELETE</span></code>, <code class="docutils literal"><span class="pre">MSIMODIFY_INSERT_TEMPORARY</span></code>, <code class="docutils literal"><span class="pre">MSIMODIFY_VALIDATE</span></code>, <code class="docutils literal"><span class="pre">MSIMODIFY_VALIDATE_NEW</span></code>, <code class="docutils literal"><span class="pre">MSIMODIFY_VALIDATE_FIELD</span></code>, or <code class="docutils literal"><span class="pre">MSIMODIFY_VALIDATE_DELETE</span></code>.</span></p><p><span class="yiyi-st" id="yiyi-83"><em>数据</em>必须是描述新数据的记录。</span></p></dd></dl><dl class="method"><dt id="msilib.View.Close"><span class="yiyi-st" id="yiyi-84"> <code class="descclassname">View.</code><code class="descname">Close</code><span class="sig-paren">(</span><span class="sig-paren">)</span></span></dt><dd><p><span class="yiyi-st" id="yiyi-85">通过<code class="xref c c-func docutils literal"><span class="pre">MsiViewClose()</span></code>关闭视图。</span></p></dd></dl><div class="admonition seealso"><p class="first admonition-title"><span class="yiyi-st" id="yiyi-86">也可以看看</span></p><p class="last"><span class="yiyi-st" id="yiyi-87"><a class="reference external" href="https://msdn.microsoft.com/library?url=/library/en-us/msi/setup/msiviewexecute.asp">MsiViewExecute</a> <a class="reference external" href="https://msdn.microsoft.com/library?url=/library/en-us/msi/setup/msiviewgetcolumninfo.asp">MSIViewGetColumnInfo</a> <a class="reference external" href="https://msdn.microsoft.com/library?url=/library/en-us/msi/setup/msiviewfetch.asp">MsiViewFetch</a> <a class="reference external" href="https://msdn.microsoft.com/library?url=/library/en-us/msi/setup/msiviewmodify.asp">MsiViewModify</a> <a class="reference external" href="https://msdn.microsoft.com/library?url=/library/en-us/msi/setup/msiviewclose.asp">MsiViewClose</a></span></p></div></div><div class="section" id="summary-information-objects"><h2><span class="yiyi-st" id="yiyi-88">34.1.3. </span><span class="yiyi-st" id="yiyi-89">Summary Information Objects</span></h2><dl class="method"><dt id="msilib.SummaryInformation.GetProperty"><span class="yiyi-st" id="yiyi-90"> <code class="descclassname">SummaryInformation.</code><code class="descname">GetProperty</code><span class="sig-paren">(</span><em>field</em><span class="sig-paren">)</span></span></dt><dd><p><span class="yiyi-st" id="yiyi-91">通过<code class="xref c c-func docutils literal"><span class="pre">MsiSummaryInfoGetProperty()</span></code>返回摘要的属性。</span><span class="yiyi-st" id="yiyi-92"><em>field</em> is the name of the property, and can be one of the constants <code class="docutils literal"><span class="pre">PID_CODEPAGE</span></code>, <code class="docutils literal"><span class="pre">PID_TITLE</span></code>, <code class="docutils literal"><span class="pre">PID_SUBJECT</span></code>, <code class="docutils literal"><span class="pre">PID_AUTHOR</span></code>, <code class="docutils literal"><span class="pre">PID_KEYWORDS</span></code>, <code class="docutils literal"><span class="pre">PID_COMMENTS</span></code>, <code class="docutils literal"><span class="pre">PID_TEMPLATE</span></code>, <code class="docutils literal"><span class="pre">PID_LASTAUTHOR</span></code>, <code class="docutils literal"><span class="pre">PID_REVNUMBER</span></code>, <code class="docutils literal"><span class="pre">PID_LASTPRINTED</span></code>, <code class="docutils literal"><span class="pre">PID_CREATE_DTM</span></code>, <code class="docutils literal"><span class="pre">PID_LASTSAVE_DTM</span></code>, <code class="docutils literal"><span class="pre">PID_PAGECOUNT</span></code>, <code class="docutils literal"><span class="pre">PID_WORDCOUNT</span></code>, <code class="docutils literal"><span class="pre">PID_CHARCOUNT</span></code>, <code class="docutils literal"><span class="pre">PID_APPNAME</span></code>, or <code class="docutils literal"><span class="pre">PID_SECURITY</span></code>.</span></p></dd></dl><dl class="method"><dt id="msilib.SummaryInformation.GetPropertyCount"><span class="yiyi-st" id="yiyi-93"> <code class="descclassname">SummaryInformation.</code><code class="descname">GetPropertyCount</code><span class="sig-paren">(</span><span class="sig-paren">)</span></span></dt><dd><p><span class="yiyi-st" id="yiyi-94">通过<code class="xref c c-func docutils literal"><span class="pre">MsiSummaryInfoGetPropertyCount()</span></code>返回摘要属性的数量。</span></p></dd></dl><dl class="method"><dt id="msilib.SummaryInformation.SetProperty"><span class="yiyi-st" id="yiyi-95"> <code class="descclassname">SummaryInformation.</code><code class="descname">SetProperty</code><span class="sig-paren">(</span><em>field</em>, <em>value</em><span class="sig-paren">)</span></span></dt><dd><p><span class="yiyi-st" id="yiyi-96">通过<code class="xref c c-func docutils literal"><span class="pre">MsiSummaryInfoSetProperty()</span></code>设置属性。</span><span class="yiyi-st" id="yiyi-97"><em>字段</em>可以具有与<a class="reference internal" href="#msilib.SummaryInformation.GetProperty" title="msilib.SummaryInformation.GetProperty"><code class="xref py py-meth docutils literal"><span class="pre">GetProperty()</span></code></a>中相同的值,<em>value</em>是属性的新值。</span><span class="yiyi-st" id="yiyi-98">可能的值类型是整数和字符串。</span></p></dd></dl><dl class="method"><dt id="msilib.SummaryInformation.Persist"><span class="yiyi-st" id="yiyi-99"> <code class="descclassname">SummaryInformation.</code><code class="descname">Persist</code><span class="sig-paren">(</span><span class="sig-paren">)</span></span></dt><dd><p><span class="yiyi-st" id="yiyi-100">使用<code class="xref c c-func docutils literal"><span class="pre">MsiSummaryInfoPersist()</span></code>将修改后的属性写入摘要信息流。</span></p></dd></dl><div class="admonition seealso"><p class="first admonition-title"><span class="yiyi-st" id="yiyi-101">也可以看看</span></p><p class="last"><span class="yiyi-st" id="yiyi-102"><a class="reference external" href="https://msdn.microsoft.com/library?url=/library/en-us/msi/setup/msisummaryinfogetproperty.asp">MsiSummaryInfoGetProperty</a> <a class="reference external" href="https://msdn.microsoft.com/library?url=/library/en-us/msi/setup/msisummaryinfogetpropertycount.asp">MsiSummaryInfoGetPropertyCount</a> <a class="reference external" href="https://msdn.microsoft.com/library?url=/library/en-us/msi/setup/msisummaryinfosetproperty.asp">MsiSummaryInfoSetProperty</a> <a class="reference external" href="https://msdn.microsoft.com/library?url=/library/en-us/msi/setup/msisummaryinfopersist.asp">MsiSummaryInfoPersist</a></span></p></div></div><div class="section" id="record-objects"><h2><span class="yiyi-st" id="yiyi-103">34.1.4. </span><span class="yiyi-st" id="yiyi-104">Record Objects</span></h2><dl class="method"><dt id="msilib.Record.GetFieldCount"><span class="yiyi-st" id="yiyi-105"> <code class="descclassname">Record.</code><code class="descname">GetFieldCount</code><span class="sig-paren">(</span><span class="sig-paren">)</span></span></dt><dd><p><span class="yiyi-st" id="yiyi-106">通过<code class="xref c c-func docutils literal"><span class="pre">MsiRecordGetFieldCount()</span></code>返回记录的字段数。</span></p></dd></dl><dl class="method"><dt id="msilib.Record.GetInteger"><span class="yiyi-st" id="yiyi-107"> <code class="descclassname">Record.</code><code class="descname">GetInteger</code><span class="sig-paren">(</span><em>field</em><span class="sig-paren">)</span></span></dt><dd><p><span class="yiyi-st" id="yiyi-108">在可能的情况下,将<em>字段</em>的值作为整数返回。</span><span class="yiyi-st" id="yiyi-109"><em>字段</em>必须为整数。</span></p></dd></dl><dl class="method"><dt id="msilib.Record.GetString"><span class="yiyi-st" id="yiyi-110"> <code class="descclassname">Record.</code><code class="descname">GetString</code><span class="sig-paren">(</span><em>field</em><span class="sig-paren">)</span></span></dt><dd><p><span class="yiyi-st" id="yiyi-111">在可能的情况下,将<em>字段</em>的值作为字符串返回。</span><span class="yiyi-st" id="yiyi-112"><em>字段</em>必须为整数。</span></p></dd></dl><dl class="method"><dt id="msilib.Record.SetString"><span class="yiyi-st" id="yiyi-113"> <code class="descclassname">Record.</code><code class="descname">SetString</code><span class="sig-paren">(</span><em>field</em>, <em>value</em><span class="sig-paren">)</span></span></dt><dd><p><span class="yiyi-st" id="yiyi-114">将<em>字段</em>设置为<em>值</em>到<code class="xref c c-func docutils literal"><span class="pre">MsiRecordSetString()</span></code>。</span><span class="yiyi-st" id="yiyi-115"><em>字段</em>必须为整数; <em>值</em>字符串。</span></p></dd></dl><dl class="method"><dt id="msilib.Record.SetStream"><span class="yiyi-st" id="yiyi-116"> <code class="descclassname">Record.</code><code class="descname">SetStream</code><span class="sig-paren">(</span><em>field</em>, <em>value</em><span class="sig-paren">)</span></span></dt><dd><p><span class="yiyi-st" id="yiyi-117">通过<code class="xref c c-func docutils literal"><span class="pre">MsiRecordSetStream()</span></code>将<em>字段</em>设置为名为<em>值</em>的文件的内容。</span><span class="yiyi-st" id="yiyi-118"><em>字段</em>必须为整数; <em>值</em>字符串。</span></p></dd></dl><dl class="method"><dt id="msilib.Record.SetInteger"><span class="yiyi-st" id="yiyi-119"> <code class="descclassname">Record.</code><code class="descname">SetInteger</code><span class="sig-paren">(</span><em>field</em>, <em>value</em><span class="sig-paren">)</span></span></dt><dd><p><span class="yiyi-st" id="yiyi-120">将<em>字段</em>设置为<em>值</em>到<code class="xref c c-func docutils literal"><span class="pre">MsiRecordSetInteger()</span></code>。</span><span class="yiyi-st" id="yiyi-121"><em>字段</em>和<em>值</em>必须为整数。</span></p></dd></dl><dl class="method"><dt id="msilib.Record.ClearData"><span class="yiyi-st" id="yiyi-122"> <code class="descclassname">Record.</code><code class="descname">ClearData</code><span class="sig-paren">(</span><span class="sig-paren">)</span></span></dt><dd><p><span class="yiyi-st" id="yiyi-123">通过<code class="xref c c-func docutils literal"><span class="pre">MsiRecordClearData()</span></code>将记录的所有字段设置为0。</span></p></dd></dl><div class="admonition seealso"><p class="first admonition-title"><span class="yiyi-st" id="yiyi-124">也可以看看</span></p><p class="last"><span class="yiyi-st" id="yiyi-125"><a class="reference external" href="https://msdn.microsoft.com/library?url=/library/en-us/msi/setup/msirecordgetfieldcount.asp">MsiRecordGetFieldCount</a> <a class="reference external" href="https://msdn.microsoft.com/library?url=/library/en-us/msi/setup/msirecordsetstring.asp">MsiRecordSetString</a> <a class="reference external" href="https://msdn.microsoft.com/library?url=/library/en-us/msi/setup/msirecordsetstream.asp">MsiRecordSetStream</a> <a class="reference external" href="https://msdn.microsoft.com/library?url=/library/en-us/msi/setup/msirecordsetinteger.asp">MsiRecordSetInteger</a> <a class="reference external" href="https://msdn.microsoft.com/library?url=/library/en-us/msi/setup/msirecordclear.asp">MsiRecordClear</a></span></p></div></div><div class="section" id="errors"><h2><span class="yiyi-st" id="yiyi-126">34.1.5. </span><span class="yiyi-st" id="yiyi-127">Errors</span></h2><p><span class="yiyi-st" id="yiyi-128">MSI函数周围的所有封装引发<code class="xref py py-exc docutils literal"><span class="pre">MsiError</span></code>;字符串里面的异常将包含更多的细节。</span></p></div><div class="section" id="cab-objects"><h2><span class="yiyi-st" id="yiyi-129">34.1.6. </span><span class="yiyi-st" id="yiyi-130">CAB Objects</span></h2><dl class="class"><dt id="msilib.CAB"><span class="yiyi-st" id="yiyi-131"> <em class="property">class </em><code class="descclassname">msilib.</code><code class="descname">CAB</code><span class="sig-paren">(</span><em>name</em><span class="sig-paren">)</span></span></dt><dd><p><span class="yiyi-st" id="yiyi-132">类<a class="reference internal" href="#msilib.CAB" title="msilib.CAB"><code class="xref py py-class docutils literal"><span class="pre">CAB</span></code></a>表示CAB文件。</span><span class="yiyi-st" id="yiyi-133">在MSI构建期间,文件将同时添加到<code class="docutils literal"><span class="pre">Files</span></code>表和CAB文件。</span><span class="yiyi-st" id="yiyi-134">然后,当添加了所有文件后,可以写入CAB文件,然后将其添加到MSI文件。</span></p><p><span class="yiyi-st" id="yiyi-135"><em>name</em>是MSI文件中的CAB文件的名称。</span></p><dl class="method"><dt id="msilib.CAB.append"><span class="yiyi-st" id="yiyi-136"> <code class="descname">append</code><span class="sig-paren">(</span><em>full</em>, <em>file</em>, <em>logical</em><span class="sig-paren">)</span></span></dt><dd><p><span class="yiyi-st" id="yiyi-137">将路径名称为<em>full</em>的文件添加到CAB文件中,名称<em>logical</em>。</span><span class="yiyi-st" id="yiyi-138">如果已有一个名为<em>logical</em>的文件,则会创建一个新文件名。</span></p><p><span class="yiyi-st" id="yiyi-139">返回CAB文件中文件的索引,以及CAB文件中文件的新名称。</span></p></dd></dl><dl class="method"><dt id="msilib.CAB.commit"><span class="yiyi-st" id="yiyi-140"> <code class="descname">commit</code><span class="sig-paren">(</span><em>database</em><span class="sig-paren">)</span></span></dt><dd><p><span class="yiyi-st" id="yiyi-141">生成CAB文件,将其作为流添加到MSI文件,将其放入<code class="docutils literal"><span class="pre">Media</span></code>表中,并从磁盘中删除生成的文件。</span></p></dd></dl></dd></dl></div><div class="section" id="directory-objects"><h2><span class="yiyi-st" id="yiyi-142">34.1.7. </span><span class="yiyi-st" id="yiyi-143">Directory Objects</span></h2><dl class="class"><dt id="msilib.Directory"><span class="yiyi-st" id="yiyi-144"> <em class="property">class </em><code class="descclassname">msilib.</code><code class="descname">Directory</code><span class="sig-paren">(</span><em>database</em>, <em>cab</em>, <em>basedir</em>, <em>physical</em>, <em>logical</em>, <em>default</em><span class="optional">[</span>, <em>componentflags</em><span class="optional">]</span><span class="sig-paren">)</span></span></dt><dd><p><span class="yiyi-st" id="yiyi-145">在目录表中创建一个新目录。</span><span class="yiyi-st" id="yiyi-146">目录的每个时间点都有一个当前组件,它通过<a class="reference internal" href="#msilib.Directory.start_component" title="msilib.Directory.start_component"><code class="xref py py-meth docutils literal"><span class="pre">start_component()</span></code></a>显式创建,或者在第一次添加文件时隐式创建。</span><span class="yiyi-st" id="yiyi-147">文件添加到当前组件中,并添加到cab文件中。</span><span class="yiyi-st" id="yiyi-148">要创建目录,需要指定基本目录对象(可以是<code class="docutils literal"><span class="pre">None</span></code>),物理目录的路径和逻辑目录名称。</span><span class="yiyi-st" id="yiyi-149"><em>默认</em>指定目录表中的DefaultDir插槽。</span><span class="yiyi-st" id="yiyi-150"><em>componentflags</em>指定新组件获取的默认标志。</span></p><dl class="method"><dt id="msilib.Directory.start_component"><span class="yiyi-st" id="yiyi-151"> <code class="descname">start_component</code><span class="sig-paren">(</span><em>component=None</em>, <em>feature=None</em>, <em>flags=None</em>, <em>keyfile=None</em>, <em>uuid=None</em><span class="sig-paren">)</span></span></dt><dd><p><span class="yiyi-st" id="yiyi-152">向组件表中添加一个条目,并使此组件成为此目录的当前组件。</span><span class="yiyi-st" id="yiyi-153">如果没有给出组件名称,则使用目录名称。</span><span class="yiyi-st" id="yiyi-154">如果未给出<em>特征</em>,则使用当前特征。</span><span class="yiyi-st" id="yiyi-155">如果没有给出<em>标志</em>,则使用目录的默认标志。</span><span class="yiyi-st" id="yiyi-156">如果未给出<em>密钥文件</em>,则KeyPath在组件表中保留为空。</span></p></dd></dl><dl class="method"><dt id="msilib.Directory.add_file"><span class="yiyi-st" id="yiyi-157"> <code class="descname">add_file</code><span class="sig-paren">(</span><em>file</em>, <em>src=None</em>, <em>version=None</em>, <em>language=None</em><span class="sig-paren">)</span></span></dt><dd><p><span class="yiyi-st" id="yiyi-158">将一个文件添加到目录的当前组件,如果没有当前组件,则启动一个新的组件。</span><span class="yiyi-st" id="yiyi-159">默认情况下,源和文件表中的文件名将是相同的。</span><span class="yiyi-st" id="yiyi-160">如果指定了<em>src</em>文件,则相对于当前目录进行解释。</span><span class="yiyi-st" id="yiyi-161">或者,可以为文件表中的条目指定<em>版本</em>和<em>语言</em>。</span></p></dd></dl><dl class="method"><dt id="msilib.Directory.glob"><span class="yiyi-st" id="yiyi-162"> <code class="descname">glob</code><span class="sig-paren">(</span><em>pattern</em>, <em>exclude=None</em><span class="sig-paren">)</span></span></dt><dd><p><span class="yiyi-st" id="yiyi-163">向glob模式中指定的当前组件添加文件列表。</span><span class="yiyi-st" id="yiyi-164">可以在<em>排除</em>列表中排除单个文件。</span></p></dd></dl><dl class="method"><dt id="msilib.Directory.remove_pyc"><span class="yiyi-st" id="yiyi-165"> <code class="descname">remove_pyc</code><span class="sig-paren">(</span><span class="sig-paren">)</span></span></dt><dd><p><span class="yiyi-st" id="yiyi-166">在卸载时删除<code class="docutils literal"><span class="pre">.pyc</span></code> / <code class="docutils literal"><span class="pre">.pyo</span></code>文件。</span></p></dd></dl></dd></dl><div class="admonition seealso"><p class="first admonition-title"><span class="yiyi-st" id="yiyi-167">也可以看看</span></p><p class="last"><span class="yiyi-st" id="yiyi-168"><a class="reference external" href="https://msdn.microsoft.com/library?url=/library/en-us/msi/setup/directory_table.asp">目录表</a> <a class="reference external" href="https://msdn.microsoft.com/library?url=/library/en-us/msi/setup/file_table.asp">文件表</a> <a class="reference external" href="https://msdn.microsoft.com/library?url=/library/en-us/msi/setup/component_table.asp">组件表</a> <a class="reference external" href="https://msdn.microsoft.com/library?url=/library/en-us/msi/setup/featurecomponents_table.asp">FeatureComponents表</a></span></p></div></div><div class="section" id="features"><h2><span class="yiyi-st" id="yiyi-169">34.1.8. </span><span class="yiyi-st" id="yiyi-170">Features</span></h2><dl class="class"><dt id="msilib.Feature"><span class="yiyi-st" id="yiyi-171"> <em class="property">class </em><code class="descclassname">msilib.</code><code class="descname">Feature</code><span class="sig-paren">(</span><em>db</em>, <em>id</em>, <em>title</em>, <em>desc</em>, <em>display</em>, <em>level=1</em>, <em>parent=None</em>, <em>directory=None</em>, <em>attributes=0</em><span class="sig-paren">)</span></span></dt><dd><p><span class="yiyi-st" id="yiyi-172">Add a new record to the <code class="docutils literal"><span class="pre">Feature</span></code> table, using the values <em>id</em>, <em>parent.id</em>, <em>title</em>, <em>desc</em>, <em>display</em>, <em>level</em>, <em>directory</em>, and <em>attributes</em>. </span><span class="yiyi-st" id="yiyi-173">生成的特征对象可以传递到<a class="reference internal" href="#msilib.Directory" title="msilib.Directory"><code class="xref py py-class docutils literal"><span class="pre">Directory</span></code></a>的<code class="xref py py-meth docutils literal"><span class="pre">start_component()</span></code>方法。</span></p><dl class="method"><dt id="msilib.Feature.set_current"><span class="yiyi-st" id="yiyi-174"> <code class="descname">set_current</code><span class="sig-paren">(</span><span class="sig-paren">)</span></span></dt><dd><p><span class="yiyi-st" id="yiyi-175">将此功能设为<a class="reference internal" href="#module-msilib" title="msilib: Creation of Microsoft Installer files, and CAB files. (Windows)"><code class="xref py py-mod docutils literal"><span class="pre">msilib</span></code></a>的当前功能。</span><span class="yiyi-st" id="yiyi-176">新组件将自动添加到默认要素,除非显式指定要素。</span></p></dd></dl></dd></dl><div class="admonition seealso"><p class="first admonition-title"><span class="yiyi-st" id="yiyi-177">也可以看看</span></p><p class="last"><span class="yiyi-st" id="yiyi-178"><a class="reference external" href="https://msdn.microsoft.com/library?url=/library/en-us/msi/setup/feature_table.asp">功能表</a></span></p></div></div><div class="section" id="gui-classes"><h2><span class="yiyi-st" id="yiyi-179">34.1.9. </span><span class="yiyi-st" id="yiyi-180">GUI classes</span></h2><p><span class="yiyi-st" id="yiyi-181"><a class="reference internal" href="#module-msilib" title="msilib: Creation of Microsoft Installer files, and CAB files. (Windows)"><code class="xref py py-mod docutils literal"><span class="pre">msilib</span></code></a>提供了几个将GUI表包装在MSI数据库中的类。</span><span class="yiyi-st" id="yiyi-182">然而,没有提供标准用户界面;使用<a class="reference internal" href="../distutils/apiref.html#module-distutils.command.bdist_msi" title="distutils.command.bdist_msi: Build a binary distribution as a Windows MSI file"><code class="xref py py-mod docutils literal"><span class="pre">bdist_msi</span></code></a>创建具有用于安装Python软件包的用户界面的MSI文件。</span></p><dl class="class"><dt id="msilib.Control"><span class="yiyi-st" id="yiyi-183"> <em class="property">class </em><code class="descclassname">msilib.</code><code class="descname">Control</code><span class="sig-paren">(</span><em>dlg</em>, <em>name</em><span class="sig-paren">)</span></span></dt><dd><p><span class="yiyi-st" id="yiyi-184">对话框控件的基类。</span><span class="yiyi-st" id="yiyi-185"><em>dlg</em>是控件所属的对话框对象,<em>name</em>是控件的名称。</span></p><dl class="method"><dt id="msilib.Control.event"><span class="yiyi-st" id="yiyi-186"> <code class="descname">event</code><span class="sig-paren">(</span><em>event</em>, <em>argument</em>, <em>condition=1</em>, <em>ordering=None</em><span class="sig-paren">)</span></span></dt><dd><p><span class="yiyi-st" id="yiyi-187">对此控件的<code class="docutils literal"><span class="pre">ControlEvent</span></code>表进行输入。</span></p></dd></dl><dl class="method"><dt id="msilib.Control.mapping"><span class="yiyi-st" id="yiyi-188"> <code class="descname">mapping</code><span class="sig-paren">(</span><em>event</em>, <em>attribute</em><span class="sig-paren">)</span></span></dt><dd><p><span class="yiyi-st" id="yiyi-189">在此控件的<code class="docutils literal"><span class="pre">EventMapping</span></code>表中输入内容。</span></p></dd></dl><dl class="method"><dt id="msilib.Control.condition"><span class="yiyi-st" id="yiyi-190"> <code class="descname">condition</code><span class="sig-paren">(</span><em>action</em>, <em>condition</em><span class="sig-paren">)</span></span></dt><dd><p><span class="yiyi-st" id="yiyi-191">对此控件的<code class="docutils literal"><span class="pre">ControlCondition</span></code>表进行输入。</span></p></dd></dl></dd></dl><dl class="class"><dt id="msilib.RadioButtonGroup"><span class="yiyi-st" id="yiyi-192"> <em class="property">class </em><code class="descclassname">msilib.</code><code class="descname">RadioButtonGroup</code><span class="sig-paren">(</span><em>dlg</em>, <em>name</em>, <em>property</em><span class="sig-paren">)</span></span></dt><dd><p><span class="yiyi-st" id="yiyi-193">创建名为<em>名称</em>的单选按钮控件。</span><span class="yiyi-st" id="yiyi-194"><em>属性</em>是在选择单选按钮时设置的安装程序属性。</span></p><dl class="method"><dt id="msilib.RadioButtonGroup.add"><span class="yiyi-st" id="yiyi-195"> <code class="descname">add</code><span class="sig-paren">(</span><em>name</em>, <em>x</em>, <em>y</em>, <em>width</em>, <em>height</em>, <em>text</em>, <em>value=None</em><span class="sig-paren">)</span></span></dt><dd><p><span class="yiyi-st" id="yiyi-196">向坐标<em>x</em>,<em>y</em>,<em>宽度</em>,<em>添加名为<em>名称</em>的单选按钮height</em>和标签<em>text</em>。</span><span class="yiyi-st" id="yiyi-197">如果<em>值</em>为<code class="docutils literal"><span class="pre">None</span></code>,则默认为<em>名称</em>。</span></p></dd></dl></dd></dl><dl class="class"><dt id="msilib.Dialog"><span class="yiyi-st" id="yiyi-198"> <em class="property">class </em><code class="descclassname">msilib.</code><code class="descname">Dialog</code><span class="sig-paren">(</span><em>db</em>, <em>name</em>, <em>x</em>, <em>y</em>, <em>w</em>, <em>h</em>, <em>attr</em>, <em>title</em>, <em>first</em>, <em>default</em>, <em>cancel</em><span class="sig-paren">)</span></span></dt><dd><p><span class="yiyi-st" id="yiyi-199">返回一个新的<a class="reference internal" href="#msilib.Dialog" title="msilib.Dialog"><code class="xref py py-class docutils literal"><span class="pre">Dialog</span></code></a>对象。</span><span class="yiyi-st" id="yiyi-200">在<code class="docutils literal"><span class="pre">Dialog</span></code>表中创建一个条目,指定的坐标,对话框属性,标题,第一个,默认和取消控件的名称。</span></p><dl class="method"><dt id="msilib.Dialog.control"><span class="yiyi-st" id="yiyi-201"> <code class="descname">control</code><span class="sig-paren">(</span><em>name</em>, <em>type</em>, <em>x</em>, <em>y</em>, <em>width</em>, <em>height</em>, <em>attributes</em>, <em>property</em>, <em>text</em>, <em>control_next</em>, <em>help</em><span class="sig-paren">)</span></span></dt><dd><p><span class="yiyi-st" id="yiyi-202">返回新的<a class="reference internal" href="#msilib.Control" title="msilib.Control"><code class="xref py py-class docutils literal"><span class="pre">Control</span></code></a>对象。</span><span class="yiyi-st" id="yiyi-203">在<code class="docutils literal"><span class="pre">Control</span></code>表中的条目使用指定的参数。</span></p><p><span class="yiyi-st" id="yiyi-204">这是一个通用的方法;对于特定类型,提供专门的方法。</span></p></dd></dl><dl class="method"><dt id="msilib.Dialog.text"><span class="yiyi-st" id="yiyi-205"> <code class="descname">text</code><span class="sig-paren">(</span><em>name</em>, <em>x</em>, <em>y</em>, <em>width</em>, <em>height</em>, <em>attributes</em>, <em>text</em><span class="sig-paren">)</span></span></dt><dd><p><span class="yiyi-st" id="yiyi-206">添加并返回<code class="docutils literal"><span class="pre">Text</span></code>控件。</span></p></dd></dl><dl class="method"><dt id="msilib.Dialog.bitmap"><span class="yiyi-st" id="yiyi-207"> <code class="descname">bitmap</code><span class="sig-paren">(</span><em>name</em>, <em>x</em>, <em>y</em>, <em>width</em>, <em>height</em>, <em>text</em><span class="sig-paren">)</span></span></dt><dd><p><span class="yiyi-st" id="yiyi-208">添加并返回<code class="docutils literal"><span class="pre">Bitmap</span></code>控件。</span></p></dd></dl><dl class="method"><dt id="msilib.Dialog.line"><span class="yiyi-st" id="yiyi-209"> <code class="descname">line</code><span class="sig-paren">(</span><em>name</em>, <em>x</em>, <em>y</em>, <em>width</em>, <em>height</em><span class="sig-paren">)</span></span></dt><dd><p><span class="yiyi-st" id="yiyi-210">添加并返回<code class="docutils literal"><span class="pre">Line</span></code>控件。</span></p></dd></dl><dl class="method"><dt id="msilib.Dialog.pushbutton"><span class="yiyi-st" id="yiyi-211"> <code class="descname">pushbutton</code><span class="sig-paren">(</span><em>name</em>, <em>x</em>, <em>y</em>, <em>width</em>, <em>height</em>, <em>attributes</em>, <em>text</em>, <em>next_control</em><span class="sig-paren">)</span></span></dt><dd><p><span class="yiyi-st" id="yiyi-212">添加并返回<code class="docutils literal"><span class="pre">PushButton</span></code>控件。</span></p></dd></dl><dl class="method"><dt id="msilib.Dialog.radiogroup"><span class="yiyi-st" id="yiyi-213"> <code class="descname">radiogroup</code><span class="sig-paren">(</span><em>name</em>, <em>x</em>, <em>y</em>, <em>width</em>, <em>height</em>, <em>attributes</em>, <em>property</em>, <em>text</em>, <em>next_control</em><span class="sig-paren">)</span></span></dt><dd><p><span class="yiyi-st" id="yiyi-214">添加并返回<code class="docutils literal"><span class="pre">RadioButtonGroup</span></code>控件。</span></p></dd></dl><dl class="method"><dt id="msilib.Dialog.checkbox"><span class="yiyi-st" id="yiyi-215"> <code class="descname">checkbox</code><span class="sig-paren">(</span><em>name</em>, <em>x</em>, <em>y</em>, <em>width</em>, <em>height</em>, <em>attributes</em>, <em>property</em>, <em>text</em>, <em>next_control</em><span class="sig-paren">)</span></span></dt><dd><p><span class="yiyi-st" id="yiyi-216">添加并返回<code class="docutils literal"><span class="pre">CheckBox</span></code>控件。</span></p></dd></dl></dd></dl><div class="admonition seealso"><p class="first admonition-title"><span class="yiyi-st" id="yiyi-217">也可以看看</span></p><p class="last"><span class="yiyi-st" id="yiyi-218"><a class="reference external" href="https://msdn.microsoft.com/library?url=/library/en-us/msi/setup/dialog_table.asp">对话框</a> <a class="reference external" href="https://msdn.microsoft.com/library?url=/library/en-us/msi/setup/control_table.asp">控制表</a> <a class="reference external" href="https://msdn.microsoft.com/library?url=/library/en-us/msi/setup/controls.asp">控制类型</a> <a class="reference external" href="https://msdn.microsoft.com/library?url=/library/en-us/msi/setup/controlcondition_table.asp">ControlCondition表</a> <a class="reference external" href="https://msdn.microsoft.com/library?url=/library/en-us/msi/setup/controlevent_table.asp">ControlEvent表</a> <a class="reference external" href="https://msdn.microsoft.com/library?url=/library/en-us/msi/setup/eventmapping_table.asp"></a> <a class="reference external" href="https://msdn.microsoft.com/library?url=/library/en-us/msi/setup/radiobutton_table.asp">RadioButton表</a></span></p></div></div><div class="section" id="precomputed-tables"><h2><span class="yiyi-st" id="yiyi-219">34.1.10. </span><span class="yiyi-st" id="yiyi-220">Precomputed tables</span></h2><p><span class="yiyi-st" id="yiyi-221"><a class="reference internal" href="#module-msilib" title="msilib: Creation of Microsoft Installer files, and CAB files. (Windows)"><code class="xref py py-mod docutils literal"><span class="pre">msilib</span></code></a>提供了几个仅包含模式和表定义的子包。</span><span class="yiyi-st" id="yiyi-222">目前,这些定义基于MSI 2.0版。</span></p><dl class="data"><dt id="msilib.schema"><span class="yiyi-st" id="yiyi-223"> <code class="descclassname">msilib.</code><code class="descname">schema</code></span></dt><dd><p><span class="yiyi-st" id="yiyi-224">这是MSI 2.0的标准MSI模式,其中<em>表</em>变量提供表定义列表,<em>_Validation_records</em>提供MSI验证数据。</span></p></dd></dl><dl class="data"><dt id="msilib.sequence"><span class="yiyi-st" id="yiyi-225"> <code class="descclassname">msilib.</code><code class="descname">sequence</code></span></dt><dd><p><span class="yiyi-st" id="yiyi-226">此模块包含标准序列表的表内容:<em>AdminExecuteSequence</em>,<em>AdminUISequence</em>,<em>AdvtExecuteSequence</em>,<em>InstallExecuteSequence</em>和<em> InstallUISequence</em>。</span></p></dd></dl><dl class="data"><dt id="msilib.text"><span class="yiyi-st" id="yiyi-227"> <code class="descclassname">msilib.</code><code class="descname">text</code></span></dt><dd><p><span class="yiyi-st" id="yiyi-228">此模块包含标准安装程序操作的UIText和ActionText表的定义。</span></p></dd></dl></div></div></div> |