Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/291.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 使用带有C的INF文件安装libusb驱动程序#_C#_Installation_Driver_Libusb_Inf - Fatal编程技术网

C# 使用带有C的INF文件安装libusb驱动程序#

C# 使用带有C的INF文件安装libusb驱动程序#,c#,installation,driver,libusb,inf,C#,Installation,Driver,Libusb,Inf,我想在Windows安装程序安装期间安装第三方libusb驱动程序。我使用VisualStudio2010创建了此安装 我尝试过使用SetupAPI和DifXAPI通过命令行安装这个驱动程序,但是什么也没发生。我希望弹出一个窗口,说明它是一个未签名的驱动程序,您必须单击“确定”才能继续。我弹出此窗口的唯一方法是使用C#console应用程序并从DifXApi调用驱动程序安装代码(指向INF文件,它看起来像是由INF向导生成的),并且需要为x64构建项目(我需要它也适用于32位安装程序)。单击“确

我想在Windows安装程序安装期间安装第三方libusb驱动程序。我使用VisualStudio2010创建了此安装

我尝试过使用SetupAPI和DifXAPI通过命令行安装这个驱动程序,但是什么也没发生。我希望弹出一个窗口,说明它是一个未签名的驱动程序,您必须单击“确定”才能继续。我弹出此窗口的唯一方法是使用C#console应用程序并从DifXApi调用驱动程序安装代码(指向INF文件,它看起来像是由INF向导生成的),并且需要为x64构建项目(我需要它也适用于32位安装程序)。单击“确定”后,驱动程序从未安装

此驱动程序正确安装的唯一方法是通过USB插入硬件,右键单击未知设备,然后浏览到包含驱动程序DLL文件、sys文件和INF文件的文件夹。Windows如何确定如何安装驱动程序


INF文件有32位/64位/Itanium的驱动程序部分,但Windows如何知道要安装哪个部分,以及Windows与我在命令行中的不同之处?

我可以使用以下代码在32位和64位Windows上安装驱动程序,其中
infPath
是INF文件的路径,
devices
是与USB设备关联的所有设备id的列表:

[DllImport("setupapi.dll")]
public static extern bool SetupCopyOEMInf(
    string SourceInfFileName,
    string OEMSourceMediaLocation,
    int OEMSourceMediaType,
    int CopyStyle,
    string DestinationInfFileName,
    int DestinationInfFileNameSize,
    int RequiredSize,
    string DestinationInfFileNameComponent
    );

[DllImport("newdev.dll")]
public static extern bool UpdateDriverForPlugAndPlayDevices(
    IntPtr hwndParent,
    string HardwareId,
    string FullInfPath,
    uint InstallFlags,
    bool bRebootRequired
    );

[STAThread]
static void Main() {
  if (SetupCopyOEMInf(infPath, null, 0, 0, null, 0, 0, null)) {
    foreach (string device in devices) {
      UpdateDriverForPlugAndPlayDevices(IntPtr.Zero, device, infPath, 0, false);
    }
  }
}

您将此代码放在安装包的何处?这是一个MSI?嘿,我很抱歉,我已经有一段时间没有看到这段代码或使用它了…但我是的,这是一个Windows安装项目,我在其中创建了一个MSI。我相信这段代码在一个安装程序类中,通过在自定义操作中调用此安装程序调用了这段代码。