WiX,有条件地安装基于操作系统的文件

时间:2009-06-09 01:16:38

标签: windows installer wix

在我的WiX项目中,我需要根据操作系统为同一个文件名安装不同的内容。

  • 如果操作系统是Windows 7,那么该文件需要包含内容X.
  • 如果操作系统是Windows Vista,则文件需要包含内容Y.

我想过几个方法:

  1. 定义两个组件,一个包含Windows 7的内容,另一个包含Vista的内容。如果操作系统是Windows 7,则根据覆盖Vista内容的操作系统运行自定义操作。

  2. 定义两个附加功能(window7 config和win vista config),使组件以同一文件为目标,并根据操作系统有条件地安装该功能。

  3. 哪种方法最好。任何提示,技巧和样本wix来实现这一目标?

2 个答案:

答案 0 :(得分:3)

我会做一个稍微修改过的#1版本。有两个组件。一个条件安装在Vista上。另一个条件安装在Win7上。然后我在适当的组件中有适当的文件。不需要CustomAction。应不惜一切代价避免使用CustomActions,请参阅:http://robmensching.com/blog/archive/2007/08/17/Zataoca-Custom-actions-are-generally-an-admission-of-failure.aspx

PS:标记组件可传输,以便在操作系统升级时安装正确的内容。

答案 1 :(得分:1)

另一种解决方案是安装这两个文件,并在运行时从正确的文件中读取应用程序。如果这是一个可能稍后被您的应用程序修改的文件,那么您可能不希望直接安装它,而是安装一个“默认”,如果“每个用户”文件不存在则读取该默认值。在这种情况下,当“每用户”文件不存在时,请读取相应的操作系统全局默认值,然后在第一次运行时(或每当特定文件不存在时)将其写入“每用户”文件。

有时在初始应用程序设计期间有意义的内容并不会转换为“良好”的Windows Installer结果,您需要修改一些内容:)