启动

目前,每次尝试使用 Windows Installer 的安装开始时都会检查用户的计算机上是否存在该安装程序,如果不存在,则检查用户和计算机是否已准备好安装 Windows Installer。 Windows Installer SDK 随附了安装应用程序 Instmsi.exe,后者可包含用于安装 Windows Installer 的所有逻辑和功能。 但是,引导应用程序必须管理此安装。

引导应用程序必须首先检查以确认当前是否安装了 Windows Installer。 应用程序可以使用 DllGetVersion 获取当前安装的 Windows Installer 版本。 如果当前未安装 Windows Installer,则引导应用程序必须查询操作系统以确定需要哪个版本的 Instmsi.exe。 启动 Windows Installer 安装后,引导应用程序必须处理来自 Instmsi.exe 应用程序的返回码,并处理在安装 Windows Installer 期间发生的任何重启。 有关详细信息,请参阅确定 Windows Installer 版本

以下示例演示安装 Microsoft Office 2000 的安装应用程序如何检查用户的系统并配置 Windows Installer 安装。 此示例是专为安装 Office 2000 而编写,仅供参考。

当用户将 Office 2000 CD-ROM 插入其计算机时,Setup.exe 会尝试启动维护模式、安装应用程序或者不执行任何操作,具体取决于用户的要求。 以下几部分介绍名为 Setup.exe 的 Office 2000 安装应用程序如何限定用户及其计算机,如何使用 Msiexec.exe 应用程序构造命令行和安装 Windows Installer。

安装 Office 2000 时 Setup.exe 如何启动 Windows Installer

  1. 用户将 Office 2000 CD-ROM 插入其计算机。 Windows 操作系统使用 /autorun 开关和 Autorun.inf 文件启动 Setup.exe。 Autorun.inf 文件位于 Office 2000 CD-ROM 的根目录中,包含以下几部分:

    [Autorun]

    [Office Features]

    [Product Information]

    [ServicePack]。

    [Autorun] 部分包含一个命令行,用于执行 Setup.exe 应用程序,执行用于显示光盘的图标,并包含用于将“安装”选项和“配置”选项添加到 CD-ROM 上下文菜单的信息。

    [Office Features] 部分包含功能和功能名称对的列表。

    [Product Information] 部分指定应用程序的名称和版本。

    [ServicePack] 部分允许网络管理员设置所需的最低 Service Pack 级别。 如果本地操作系统没有所需的 Service Pack,网络管理员可以使用此部分创作显示的警报消息文本。

    下面是一个 Autorun.inf 示例。

    [autorun] 
    OPEN=setup.EXE /AUTORUN /KEY:Software\Microsoft\Office\9.0\Common\General\InstallProductID
    ICON=setup.EXE,1
    shell\configure=&Configure
    shell\configure\command=setup.EXE
    shell\install=&Install
    shell\install\command=setup.EXE
    [OfficeFeatures]
    Feature1=ACCESSFiles
    Feature2=OfficeFiles
    Feature3=WORDFiles
    Feature4=EXCELFiles
    Feature5=PPTFiles
    [ProductInformation]
    DisplayName=Microsoft Office 9
    Version=9.0
    ProductCode={product guid}
    [ServicePack]
    MessageText="The operating system does not have a required service pack. Please download and install this from www.microsoft.com."
    SPLevel=3
    
  2. Setup.exe 应用程序检查 _MsiPromptForCD 互斥。 Windows Installer 在提示用户插入 CD-ROM 时创建此互斥。 存在互斥表示 Windows Installer 正在运行已请求 Office 2000 CD-ROM 的安装。 在这种情况下,Setup.exe 应用程序会立即退出,并允许 Office 2000 安装继续。 如果不存在互斥,Setup.exe 应用程序将继续在步骤 3 中评估注册表项以确定是否安装了 Office 2000。

  3. Setup.exe 应用程序会检查是否存在 Office9 注册表项:

    HKCU/Software/Microsoft/Office/9.0/Common/General/InstallProductID

    如果此注册表项不存在,Setup.exe 应用程序将继续步骤 6 以检查操作系统,确定操作系统是否有资格安装 Office 2000。

  4. 如果 Office 2000 注册表项存在,Setup.exe 应用程序通过调用 MsiQueryProductState 检查当前安装状态。 返回状态为 InstallState_Default 指示已安装 Office 2000,并且 Setup.exe 应用程序将继续步骤 5 以检查 Office 2000 是否从源运行。

    如果未安装 Office 2000,Setup.exe 应用程序将继续步骤 6 以检查操作系统,确定它是否有资格安装 Office 2000。

  5. Setup.exe 应用程序为 Autorun.inf 文件的 [OfficeFeatures] 部分中的每个功能调用 MsiQueryFeatureState。 如果这些功能中的任何一个返回 INSTALLSTATE_SOURCE,则表示该功能正在从源运行,并且 Setup.exe 应用程序会立即退出。

    如果没有任何功能返回 INSTALLSTATE_SOURCE,Setup.exe 应用程序将启动安装程序应用程序 Msiexec.exe,并在退出之前显示 Windows Installer 维护模式。

  6. Setup.exe 应用程序确定操作系统是否有资格安装 Office 2000。 安装 Office 2000 需要 Windows XP。 如果操作系统需要 Service Pack 更新才能使用 Office 2000,Setup.exe应用程序将显示 Autorun.inf 文件中指定的文本。 如果操作系统不符合 Office 2000 或 Office 2000 升级的条件,Setup.exe 应用程序将显示一条消息,阻止用户继续。

    如果操作系统符合 Office 2000 条件,Setup.exe 应用程序将继续步骤 7,这将确定是否在用户的计算机上安装 Windows Installer。

  7. 如果用户的计算机上存在 Windows Installer,则 Setup.exe 应用程序启动 Msiexec.exe 应用程序,并将 Office 2000.msi 文件传递给该应用程序。

    如果本地计算机上未安装 Windows Installer,则 Setup.exe 应用程序将继续步骤 8,这将确定操作系统是否有资格安装 Windows Installer。

  8. 如果本地计算机符合安装 Windows Installer 的条件,则 Setup.exe 应用程序将运行适用于该平台的 Instmsi.exe 安装程序应用程序的正确版本。 Setup.exe 可能会传递“/q”命令行开关来禁止用户界面并阻止用户更改任何安装配置选项。

  9. Setup.exe应用程序加载新安装的 Msi.dll 文件,并执行对 MsiInstallProduct 函数的调用以安装用户的应用程序。

Setup.exe 命令行参数

Setup.exe 应用程序使管理员和用户能够将命令行选项传递给 Msiexec.exe 应用程序。 有关详细信息,请参阅命令行选项。 下表列出了可与 Setup.exe 一起使用的命令选项。

选项 使用情况 含义
/autorun setup.exe /autorun 运行上述 Autorun.inf。
/a setup.exe /a 启动管理安装。
/j [u|m]
[u|m]包 /t 转换列表

[u|m]Package /g LanguageID
播发产品。 此选项将忽略在命令行上输入的任何属性值。 u 播发到当前用户。
m 播发给计算机的所有用户。
g 语言标识符
t 将转换应用于播发的包。
/I setup.exe /I Office9.msi /t ProgramMgmt.mst 指定 Setup.exe 要安装的 .msi 文件。 如果未包含 /I 选项,Setup.exe 将使用 Office9.msi 文件。
/o<属性=值> setup.exe /o CDKEY=111111-1111 设置 .msi 文件中的属性。 Setup.exe 将这些属性按照写入方式传递给 msiexec。
/q setup.exe /q 设置安装的 UI 级别。 /q no UI(对于 msiexec 为 /qn)/qb basic UI
/qr 精简 UI。
/m# setup.exe /m4 根据选择协议支持多个许可证。 此属性由许可证验证自定义操作用于写入 LV 证书。 /m 选项后面必须带有允许的解锁次数。 /m 选项指定的值应设置为 Office9.msi 文件中的“M”属性。 如果未指定值,但将 /m 选项与安装程序一起使用,则应设置值 0。 需要 /m 选项才能支持使用 CD 或网络选择客户。
/settings setup.exe /settings mysettings.ini 使管理员能够指定一个 .ini 文件,其中包含 Office 2000 安装过程中要传递的所有自定义设置。 请参阅下文对 .ini 文件的说明。

使用 .ini 文件

创建初始化文件可能比创建长命令行更容易。 使用 /settings 选项,Setup.exe 应用程序读取指定的 .ini 文件,并构造一个命令行以传递给 Msiexec.exe 应用程序。 .ini 文件中仅支持命令行中支持的属性。 如果同时在 .ini 文件和命令行中找到某个属性或值,则命令行设置将覆盖 .ini 文件设置。

.ini 文件格式为:

[msi]

[mst]

[options]

[Display]

.ini 文件的 [msi] 部分指定用于安装的安装包路径。 对应于命令行中的 /I 选项。

.ini 文件的 [mst] 部分指定用于此安装的转换的路径。 对应于命令行中的 /j 选项。 使用 MST1 MST (N),可指示多个转换,每行中指示一个。 解析为命令行时,.ini 文件中的列表将从左到右旋转。 请注意,与 MST(N) 标题相关联的数字仅用于维护唯一标识符,没有编程意义。

[options] 部分允许网络管理员设置和替代 .msi 或 .mst 文件中的属性。 使用 /o 选项将 .ini 文件中设置的选项添加到命令行。 选项部分中的每个选项都必须具有属性名称和值。

[Display] 部分用于设置在安装期间使用的用户界面级别。 对应于命令行中的 /q 选项。 有效值为 none、basic、reduced 和 full。

.ini 文件示例

[MSI]

MSI=\\sourceshare\Office2000\Office2000.msi

[MST]

MST1=\\sourceshare\Office2000\trns1.mst

MST2=\\sourceshare\Office2000\trns2.mst

[Options]

PUBLICPROPERTY=your value

[Display]

Display=None