我们有一个USB设备和驱动程序(.inf,libusb.dll,libusb.sys),并且可以使用Windows的设备安装向导(通过指向.inf文件)进行安装。但是,我们需要在不使用向导的情况下安装驱动程序(被动地,因此用户不需要执行任何操作)。有谁知道这是如何实现的?在没有管理员提示的情况下安装USB设备
回答
我的同事想出了一个效果很好的答案。看来,除非您的硬件/驱动程序组合是WHQL签名的,否则添加新硬件向导将始终出现在Win XP中。但是,使用以下方法可以让向导中的“搜索”按钮自动找到您的驱动程序。在Windows 7中,没有任何提示,并且设备安装得很好。不过,您需要注意64位机器,因为它们有更严格的签名实施。
因此,这里是从the whole document相关摘录:
使用DIFxAPi合并模块。 (请阅读introduction to drivers in Windows, the use of INF files, and DIFxAPP。)DIFxAPI合并模块包含在WDK的'WDDK // redist \ DIFx \ DIFxApp \ MergeModule \'目录中。合并模块可以包含在MSI包中,可以设置为安装多个设备驱动程序。以下是创建与DIFXAPP的MSI步骤合并模块:
- 在设置文件夹中创建应用程序文件夹驱动程序包一个单独的目录和驱动程序文件添加到文件夹。
- 将DIFxApp.msm添加到安装项目中。
- 构建设置
使用Orca编辑MSI数据库表并将INF组件添加到DIFxAPP合并模块表中。
- Orca安装包含在Windows SDK的'C:\ Program Files \ Microsoft SDKs \ Windows \ v7.0 \ Bin'目录中。 (Windows SDK可以是downloaded from Microsoft)
- 运行Orca并选择需要修改的MSI包。
- 阅读第5部分的自动化。
- 在'文件'表中,找到您想要安装的驱动程序包的INF文件并复制组件值。
在MsiDriverPackages表中创建一个新行。将Component值添加到Component字段中。以下flags可以使用(尽管有些是由Windows 7忽略):
- 0 - 未设置(默认值)
- 1 - 强制安装驱动程序,即使当前已安装的驱动程序是 更好匹配比正在安装的驱动程序
- 2 - 禁止消息框告诉用户在安装驱动程序 后插入设备。
- 4 - 禁止在添加/删除程序中为驱动程序添加条目。
卸载主应用程序时,驱动程序将被卸载。 - 8 - 安装未签名的驱动程序包
- 16 - 在卸载过程中删除驱动程序二进制文件。
- 保存MSI。为了使过程自动化,可以将MSI数据库的编辑记录到变换中,然后可以在后期构建过程中应用变换。
- 在Orca打开MSI。
- 选择变换 - >新变换
- 完成上述步骤中的步骤3和4。
- 选择Tranform-> Generate transform并保存变换。
- 以下行添加到后生成安装项目 MsiDb.exe -t transform.mst -d $(TARGETDIR)\ DriverInstall.msi的 注:MsiDB.exe自带的微软SDK,位于 C:\ Program Files文件\微软的SDK \的Windows \ V7.0 \ BIN
如果你从MSI安装一个错误(例如,我得到了错误代码2356,其最终是由于无效的Flag
值),使用Orca的Validate
函数来查看是否有任何错误。编辑:修复这些错误仍然没有摆脱错误。我记得读到inf文件应该在他们自己的子目录中,但是这并没有解决我的问题。
您添加了“安装程序”标签,所以我假设你在谈论某种安装包,如Windows安装程序时,InstallShield的InstallScript等
如果是那样的话,你应该使用微软的DIFx framework。
的DIFx使得它更容易为你打造 高品质的驱动程序包, 定制驱动 软件包的安装,允许在组合 驱动程序包与 应用软件的安装和使用 标准的Windows API和安装 工具。 DIFx还使 最终用户更容易诊断设备和 驱动程序问题。最终用户可以通过 确信,如有必要,驱动程序 可以被卸载或回滚。
我使用了基于Windows Installer安装和InstallScript安装的DIFx。非常用户友好,易于调试和有效。
- 1. 如何在没有管理员权限的情况下在Mac上安装R
- 2. 在没有管理员允许的情况下在Linux上安装Scala
- 3. 在没有管理权限的情况下安装Java 8
- 4. 我可以在没有管理员权限的情况下安装Visual Studio吗?
- 5. 如何在没有管理员权限的情况下为Python安装Textblob?
- 6. 如何在没有管理员权限的情况下安装jdk 1.6?
- 7. 在没有管理员权限的情况下运行安装程序
- 8. 是否可以在没有管理员权限的情况下在Windows中安装USB串口转换器?
- 9. 在没有提示的情况下安装PECL模块
- 10. 在没有用户提示的情况下安装PHP梨
- 11. 在没有管理员权限的情况下使用Xcode?
- 12. 在没有管理员帐户的情况下调用BlockInput
- 13. 在没有管理员权限的情况下访问Facebook群组的提要
- 14. 在没有管理权限的情况下在Linux上安装mysql服务器
- 15. 在没有MENU键的情况下处理Android设备
- 16. C++ - 在没有物理设备的情况下测试串口
- 17. 没有管理员权限的情况下访问注册表
- 18. 在没有软件包管理器控制台的情况下安装C#库
- 19. 如何在linux上没有管理权限的情况下安装lxml for python?
- 20. 在没有安装文件的情况下安装程序
- 21. 如何在没有NuGet的情况下安装和设置RESTSharp?
- 22. 如何在没有安装xCode的情况下设置PhoneGap?
- 23. 在没有提示的情况下在Linux/CentOS上安装并升级Java
- 24. 安装.air没有管理员权限?
- 25. 在不询问用户的情况下启用设备管理员
- 26. 在没有授权提示的情况下使用powershell安装vnc.exe
- 27. 在没有命令提示符的情况下安装Python模块。
- 28. 如何在没有提示的情况下正确关闭Inno安装向导?
- 29. 您可以在没有管理员权限的情况下在IE中安装ActiveX控件吗?
- 30. 如何在没有管理员权限的情况下在wordpress中安装插件
看起来很有希望 - 我们会调查并报告。 – Pat 2010-05-05 22:18:45
试图做一个预安装,但是,当设备插入时,我仍然需要手动安装。我试图做一次安装,并能够使其正常工作,但只有在安装运行时插入设备时,情况并非总是如此。 – Pat 2010-05-06 14:49:49