1. 程式人生 > >【Inno Setup】Inno 與 驅動檔案的安裝

【Inno Setup】Inno 與 驅動檔案的安裝

關於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