我签了设备驱动程序。 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
包吗?
答案 0 :(得分:7)
由于您的创作符合警告条件,您可以禁止ICE30以避免构建中的警告消息。将SuppressIces
属性添加到.wixproj,其值为ICE30
。