处理可安装的功能和选项

重要

建议使用 Microsoft 的 IPP 收件箱类驱动程序以及打印支持应用 (PSA) ,自定义 Windows 10 和 11 中的打印体验,以便进行打印机设备开发。

有关详细信息,请参阅 打印支持应用设计指南

打印机的某些功能或选项可能可安装。 例如,打印机可以接受可选的信封送纸器,该信封送纸器当前可能附加,也可能不附加。 必须在 GPD 文件中以两种方式描述此信封送纸器:

  • 作为 InputBin 功能的选项。

  • 作为可安装的“功能” (,即使它确实是一个选项) ,它允许用户指示它是否实际安装。

首先,若要将信封送纸器和自动送纸器指定为 InputBin 功能的选项,可以使用以下 GPD 条目。

*Feature: InputBin
{
    *Name: "Input Bin"
    *Option: AUTO
    {
        *Name: "Automatic Feeder"
        *Command: CmdSelect {Command Attributes}
    }
    *Option: ENVFEED
    {
        *Name: "Envelope Feeder"
        *Command: CmdSelect {Command Attributes}
    }
}

若要使信封送纸器可安装,需要其他 GPD 条目,如下所示:

*InstalledOptionName: "Installed"
*NotInstalledOptionName: "Not installed"
*Feature: InputBin
{
    *Name: "Input Bin"
    *Option: AUTO
    {
        *Name: "Automatic Feeder"
        *Command: CmdSelect {Command Attributes}
    }
    *Option: ENVFEED
    {
        *Name: "Envelope Feeder"
        *Command: CmdSelect {Command Attributes}
        *Installable?: TRUE
        *InstallableFeatureName: "Optional Envelope Feeder"
    }
}

在信封送纸器选项条目中,添加了两个属性:

  • *可安装?属性指示选项可安装。

  • *InstallableFeatureName 属性指定 Unidrv 显示的文本字符串,以便用户可以指示是否实际安装了该选项。

每当功能或选项的 “可安装性” 设置为 TRUE 时,Unidrv 会为属性表显示创建附加功能。 (请注意,即使可安装项是一个选项,Unidrv 也会在属性表中创建一个功能表示形式。) 此 Unidrv 合成功能由 随 *InstallableFeatureName 一起提供的字符串标识。 该功能提供两个选项,“已安装”和“未安装”,并允许用户选择其中一个选项。 字符串“Installed”和“Not installed”是使用 *InstalledOptionName 和 *NotInstalledOptionName 属性指定的,以便在其他文本更合适时对其进行修改。

因此,在我们的示例中,属性表将包含一个 InputBin 功能,标记为“输入箱”,其中包含两个选项,标记为“自动进纸器和信封送纸器”。 属性表还将包含一个附加功能,标记为 “可选信封送纸器”,并带有两个选项,标记为 “已安装” 和“ 未安装”。 如果用户首先在“可选信封送纸器”下选择“安装”,则只能选择“输入箱”下的“信封送纸器”。

有时,必须指示某些可安装选项不能同时安装,或者如果安装了其他一些可安装选项,则无法选择某个不可安装的选项。 若要处理这些情况,请使用指定 选项约束的 GPD 条目。

不能使用 *可安装?属性具有需要 *DisabledFeatures 条目的可选功能。 对于这些功能,必须使用“已安装”和“未安装”选项显式指定可选功能。 例如,假设打印机具有可选的双工单元。 双工功能 (请参阅 标准功能) 如果未安装双工单元,则必须禁用。 必须使用“已安装”和“未安装”选项定义“可选双工单元”功能。 在“未安装”*选项条目中,将包含双工功能的 *DisabledFeatures 条目。 可以使用以下 GPD 条目:

*Feature: DuplexUnit
{
    *ConflictPriority: 3   *% Make priority higher than Duplex feature
    *Name: "Optional Duplexing Unit"
    *Option: Installed
    {
        *Name: "Installed"
    }
    *Option: NotInstalled
    {
        *Name: "Not Installed"
        *DisabledFeatures: LIST(Duplex)
        *Constraints: LIST (Duplex.LongEdge, Duplex.ShortEdge)
    }
}

请务必指定任何相关的 选项约束,如图所示。