如果组件规则被打破,会发生什么情况?

在某些情况下,作者可能确定他们需要打破创建组件的规则,如“将应用程序组织到组件中”和“更改组件代码”中所述。 作者需要了解执行此操作的可能后果,并且必须以其他方式保证他们的组件永远不会安装在可能损坏用户系统上其他应用程序或组件的位置。

以下列表介绍了作者有时打破建议的组件规则的方式以及可能的后果。

作者在不更改组件代码的情况下将资源添加到组件。

  • 随旧组件一起安装的产品在其安装数据库中没有添加的资源的相关信息。
  • 在同一台计算机上同时安装了一个具有添加的资源的新产品和一个旧产品时,如果先卸载新产品,资源可能会被保留。
  • 没有添加的资源的旧产品无法修复新版组件。 重新安装旧产品不会还原添加的资源。

作者在不更改组件代码的情况下从组件中删除资源。

  • 随新组件一起安装的产品在其安装数据库中没有删除的资源的相关信息。
  • 在同一台计算机上同时安装了一个具有资源信息的旧产品和一个新产品时,如果先卸载旧产品,资源可能会被保留。
  • 具有删除的资源的新产品无法修复旧版产品。 重新安装新产品不会还原删除的资源。

作者在不更改组件代码的情况下包含了与以前版本不兼容的文件。

如果在不更改组件代码的情况下在组件中包含了不兼容文件,则默认文件版本控制会导致安装程序使用较新的不兼容文件覆盖原始文件。 这可能会损坏需要原始文件的旧产品。 它还可能会阻止安装程序修复旧产品,因为组件的密钥路径文件的版本决定了组件的版本。 如果已安装新版密钥路径文件,则安装程序不会安装旧版组件。 有关详细信息,请参阅文件版本控制规则。 在这种情况下,必须先删除新产品,然后才能重新安装旧产品。

  • 默认文件版本控制会导致安装程序使用较新的不兼容文件覆盖原始文件。
  • 需要原始文件的旧产品被损坏。
  • 它还可能会阻止安装程序修复旧产品,因为组件的密钥路径文件的版本决定了组件的版本。 如果已安装新版密钥路径文件,则安装程序不会安装旧版组件。 有关详细信息,请参阅文件版本控制规则。 在这种情况下,必须先删除新产品,然后才能重新安装旧产品。

作者将相同的资源包含在两个不同的组件中。

如果这两个组件具有名称和位置相同的资源,并且这两个组件都安装到同一文件夹中,则删除任一组件都会删除公共资源,这会损坏剩余组件。

  • 卸载任一组件都会删除资源并破坏另一个组件。
  • 组件引用计数机制被损坏。