修补和升级
由于安装包可以包含构成应用程序的文件及其安装所需的信息,因此 Windows Installer 可用于更新应用程序。 安装程序可以更新安装包的以下部分中的信息:
- .msi 文件。
- 应用程序的文件。
- Windows Installer 注册信息。
可以按照更新对应用程序的产品代码、产品版本和包代码所做的更改来区分更新的类型。 应用程序的产品版本存储在 ProductVersion 属性中。 应用程序的产品代码存储在 ProductCode 属性中。 应用程序的包代码存储在修订号摘要属性中。
如果某个更新需将应用程序更改为其他产品,则此更新需要更改应用程序的 ProductCode。 有关哪些更新需要更改 ProductCode 的详细信息,请参阅更改产品代码。 如果应用程序的未来版本需要区分当前产品的更新版本和未更新版本,则更新可以更改 ProductVersion 并保持 ProductCode 不变。 包代码可唯一标识安装包,并且每次更新或升级更改安装包中的任何信息时,都必须更改包代码。
在决定是否更改产品版本时,应考虑应用程序的未来版本是否需要区分当前产品的更新版本和未更新版本。 为了确保未来的差异化,应该使用次要升级,而不是小型更新。
- 如果更新更改了 .msi 文件和应用程序文件,但未更改 ProductCode 属性或 ProductVersion 属性,则称为小型更新。
- 如果更新更改了 ProductVersion,但没有更改 ProductCode,则称为次要升级。
- 如果更新将安装更改为完全不同的产品,则 ProductCode 必须更改,并且该更新被称为主要升级。
下表总结了不同类型的更新。
更新类型 | Productcode | ProductVersion | 说明 |
---|---|---|---|
小型更新 | 没有变化 | 没有变化 | 对一个或两个文件的更新太小,无法保证更改 ProductVersion。 修订号摘要属性中的包代码会更改。 可以作为完整安装包或修补程序包提供。 |
次要升级 | 没有变化 | 已更改 | 这是一个小型更新,所做的更改非常重要,足以保证更改 ProductVersion 属性。 可以作为完整安装包或修补程序包提供。 |
重大升级 | 已更改 | 已更改 | 产品的全面更新,保证更改 ProductCode 属性。 作为修补程序包或完整产品安装包提供。 |
注意
根据用户的访问权限、ALLUSERS 属性的值和操作系统的版本,Windows Installer 可以为计算机的所有用户(每计算机上下文)或特定用户(每用户上下文)安装应用程序或更新。 应用程序开发人员应考虑在哪些环境中安装上下文更新。 如果应用程序和更新的上下文不同,则应用程序可能不会按预期更新。
用户可以通过为应用程序重新安装 Windows Installer 包来更新到应用程序。 请注意,次要升级可以以与小型更新相同的方式应用。 有关通过重新安装应用程序来更新应用程序的更多信息,请参阅以下各节:
可以将应用程序的更新作为 Windows Installer 修补程序包提供给用户。 修补程序可以包含整个文件,也可以仅包含更新文件的一部分所需的文件位。 这意味着用户可以下载比整个产品小得多的升级补丁,并在升级过程中保留用户自定义。 请注意,次要升级可以以与小型更新相同的方式应用。 有关使用修补程序来更新应用程序的详细信息,请参阅以下各节: