Inno Setup 在安裝過程中啟動可執行文件(安裝驅動程序)


我正在使用Inno Setup為我的應用程序創建安裝程序.安裝程序非常基本,只是復制一些文件.這非常有效,我很滿意.

我最近實現了USB支持,需要從IVI基礎安裝USB驅動程序.它基本上是一個exe文件,必須在安裝過程中的某個地方啟動.到目前為止,用戶必須單獨安裝驅動程序,這不是那么優雅.我的第一個方法是:

1 [Run] 2 Filename: "{app}\driver\IviSharedComponents_2.2.1.exe"; Description: "Install USB driver (IVI Foundation)"; Flags: postinstall skipifsilent 3 Filename: "{app}\driver\IviSharedComponents64_2.2.1.exe"; Description: "Install 64bit USB driver (IVI Foundation)"; Flags: postinstall skipifsilent 4 Filename: "{app}\{#MyAppExeName}"; Description: "{cm:LaunchProgram,{#StringChange(MyAppName,"&","&&")}}"; Flags: postinstall skipifsilent

這樣可行,但用戶必須選擇正確的位數.這里的優點是他可以選擇不安裝它(在這種情況下,應用程序只是忽略USB功能,這很好).我真正想要的是自動檢測系統的位數並運行設置過程.這不必在[Run]部分,雖然我沒有任何反對它(因為用戶可以選擇不安裝它).

我還找到了一些代碼並試圖像這樣運行它:

 1 de]  2 procedure CurStepChanged (CurStep: TSetupStep);  3 var
 4  WorkingDir: String;  5  ReturnCode: Integer;  6 begin  7    if (ssInstall = CurStep) then  8      Log('Starting driver installation');  9      WorkingDir := ExpandConstant ('{app}\driver'); 10      Exec ('IviSharedComponents_2.2.1.exe','',WorkingDir,SW_SHOW,ewWaitUntilTerminated,ReturnCode); 11 end;

但這不會啟動安裝(雖然我可以看到日志條目’啟動驅動程序安裝’).我的道路有問題嗎?我做錯了什么?如何更改此腳本以根據位數自動選擇正確的可執行文件?

編輯:我在[任務]條目中使用了建議的解決方案.實現看起來像這樣(僅供參考):

1 [Tasks] 2 Name: "install_usb"; Description: "Install USB drivers (IVI Foundation)"; GroupDescription: "External drivers:"; 3  
4 [Run] 5 Filename: "{app}\driver\IviSharedComponents_2.2.1.exe"; StatusMsg: "Installing USB driver (IVI Foundation)"; Check: Not IsWin64(); Tasks: install_usb; Flags: skipifsilent 6 Filename: "{app}\driver\IviSharedComponents64_2.2.1.exe"; StatusMsg: "Installing USB driver (IVI Foundation)"; Check: IsWin64(); Tasks: install_usb; Flags: skipifsilent

這非常有效,非常感謝您的幫助!

解決方法

在這種情況下,最好刪除postinstall標志,使其在設置過程結束時(但在完成之前)無條件運行,並添加Check:參數以將其限制為正確的位數:
1 [Run] 2 Filename: "{app}\driver\IviSharedComponents_2.2.1.exe"; StatusMsg: "Installing USB driver (IVI Foundation)"; Check: Not IsWin64(); Flags: skipifsilent 3 Filename: "{app}\driver\IviSharedComponents64_2.2.1.exe"; StatusMsg: "Installing USB driver (IVI Foundation)"; Check: IsWin64(); Flags: skipifsilent

如果您希望這是有條件的,您可以使用在安裝開始之前提示的正常[任務]條目.


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM