VS2022利用WiX Toolset打包winform程序安装包(2)

 《XML文件部分元素解释》

XML文档元素部分解释整理,更全面的内容请参考 WiX Toolset 的官方文档。

WiX Toolset v3 Manual Table of Contents | WiX Toolset

目录

*Product 属性

*Package 定义安装包的属性,安装类型和压缩级别等

*MajorUpgrade 定义安装程序中的主要升级策略

*Feature  定义安装包的功能 

*Fragment 是WiX中用于组织和封装安装元素的元素

*Directory 用于定义和组织安装包的目录结构

 【片段代码解析】(chatGPT-3.5)


*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)自定义安装向导界面

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值