2011-09-13 25 views
10

InnoSetupを使用してシリアルポートのドライバをインストールしたいと思います。私はinfファイルを持っていますが、デバイスマネージャを使って手動でドライバをインストールできますが、ドライバを自分のインストーラに含めて、ドライバをインストールする手間を省くことができます。InnoSetupを使用してドライバをインストールするにはどうすればよいですか?

+0

を私はDESTDIRでドライバをインストールすることができませんでした: "C:\ WINDOWS \ System32に\ドライバ\" 私は を追加するまで;,本家の私は、「正確なパスを指定ArchitecturesInstallIn64BitMode = x64 "を[Setup]に設定します。だからあなたはそのセットを持っていることを確認してください。 –

答えて

13

MSDNのInstallHinfSectionを参照してください。また、「Rundll32.exe」を呼び出してインストールを呼び出す方法も記載されています。また

[Setup] 
.. 
ArchitecturesInstallIn64BitMode=x64 

:あなたは、ドライバをインストールできるようにするには64ビットシステムで64ビットモードでセットアップを実行する必要があるかもしれません

[Files] 
.. 
Source: "driver\my_x86driver.inf"; DestDir: {app}\driver; 
Source: "driver\my_x86driver.sys"; DestDir: {app}\driver; 

[Run] 
.. 
Filename: {sys}\rundll32.exe; Parameters: "setupapi,InstallHinfSection DefaultInstall 128 {app}\driver\my_x86driver.inf"; WorkingDir: {app}\driver; Flags: 32bit; 


注:おそらくあなたは、このようなものになってしまいますマシンアーキテクチャに応じて.infファイルのバージョンを実行するかどうかのチェックを行うことができます(例:Check: Is64BitInstallMode)。

+2

InnoSetupの64ビットモードは、64ビットのインストーラ実行ファイルを生成しません。必要なAPIを呼び出すために小さなヘルパー64ビット実行可能ファイルを使用する必要があります。使用するAPIは、XPでは 'UpdateDriverForPlugAndPlayDevices'、過去のXPでは' DiInstallDriver'です。 –

3

これは良い答えです:Windows 7でInstallHinfSectionを使用してInno setup: install drivers with rundll32 or dpinst?

以降壊れたり難しさに満ちいずれかのようです。バッチファイルから作業するのは難しく、innosetupから作業することはさらに困難です。 DPINSTが好ましいと思われ、簡単です。

1

私はこのようにDPInstの使用:

[Files]  
Source: "Source\dpinst\dpinst32.exe"; DestDir: "{app}\driver"; DestName: dpinst.exe; Check: not IsWin64; Flags: ignoreversion 
Source: "Source\dpinst\dpinst64.exe"; DestDir: "{app}\driver"; DestName: dpinst.exe; Check: IsWin64; Flags: ignoreversion 

[Run] 
Filename: "{app}\driver\dpinst.exe"; Parameters: "/A /LM"; 
関連する問題