У меня есть драйверы устройств. Требования к подписи разные для 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
?
Спасибо. Это по крайней мере избавляет от предупреждений. Мне все еще интересно, нет ли лучшего способа написать код. – Daniel