2017-02-20 8 views
1

У меня есть драйверы устройств. Требования к подписи разные для Windows 10 и Windows 7, поэтому у меня есть два набора файлов драйверов.Установить другой файл для Windows 10 и Windows 7

Я хотел бы использовать один файл .wxs и установить набор файлов для установки на основе версии Windows, на которой я устанавливаю. Для простоты я использую VersionNT >= 603 для Win 10 и VersionNT < 603 для Win 7. Я игнорирую тот факт, что на данный момент это не учитывает более ранние версии версий Windows или Server.

Что я сделал, это создать два Wix <Components>, каждый с уникальными именами и 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?

ответ

6

Поскольку ваше авторинг допускает условие предупреждения, вы можете отключить ICE30, чтобы избежать предупреждения в сборке. Добавьте объект SuppressIces в ваш .wixproj со значением ICE30.

+0

Спасибо. Это по крайней мере избавляет от предупреждений. Мне все еще интересно, нет ли лучшего способа написать код. – Daniel