我试图为包含两个inf文件的照相机驱动程序创建一个安装程序。到目前为止,我所拥有的是一个工作安装程序,其相关部分如下:
<ComponentGroup Id="MyCamDriver1" Directory="MyCamModuleDir" Source="modules\system\camera\myCam\USBX64">
<Component Guid="7A259B3A-E41F-460F-8311-03CD89D9A7C5" Win64="$(var.Win64)">
<File Name="myCamusbX64.inf" KeyPath="yes" />
<File Name="myCamusbX64.sys" />
<File Name="myCamusbX64.cat" />
<File Name="wdfcoinstaller01011.dll" />
<difx:Driver DeleteFiles="yes" Legacy="yes" AddRemovePrograms="no" PlugAndPlayPrompt="no" />
</Component>
</ComponentGroup>
<!-- <ComponentGroup Id="MyCamDriver2" Directory="MyCamModuleDir" Source="modules\system\camera\myCam\CabUSBX64"> -->
<!-- <Component Guid="91E30F1E-1C53-49FB-B31E-273CD43120BD" Win64="$(var.Win64)"> -->
<!-- <File Name="myCamcabusbX64.inf" KeyPath="yes" /> -->
<!-- <File Name="myCamcabusbX64.sys" /> -->
<!-- <File Name="myCamcabusbX64.cat" /> -->
<!-- <File Name="wdfcoinstaller01011.dll" /> -->
<!-- <difx:Driver DeleteFiles="yes" Legacy="yes" AddRemovePrograms="no" PlugAndPlayPrompt="no" /> -->
<!-- </Component> -->
<!-- </ComponentGroup> -->执行此操作可以很好地安装myCamusbX64驱动程序,也可以卸载它应该删除的所有内容。但是,一旦我添加了未注释的部分,安装程序就不会使用错误消息创建:
错误CNDL0207组件元素包含一个意外的子元素‘difx:驱动’。“difx:驱动程序”元素只能在组件元素下出现一次。
实际上,‘difx:’元素在组件下只发生过一次,不是吗?它甚至分为两个不同的组成组。有谁知道如何解决这个问题吗?
发布于 2021-10-25 16:44:47
向每个Id添加显式Component。
发布于 2021-10-26 07:32:19
Bob Arnson's answer把我引向了正确的方向。然而,我不得不添加一些更多的更改。下面是我现在正在做的事情:
<ComponentGroup Id="MyCamDriverUSB" Directory="MyCamModuleDirUSB" Source="modules\system\camera\myCam\USBX64">
<Component Id="MyCamUsbX64" Guid="7A259B3A-E41F-460F-8311-03CD89D9A7C5" Win64="$(var.Win64)">
<File Name="myCamusbX64.inf" KeyPath="yes" />
<File Name="myCamusbX64.sys" />
<File Name="myCamusbX64.cat" />
<File Id="WdfUSB" Name="wdfcoinstaller01011.dll" />
<difx:Driver DeleteFiles="yes" Legacy="yes" AddRemovePrograms="no" PlugAndPlayPrompt="no" />
</Component>
</ComponentGroup>
<ComponentGroup Id="MyCamDriverCABUSB" Directory="MyCamModuleDirCABUSB" Source="modules\system\camera\myCam\CabUSBX64">
<Component Id="MyCamCabUsbX64" Guid="91E30F1E-1C53-49FB-B31E-273CD43120BD" Win64="$(var.Win64)">
<File Name="myCamcabusbX64.inf" KeyPath="yes" />
<File Name="myCamcabusbX64.sys" />
<File Name="myCamcabusbX64.cat" />
<File Id="WdfCABUSB" Name="wdfcoinstaller01011.dll" />
<difx:Driver DeleteFiles="yes" Legacy="yes" AddRemovePrograms="no" PlugAndPlayPrompt="no" />
</Component>
</ComponentGroup> 因此,对于Bob建议向每个组件添加一个Id,我必须向wdfcoinstaller01011.dll元素添加一个Id,并将ComponentGroups的Directory元素更改为惟一的元素。
https://stackoverflow.com/questions/69710002
复制相似问题