《XML文件部分元素解释》
XML文档元素部分解释整理,更全面的内容请参考 WiX Toolset 的官方文档。
WiX Toolset v3 Manual Table of Contents | WiX Toolset
目录
*Product 属性
Id:定义产品的唯一标识符,为产品的GUID
GUID可以借助VS-->工具--->创建GUID ,有五种格式来供选择
<Product Id="{YOUR-GUID-HERE}" ...>
Name:定义产品的名称,这是显示在安装向导和控制面板中的产品名称
<Product Name="My Product" ...>
Language:定义产品的安装语言,标准的区域性标志符(LCID)
<Product Language="1033" ...>
列举几个常见的区域代号:
语言 语言-国家 Language Codepage
English en-us 1033 1252
Simplified Chinese zh-cn 2052 936
Traditional Chinese zh-tw 1028 950
Version:定义产品的版本号(主版本、次版本、生成版本、修订版本)
<Product Version="1.0.0.0" ...>
Manufacturer:定义产品的制作厂商或公司名称
<Product Manufacturer="MyCompany" ...>
UpgradeCode:定义产品的升级编码,用于升级与卸载
<Product UpgradeCode="{YOUR-UPGRADECODE-GUID-HERE}" ...>
*Package 定义安装包的属性,安装类型和压缩级别等
InstallerVersion:定义了安装程序引擎的最低版本要求,是一个整数值。用Windows Installer的主要版本乘以100 加上Window Installer的次要版本。比如 “200” 代表的是Windows Installer2.0,而405代表的是Windows Installer4.5。
<Package InstallerVersion="200" ... />
Compressed:用于定义是否压缩安装包中的文件,将其设置为 "yes" 表示要进行压缩,"no" 表示不压缩。
<Package Compressed="yes" ... />
InstallScope:定义产品的安装范围,值可以是perMachine(所有用户安装) 或者 perUser(仅当前用户安装)。
<Package InstallScope="perMachine" ... />
Comments:用于提供关于安装程序的注释或说明。这是一个可选的属性,通常用于文档或描述。
<Package Comments="This is my installer package." ... />
Description:用于定义安装程序的描述。与Comments属性类似,它提供有关安装程序的说明信息。
<Package Description="My Installer Package" ... />
InstallPrivileges:字面意思为安装优先级,有limited和elevated两种,后者是默认值。
Platform:定义了安装程序的目标平台,例如 x86、x64 或 Intel。
<Package Platform="x64" ... />
SummaryCodepage:定义了安装程序摘要信息的代码页。
<Package SummaryCodepage="1252" ... />
*MajorUpgrade 定义安装程序中的主要升级策略
DowngradeErrorMessage:用于定义在尝试安装旧版本时显示的错误消息。
<MajorUpgrade DowngradeErrorMessage="A newer version of the product is already installed." />
Schedule:定义了主要升级的调度方式。它有三个可能的值:
afterInstallInitialize(默认值):升级在 InstallInitialize 时执行。
afterInstallExecute:升级在 InstallExecute 时执行。
both:升级同时在 InstallInitialize 和 InstallExecute 时执行。
<MajorUpgrade Schedule="afterInstallInitialize" />
DowngradeDuringUpgrade:定义了是否允许在升级过程中降级到较旧的版本。如果设置为 "yes",则允许降级;如果设置为 "no",则不允许。
<MajorUpgrade DowngradeDuringUpgrade="no" />
AllowSameVersionUpgrades:定义了是否允许在同一版本上进行重新安装。通常,WiX 默认不允许这样的操作。将其设置为 "yes" 可以允许在相同版本上重新安装。
Disallow:元素允许您列出要禁止的旧版本。这对于强制用户进行升级并防止他们降级到特定版本非常有用。
<MajorUpgrade AllowSameVersionUpgrades="yes">
<Disallow UpgradeCode="{OLD-UPGRADE-CODE}" Version="[OLD-VERSION]" />
</MajorUpgrade>
IgnoreRemoveFailure:定义了是否忽略从旧版本中删除文件失败的错误。将其设置为 "yes" 可能会在某些情况下有用,但也可能导致问题。
<MajorUpgrade IgnoreRemoveFailure="no" />
AllowDowngrades:定义了是否允许降级安装。将其设置为 "yes" 允许用户降级到较旧的版本。
<MajorUpgrade AllowDowngrades="yes" />
MigrateFeatures:定义了在升级时是否要迁移功能状态。将其设置为 "yes" 可以在升级时保留用户选择的功能。
<MajorUpgrade MigrateFeatures="yes" />
*Feature 定义安装包的功能
子元素中的ComponentGroupRef 是和 ComponentGroup对应的。前者相当于一个安装目录,后者记录了安装文件的具体位置。
Id:唯一标识符,用于在 WiX 文件中引用该功能。
Title:定义了用户界面上显示的功能的名称。
Level:定义了功能的级别。级别是一个整数,用于控制功能的默认安装状态。通常,级别为 1 表示默认情况下安装功能,级别为 0 表示默认情况下不安装功能。
<Feature Id="MainFeature" Title="Main Feature" Level="1">
<!-- 子组件和其他配置 -->
</Feature>
Description:用于提供功能的描述信息。
<Feature Id="MainFeature" Title="Main Feature" Level="1" Description="This is the main feature of the application.">
<!-- 子组件和其他配置 -->
</Feature>
Absent:定义了功能在卸载或修复操作时的行为。它可以有以下几个可能的值:
disallow(默认值):禁止卸载或修复功能。
allow:允许卸载或修复功能。
inherit:继承上一级功能的 Absent 属性设置。
<Feature Id="MainFeature" Title="Main Feature" Level="1" Absent="allow">
<!-- 子组件和其他配置 -->
</Feature>
ConfigurableDirectory:用于指定与功能关联的可配置目录。这使用户可以选择功能的安装位置。
<Feature Id="MainFeature" Title="Main Feature" Level="1" ConfigurableDirectory="INSTALLDIR">
<!-- 子组件和其他配置 -->
</Feature>
InstallDefault:定义了功能的默认安装状态。它可以有以下几个可能的值:
local(默认值):功能默认安装。
source:功能默认不安装。
followParent:功能默认安装状态与父功能相同。
Display:用于定义功能的显示顺序。较小的值将功能显示在更前面。
TypicalDefault:定义了典型安装配置中功能的默认状态。
<Feature Id="MainFeature" Title="Main Feature" Level="1" TypicalDefault="install">
<!-- 子组件和其他配置 -->
</Feature>
*Fragment 是WiX中用于组织和封装安装元素的元素
1. **安装数据库的基础块**:WiX 中的 `Fragment` 元素不直接创建安装数据库(MSI 文件)。相反,它是MSI文件的一部分,用于组织和描述将要安装的组件、文件、目录等元素。`Fragment` 中的元素描述了一组相关的安装元素。当WiX工具编译时,这些元素将与其他元素合并到单个MSI文件中。
2. **不可改变性**:`Fragment` 元素的一旦定义,通常不会在同一WiX文件中更改。这是因为它们的目的是组织和封装元素以供重用,而不是在同一文件中多次定义。您可以在不同的 WiX 文件中多次引用相同的 `Fragment`,以实现元素的重用。
3. **ComponentRef 和 Feature**:在 WiX 中,`ComponentRef` 元素用于引用 `Component` 元素,而 `Feature` 元素用于定义和组织要安装的功能。一个 `Feature` 可以包含多个 `ComponentRef`,以指定哪些组件应该随该功能一起安装。通常,您将在 `Feature` 中使用 `ComponentRef` 来引用在 `Fragment` 中定义的组件。
4. **默认生成的文档**:WiX 默认生成两个 `Fragment` 块,一个用于描述目录结构,另一个用于描述组件和组件组。这些默认块可以作为模板用于开始创建安装程序。但在实际项目中,通常需要自定义这些 `Fragment` 块以满足特定的需求。
总之,`Fragment` 是 WiX 中用于组织和封装安装元素的元素,有助于提高项目的可维护性和可重用性。它们通常不会在同一文件中更改,而是在多个文件中引用和重用。`ComponentRef` 用于引用组件,`Feature` 用于定义功能,从而确定哪些组件将随功能一起安装。
*Directory 用于定义和组织安装包的目录结构
1. **目录结构**:`Directory` 用于定义安装程序中的目录结构。它是一个树形结构,可以包含子目录和文件。这个结构反映了文件在目标计算机上的布局,使您可以将文件安装到正确的位置。
2. **ID属性**:每个 `Directory` 元素都必须具有唯一的ID属性。这个 ID 在 WiX 项目中用于引用该目录。通常,ID 属性采用大写字母和下划线,例如:`ProgramFilesFolder`。
3. **Name属性**:`Name` 属性指定了实际的目录名称。这通常是计算机上的实际目录名称,例如 "Program Files"。
4. **Component元素**:`Directory` 元素通常包含 `Component` 元素,用于指定哪些文件应该安装到该目录。一个 `Component` 可以安装一个或多个文件。
5. **子目录**:`Directory` 元素可以包含其他 `Directory` 元素,以创建目录层次结构。这对于组织文件和创建复杂的安装目录结构非常有用。
6. **属性**:`Directory` 元素可以具有各种属性,用于指定目录的一些行为和属性,如权限、默认权限等。
7. **预定义目录**:WiX提供了一些预定义的目录,如 `ProgramFilesFolder`、`SystemFolder` 等,这些目录对应于计算机上的标准目录。您可以在 `Directory` 元素中引用这些预定义目录,以指定文件的安装位置。
8. **引用**:在其他地方引用 `Directory` 元素时,使用 `DirectoryRef` 元素或者直接在 `Component` 元素中引用。这可以确保文件被正确安装到目标目录。
9. **条件**:您可以为 `Directory` 元素定义条件,以指定只有在某些条件满足时才创建该目录或安装文件。这对于根据用户的操作或计算机环境来动态选择安装位置非常有用。
【片段代码解析】(chatGPT-3.5)
<Fragment>
<!-- 文件安装路径 -->
<Directory Id="TARGETDIR" Name="SourceDir">
<Directory Id="ProgramFilesFolder">
<Directory Id="INSTALLFOLDER" Name="MyApplication" />
</Directory>
</Directory>
</Fragment>
1.TARGETDIR是WiX中的预定义目录,表示目标计算机上的根目录。这是安装程序的起始点。
2.ProgramFilesFolder 也是一个预定义目录,表示计算机上的 "Program Files" 目录。通常,应用程序安装到这个目录中。对应的就是C:\Program Files(x86)\
3.定义了一个名为MyApplication的子目录,位于ProgramFilesFolder目录下。最终形成C:\Program Files(x86)\My Application Name
<Fragment>
<ComponentGroup Id="ProductComponents" Directory="INSTALLFOLDER">
<!-- TODO: Remove the comments around this Component element and the ComponentRef below in order to add resources to this installer. -->
<!-- <Component Id="ProductComponent"> -->
<!-- TODO: Insert files, registry keys, and other resources here. -->
<!-- </Component> -->
<Component Id="ProductComponent">
<File Source="$(var.MyApplication.TargetPath)" /> <!--引用的项目名称,对应右键References时添加的项目名称-->
</Component>
</ComponentGroup>
</Fragment>
1. `<ComponentGroup>`:这是一个元素,用于定义组件的集合。在这个片段中,定义了一个名为 `ProductComponents` 的组件组,它将包含要在安装包中安装的所有组件。
- `Id` 属性为组件组指定了一个唯一的标识符。
- `Directory` 属性指定了这些组件所属的目录,这里是 `INSTALLFOLDER`,意味着这些组件将会被安装到之前定义的 `MyApplication` 目录中。
2. `<Component Id="ProductComponent">`:这是一个组件的定义,它表示一个要安装的组件。
- `Id` 属性为组件指定了一个唯一的标识符。
3. `<File Source="$(var.MyApplication.TargetPath)" />`:这是文件元素,用于指定要安装的文件。
- `Source` 属性指定了要复制到目标计算机上的文件的来源。在这里,它引用了名为 `MyApplication` 的项目,并使用 `TargetPath` 属性来获取该项目的目标路径。这表示您要安装该项目生成的文件。
Directory定义了安装目录,Component定义了组件及位置,Feature定义了组件在安装时的一些特性。Product和package等定义了安装包的信息。
参考:Wix 安装部署(一)同MSBuild 自动生成打包文件
其他:
上一篇:VS2022利用WiX Toolset打包winform程序安装包(1)安装WiX Toolset与简单打包程序
下一篇:VS2022利用WiX Toolset打包winform程序安装包(3)自定义安装向导界面