Comment déployer un pilote basé .inf?
-
21-08-2019 - |
Question
Je voudrais déployer un pilote USB à base de .inf avec mon installateur.
Je suppose que le .inf doit être placé dans %SystemRoot%\inf
, mais il y a aussi un .cat (certification WHQL je suppose?), Et les fichiers .sys. Que dois-je faire avec ceux?
EDIT: Résolu, grâce aux réponses utiles. J'ai pu P / Invoke la fonction, donc j'avoir une action post-installation qui exécute le code suivant:
namespace DriverPackageInstallAction
{
static class Program
{
[DllImport("DIFXApi.dll", CharSet = CharSet.Unicode)]
public static extern Int32 DriverPackagePreinstall(string DriverPackageInfPath, Int32 Flags);
/// <summary>
/// The main entry point for the application.
/// </summary>
[STAThread]
static void Main()
{
DirectoryInfo assemblyDir = new DirectoryInfo(Application.ExecutablePath);
DirectoryInfo installDir = assemblyDir.Parent;
int result = DriverPackagePreinstall(installDir.FullName + @"\Driver\XYZ.inf", 0);
if (result != 0)
MessageBox.Show("Driver installation failed.");
}
}
}
La solution
Je commencerais en lisant SetupAPI et DIFx . Le Windows Driver Kit comprend des échantillons de rel="noreferrer"> des deux, y compris une fusion à base DIFx module et une bibliothèque Wix base DIFx. La source de la ligne de commande devcon utilitaire, qui est basé sur SetupAPI , est également inclus dans les échantillons WDK.
Autres conseils
Vous pouvez essayer de demander au shell de l'installer pour vous:
%SystemRoot%\System32\rundll32.exe setupapi,InstallHinfSection DefaultInstall 132 YOUR_FILE.inf
Mais je suis 100% sûr qu'il ya une meilleure façon ...