创建引导程序包

安装程序是一个通用安装程序,可配置为检测和安装可再发行组件(如 Windows Installer(.msi)文件和可执行程序。 安装程序也称为引导程序。 它通过一组 XML 清单进行编程,这些清单指定要管理组件的安装的元数据。 ClickOnce 的“先决条件 ”对话框中显示的每个可再发行组件或必备组件都是引导程序包。 引导程序包是一组目录和文件,其中包含描述应如何安装先决条件的清单文件。

引导程序首先检测是否已安装任何必备组件。 如果未安装先决条件,首先引导程序会显示许可协议。 其次,最终用户接受许可协议后,将开始安装先决条件。 否则,如果检测到所有先决条件,引导程序将启动应用程序安装程序。

创建自定义引导程序包

可以使用 Visual Studio 中的 XML 编辑器生成引导程序清单。 若要查看创建引导程序包的示例,请参阅 演练:使用隐私提示创建自定义引导程序

若要创建引导程序包,必须创建产品清单,并为组件的每个本地化版本创建一个包清单。

  • 产品清单 product.xml包含包的任何非特定语言元数据。 这包含所有可再发行组件本地化版本的通用元数据。 若要创建此文件,请参阅 “如何:创建产品清单”。

  • 包清单 package.xml包含特定于语言的元数据;它通常包含本地化的错误消息。 该组件的每个本地化版本必须至少有一个包清单。 若要创建此文件,请参阅 “如何:创建包清单”。

创建这些文件后,将产品清单文件放入一个名为自定义引导程序的文件夹。 包清单文件进入一个根据区域设置命名的文件夹。 例如,如果包清单文件用于英语重新分发,请将该文件放入名为 en 的文件夹。 针对每个区域设置重复此过程,例如 ja 表示日语,de 表示德语。 最终的自定义引导程序包可以具有以下文件夹结构。

CustomBootstrapperPackage
  product.xml
  CustomBootstrapper.msi
  de
    eula.rtf
    package.xml
  en
    eula.rtf
    package.xml
  ja
    eula.rtf
    package.xml

接下来,将可再发行文件复制到引导程序文件夹目录。 有关详细信息,请参阅 如何:创建本地化的引导程序包

*\Program Files (x86)\Microsoft SDKs\ClickOnce Bootstrapper\Packages*

*<VS Install Path>\MSBuild\Microsoft\VisualStudio\BootstrapperPackages*

注释

从 Visual Studio 2019 Update 7 版本开始,Visual Studio 安装路径下列出的路径有效。

还可以从以下注册表项中的 Path 值中找到引导程序文件夹位置:

*HKLM\Software\Microsoft\GenericBootstrapper*

在 64 位系统上,使用以下注册表项:

*HKLM\Software\Wow6432Node\Microsoft\GenericBootstrapper*

每个可再发行组件都显示在包目录下的自己的子文件夹中。 产品清单和可再发行文件必须放入此子文件夹中。 组件和包清单的本地化版本必须放入按文化名称命名的子文件夹中。

将这些文件复制到引导程序文件夹中后,引导程序包会自动显示在 Visual Studio 先决条件 对话框中。 如果自定义引导程序包未显示,请关闭,然后重新打开 “先决条件 ”对话框。 有关详细信息,请参阅 “先决条件”对话框

下表显示了引导程序自动填充的属性。

资产 DESCRIPTION
应用程序名称 应用程序的名称。
处理器架构 可执行文件面向的平台的处理器和字长。 包括以下值:

-英特尔
- IA64
- AMD64
VersionNT Windows 操作系统的版本号。 版本的语法为 Major.Minor.ServicePack。
VersionMSI 在安装过程中运行的 Windows Installer 程序集版本(msi.dll)。
AdminUser 如果用户具有管理员权限,则设置此属性。 值为 true 或 false。
安装模式 安装模式指示需要从何处安装组件。 包括以下值:

- HomeSite - 先决条件需要从供应商的网站获取和安装。
- SpecificSite - 先决条件是从所选位置安装的。
- SameSite - 从应用程序所在的同一位置安装必备组件。

将可再发行组件与应用程序安装分开

可以防止在安装程序项目中部署可再发行组件。 为此,请在 .NET Framework 目录中的 RedistList 文件夹中创建可再发行列表:

%ProgramFiles%\Microsoft.NET\RedistList

可再发行组件列表是一个 XML 文件,应使用以下格式命名: <公司名称>。<组件名称>.RedistList.xml。 因此,例如,如果组件称为 Acme 创建的 DataWidgets,请使用 Acme.DataWidgets.RedistList.xml。 可再发行组件列表内容的示例可能类似于:

<?xml version="1.0" encoding="UTF-8"?>
<FileList Redist="Acme.DataWidgets" >
<File AssemblyName="Acme.DataGrid" Version="1.0.0.0" PublicKeyToken="b03f5f7f11d50a3a" Culture="neutral" ProcessorArchitecture="MSIL" InGAC="true" />
</FileList>