为Windows 10和Windows 7安装不同的文件

时间:2017-02-20 18:10:14

标签: wix

我签了设备驱动程序。 Windows 10和Windows 7的签名要求不同,因此我有两组驱动程序文件。

我想使用单个.wxs文件并让安装程序根据我正在安装的Windows版本选择文件集。为简单起见,我对Win 10使用VersionNT >= 603,对Win 7使用VersionNT < 603。我忽略了这样一个事实,即现在没有考虑早期版本的Windows或Server版本。

我所做的是创建两个Wix <Components>,每个Wix都有唯一的名称和GUID。在<Component>我有:

<!-- Pre-Win 10 -->
<difx:Driver AddRemovePrograms="no" DeleteFiles="yes" ForceInstall="no" Legacy="no" PlugAndPlayPrompt="no" /> 
<Condition><![CDATA[(VersionNT64 < 603)]]></Condition>
<File ....

<!-- Win 10 -->
<difx:Driver AddRemovePrograms="no" DeleteFiles="yes" ForceInstall="no" Legacy="no" PlugAndPlayPrompt="no" />
<Condition><![CDATA[(VersionNT64 >= 603)]]></Condition>
<File ....

然后我为功能中的两个组件添加<ComponentRef>

这会编译,但会为表单的每个.sys.cat.inf发出警告:

C:\Users\me\Documents\src\Product\installer\Product.wxs(103,0): warning LGHT1076: ICE30: The target file 'driver.sys' might be installed in '[ProgramFiles64Folder]\Vendor\brbq3-yp\drivers\so-utx6z\' by two different conditionalized components on an SFN system: 'win10_driver' and 'win7_driver'. If the conditions are not mutually exclusive, this will break the component reference counting system.

在这种情况下,我知道这两个条件是相互排斥的,但我想清理警告。

有人可以推荐一种更简洁的方法来安装这些互斥的驱动程序文件集,而无需创建两个.msi包吗?

1 个答案:

答案 0 :(得分:7)

由于您的创作符合警告条件,您可以禁止ICE30以避免构建中的警告消息。将SuppressIces属性添加到.wixproj,其值为ICE30