如何将自定义应用安装程序与CP210x驱动安装合并(Windows 8/10/11)
解决WixToolset整合CP210x USB驱动的可行方案
用Wix原生Driver元素(v3.11+适用)
Wix从v3.11版本开始就原生支持现代Windows的驱动安装,完全不需要依赖已废弃的DIFx。你直接用<Driver>元素关联CP210x的inf文件就行,同时要把驱动相关的.sys、.cat等文件都打包进安装包。示例代码如下:<Component Id="Cp210xDriver" Guid="*"> <File Id="Cp210xInf" Source="你的驱动路径\cp210x.inf" KeyPath="yes" /> <File Id="Cp210xSys" Source="你的驱动路径\cp210x.sys" /> <File Id="Cp210xCat" Source="你的驱动路径\cp210x.cat" /> <Driver Legacy="no" /> </Component>这里
Legacy="no"是关键,它会让Wix调用Windows原生的驱动安装机制,完美适配Win10 1607及以上版本。调整PnpUtil自定义操作的配置
之前用PnpUtil没效果,大概率是参数或者执行时机不对。正确的PnpUtil命令是pnputil /add-driver "inf文件路径" /install。在Wix里配置自定义操作时要注意两点:- 必须设置为延迟执行(
Impersonate="no" Execute="deferred"),因为驱动安装需要管理员权限,普通权限跑不起来 - 要先把驱动文件复制到目标目录或者临时目录,再执行命令,不然会找不到文件
示例配置代码:
<CustomAction Id="InstallCp210xDriver" BinaryKey="WixCA" DllEntry="CAQuietExec" Execute="deferred" Impersonate="no" Return="check" /> <Property Id="QtExecCmdLine" Value="pnputil /add-driver "[INSTALLDIR]cp210x.inf" /install" />- 必须设置为延迟执行(
验证驱动签名有效性
Win10 1607之后强制要求驱动有合法的数字签名,哪怕是官方CP210x驱动,如果你打包过程中改了文件或者路径,都可能导致签名失效。可以用signtool验证.cat文件:signtool verify /v /pa cp210x.cat如果验证不通过,就得重新获取官方签名的驱动包,或者给自定义驱动申请签名。
确认自定义操作的执行顺序
安装驱动的自定义操作必须等所有驱动文件都复制完成后再执行,不然会出现找不到inf文件的情况。在Wix的InstallExecuteSequence里,要把自定义操作放在InstallFiles之后、InstallFinalize之前:<InstallExecuteSequence> <Custom Action="InstallCp210xDriver" After="InstallFiles" /> </InstallExecuteSequence>
内容的提问来源于stack exchange,提问作者FakeStar
相关产品推荐
相关产品推荐

