关于Inno与驱动文件的安装涉及到驱动文件的几个问题:
1:驱动文件是否拥有正规的数字签名(GlobalSign 公司可以提供,一个数字签名每一年都需要交几千块的服务费,感觉小公司不是很划算)
2:Inno安装包是否要在64和32位机器上都能运行
准备工具:适合不同系统的Devcon.exe 和DPInst.exe 的不同版本,xp、win7、win8、win10;32、64,保证这个工具能在目标系统上正常运行。不能运行就到微软官网上去下:
Devcon 在Windows Driver Kit集成开发安装程序下就能找到,在目标系统上安装对应的Windows Driver Kit就能找到适合的Devcon
DPInst 在DiFx工具包中
1、对于有正规数字签名的驱动
#define MyAppNameStep "SMQH Drivers"
#define MyAppSoure "..\"
[Setup]
AppId={{D18BE24C-17FA-43FE-B107-429BF9B4906C}
AppName={#MyAppNameStep}
[Files]
;将所需文件复制到指定位置
Source: "{#MyAppSoure}\Tool\DPInst\DPInst64.exe"; DestDir: "{sys}"; DestName: DPInst.exe;Flags: ignoreversion recursesubdirs createallsubdirs;Check: Is64BitInstallMode
Source: "{#MyAppSoure}\Tool\DPInst\DPInst64.exe"; DestDir: "{app}"; DestName: DPInst.exe;Flags: ignoreversion recursesubdirs createallsubdirs;Check: Is64BitInstallMode
Source: "{#MyAppSoure}\Tool\Devcon\devconWin10x64.exe"; DestDir: "{sys}"; DestName: Devcon.exe;Flags: ignoreversion recursesubdirs createallsubdirs;Check: Is64BitInstallMode
Source: "{#MyAppSoure}\Tool\Devcon\devconWin10x64.exe"; DestDir: "{app}"; DestName: Devcon.exe;Flags: ignoreversion recursesubdirs createallsubdirs;Check: Is64BitInstallMode
;将关键文件复制到特定位置
Source: "{#MyAppSoure}\DriverFile\SMQH\x64\*"; DestDir: "{app}\"; Flags: ignoreversion recursesubdirs createallsubdirs; Check: Is64BitInstallMode
Source: "{#MyAppSoure}\DriverFile\SMQH\x64\my.sys"; DestDir: "{sys}\drivers"; Flags: ignoreversion recursesubdirs createallsubdirs; Check: Is64BitInstallMode
Source: "{#MyAppSoure}\DriverFile\SMQH\x64\my.inf"; DestDir: "{win}\inf"; Flags: ignoreversion recursesubdirs createallsubdirs; Check: Is64BitInstallMode
[Run]
Filename: "{sys}\DPInst.exe"; WorkingDir: {app};Parameters: "/path ""{app}"" /sw /se ";Check: Is64BitInstallMode
2、对于没有正规数字签名或没有数字签名的驱动
#define MyAppNameStep "SMQH Drivers"
#define MyAppSoure "..\"
[Setup]
AppId={{D18BE24C-17FA-43FE-B107-429BF9B4906C}
AppName={#MyAppNameStep}
[Files]
;将所需文件复制到指定位置
Source: "{#MyAppSoure}\Tool\DPInst\DPInst32.exe"; DestDir: "{sys}"; DestName: DPInst.exe;Flags: ignoreversion recursesubdirs createallsubdirs;Check: not Is64BitInstallMode
Source: "{#MyAppSoure}\Tool\DPInst\DPInst32.exe"; DestDir: "{app}"; DestName: DPInst.exe;Flags: ignoreversion recursesubdirs createallsubdirs;Check: not Is64BitInstallMode
Source: "{#MyAppSoure}\Tool\Devcon\devconWin7.exe"; DestDir: "{sys}"; DestName: Devcon.exe;Flags: ignoreversion recursesubdirs createallsubdirs;Check: not Is64BitInstallMode
Source: "{#MyAppSoure}\Tool\Devcon\devconWin7.exe"; DestDir: "{app}"; DestName: Devcon.exe;Flags: ignoreversion recursesubdirs createallsubdirs;Check: not Is64BitInstallMode
;将关键文件复制到特定位置
Source: "{#MyAppSoure}\DriverFile\SMQH\x86\*"; DestDir: "{app}\"; Flags: ignoreversion recursesubdirs createallsubdirs; Check: not Is64BitInstallMode
Source: "{#MyAppSoure}\DriverFile\SMQH\x86\my.sys"; DestDir: "{sys}\drivers"; Flags: ignoreversion recursesubdirs createallsubdirs; Check: not Is64BitInstallMode
Source: "{#MyAppSoure}\DriverFile\SMQH\x86\my.inf"; DestDir: "{win}\inf"; Flags: ignoreversion recursesubdirs createallsubdirs; Check: not Is64BitInstallMode
[Run]
Filename: "{sys}\devcon.exe"; Parameters: "dp_add ""{app}\my.inf"" "; Check: not Is64BitInstallMode
Filename: "{sys}\devcon.exe"; Parameters: "update ""{app}\my.inf"" USB\VID_1578&PID_0076"; Check: not Is64BitInstallMode
Filename: "{sys}\devcon.exe"; Parameters: "rescan "; Check: not Is64BitInstallMode
其中:USB\VID_1578&PID_0076 是硬件ID或设备匹配ID,可以在inf文件中找到这个ID
3、如何使得Check: Is64BitInstallMode 生效,即如在控制32位或64位系统区别安装
[Setup]
ArchitecturesInstallIn64BitMode=x64
4、安装或卸载后是否需要重启
[Setup]
;yes 总是重启
;no 根据其他段的情况提示是否要重启(比如某个文件设置了restartreplace,并且在安装时被锁定替换失败,就会提示要重启)
AlwaysRestart=yes
;yes 卸载时总是要求重启
;no 卸载时根据情况提示是否需要重启
UninstallRestartComputer=yes
5、单独安装INF文件
[Run]
Filename: "{cmd}"; Parameters: "/c ""{sys}\rundll32.exe advpack.dll,LaunchINFSection {win}\inf\my.inf,外部参数调用""";Flags:hidewizard runhidden ; Check: Is64BitInstallMode