在访问解决方案向导中,“产品代码”字段是一个 GUID,它是应用程序或产品的主要标识。
-
更新可以放大或缩小功能组件树,但不得重新组织功能表和 FeatureComponents 表所描述的现有特征和组件的层次结构。 它可以向现有功能组件树添加新功能。 如果删除父功能,则还必须删除已删除功能的所有子功能。
-
更新可以添加新组件或新的或现有的功能。
-
更新不得更改任何组件的组件代码。 因此,小型更新或次要升级绝不能更改组件密钥文件的名称,因为这需要更改组件代码。
-
更新不得更改安装包的 .msi 文件的名称。 相反,因为它会修改包,因此它应更改包代码。 请注意,这意味着更新可以更改 .msi 文件中的表、自定义作和对话框,而无需更改文件的名称。
-
此更新可以添加、删除或修改两个或多个功能不共享的文件、注册表项或组件的快捷方式。 如果更新修改了版本控制文件,则必须在 File 表中递增该文件的版本。 如果更新删除资源,它还应更新 RemoveFile 和 RemoveRegistry 表,以删除已安装的任何未使用的文件、注册表项或快捷方式。
-
由两个或更多功能共享的组件的更新必须与使用该组件的所有应用程序和功能向后兼容。 更新可以修改共享组件的资源,例如文件、注册表项和快捷方式,前提是更改是向后兼容的。 不建议更新在共享组件中添加或删除文件、注册表项或快捷方式。
-
小型更新作为 Windows Installer 包提供。 (完整产品 CD-ROM 通常不附带小型 update。)
如果更新满足以下任一条件,则必须更改产品代码:
-
必须能够在同一系统上同时安装原始和更新的产品。
-
.msi 文件的名称已更改。
-
现有组件的组件代码已更改。
-
组件将从现有功能中删除。
-
现有功能已创建为现有功能的子级。
-
现有子功能已从其父功能中删除。
-
无需更改产品代码即可将组件添加到现有功能。
注意: 将完全由新组件组成的新子功能添加到现有功能不需要更改产品代码。
通过在 Feature 表的“属性”字段中包括 msidbFeatureAttributesFollowParent 和 msidbFeatureAttributesUIDisallowAbsent,可以创作新的子功能。 如果次要升级仅添加新的子功能,则重新安装=ALL 足以强制安装新的子功能。
新的子功能可能对用户隐藏。 若要将新子功能的安装状态与其父功能同步,请为子功能设置 msidbFeatureAttributesFollowParent 和 msidbFeatureAttributesUIDisallowAbsent 位。