Finish-Install 操作

注意

通用或移动驱动程序包不支持本部分所述的功能。 请参阅 使用通用 INF 文件

完成安装操作 允许安装程序完成安装操作。

安装程序可以指定要在类安装程序、类共同安装程序或设备共同安装程序中执行的完成安装操作,从 Windows Vista 及更高版本开始。 完成所有其他安装操作(包括完成安装向导页) ,在管理员的上下文中运行完成安装操作。

在 Windows 7 中,默认的完成安装操作由系统提供的 SetupDiFinishInstallAction 函数提供。 此函数在管理员的交互式上下文中处理为设备设置的 RunOnce 注册表项 。 如果设备没有类安装程序,或者类安装程序返回ERROR_DI_DO_DEFAULT以响应 DIF_FINISHINSTALL_ACTION 请求,则 Windows 会在设备的所有安装程序完成其完成安装操作后调用 SetupDiFinishInstallAction

在 Windows 8 及更高版本中,完成安装操作不会作为设备安装的一部分自动运行,并且 SetupDiFinishInstallAction 函数已被删除。 相反,管理员 (或可以向 UAC 提示提供管理员凭据的受限用户) 必须转到操作中心并解决“完成安装设备软件”维护项目,才能运行完成安装操作。 在此之前,不会运行完成安装操作。 例如,如果用户插入了安装包含完成安装操作的驱动程序的设备,则完成安装操作不会在当时自动运行。 相反,完成安装操作将在用户手动启动操作的某个时间点运行。 此后,当 Windows 运行完成安装操作时,该操作将有一次运行的机会。 如果操作失败,它必须采取适当的步骤,以允许用户重试并稍后完成操作。 同样,仍可以通过完成安装操作来安装驱动程序随附的支持软件,但也不会自动安装。

或者,根据你的方案,在 Windows 8 及更高版本中,你可能能够使用新的设备应用模型。 有关设备应用的详细信息,请参阅 设计出色的硬件体验

完成安装操作在以下情况下很有用:

  • 运行不是设计为作为完成安装向导页的一部分运行的特定于设备的应用程序安装程序。 如果此类安装程序具有自己的用户界面,则使用完成安装操作安装应用程序提供更好的用户体验。

    例如,假设设备制造商除了要安装设备的驱动程序之外,还要安装特定于设备的应用程序,并且特定于设备的应用程序具有其自己的安装程序及其自己的用户界面。 为了提供最佳用户体验,设备制造商将运行安装程序作为完成安装操作。 这样,当 Windows 检测到设备并找到驱动程序时,Windows 首先安装驱动程序,然后运行应用程序的安装程序。

  • 若要运行只能在交互式用户上下文中运行的安装程序, (客户端安装) 。 例如,可以使用驱动程序包INF 文件的 INF ControlFlags 节中的 InteractiveInstall 指令启动此类安装程序。

    注意 从 Windows Vista 开始,此类安装程序的运行方式不能与早期版本的 Windows 相同。 这是因为 Windows Vista 和更高版本的 Windows 不支持在客户端安装中安装设备。 但是,如果驱动程序包包含类安装程序、类共同安装程序或启动安装程序的设备共同安装程序,则此类安装程序可以作为完成安装操作运行。

本部分更详细地讨论完成安装操作,并包含以下主题:

Finish-Install 操作概述

实施 Finish-Install 操作

如何处理 Finish-Install 操作