2015-06-18 45 views
3

我想在Inno安裝程序開始安裝之前執行可執行文件(npp.exe)。但我無法捕獲npp.exe可執行文件的nextButton事件。有什麼辦法可以做到嗎?我試着用下面的代碼:在Inno Setup中捕獲其他安裝程序文件(如Notepad ++安裝程序)的事件

function initializeSetup(): boolean; 
var 
    ResultCode: integer; 
    path: string; 
begin 
    if Exec(('C:\Users\Paxcel\Downloads\npp.exe'), '', '', SW_SHOW, 
     ewWaitUntilTerminated, ResultCode) then 
    begin 
     //result code = 0 for successful installation 
     if (ResultCode = 0)then 
      begin 
       Result := True; 
      end 
      else 
      begin 
       Result := False; 
      end; 
    // handle success if necessary; ResultCode contains the exit code 
    end 
    else begin 
     MsgBox(SysErrorMessage(ResultCode),mbError,MB_OK); 
     Result := False;// handle failure if necessary; ResultCode contains the error code 
    end; 
    end; 

在這段代碼中,我想捕捉記事本+ +設置的下一個按鈕。默認功能如NextButtonClick不能使用。

+0

@MartinPrikryl通過npp.exe文件的Next按鈕事件,他意味着旨在移動到安裝的下一步驟中,設置嚮導窗口上顯示的「下一步」按鈕。 – Ric

+0

通常情況下這樣做是不明智的。相反,您應該靜默運行Notepad ++安裝程序,通過命令行或響應文件提供它需要的任何選項。在做這些事情之前,當然,您還需要檢查是否允許您的創建者重新打包Notepad ++。 – Miral

回答

2

Notepad ++使用NSIS安裝程序。

如果要靜默運行(任意)NSIS安裝程序,請使用/S命令行開關。

請參閱NSIS Installer usage


順便說一句,我假設路徑C:\Users\Paxcel\Downloads只是爲了測試。在真正的安裝程序中,您必須將依賴項嵌入到安裝程序中,並將其解壓縮到臨時目錄中以執行它。

Inno安裝程序可以爲您完成這一切,您通常不需要使用Pascal腳本編寫代碼。

[Run] 
Source: "path\npp.exe"; DestDir: "{tmp}"; Flags: deleteafterinstall 

[Run] 
Filename: "{tmp}\npp.exe"; Parameters: "/S" 
+0

是,該路徑僅用於測試。並感謝您的迴應,但我無法得到我的答案。我的問題是我如何處理記事本安裝嚮導中的下一個按鈕?實際上,當用戶點擊安裝嚮導的下一個按鈕時,我需要執行一些操作。是否有可能這樣做? –

+0

一切皆有可能,但這非常棘手。我甚至不認爲在Inno Setup Pascal腳本中這是可能的。您可能必須實現插件.dll。考慮詢問更具體的問題,描述你想要觸發什麼樣的行動以及爲什麼。順便說一句,它可能會更容易實現一個新的記事本++自定義安裝程序比試圖破解現有的。 –

相關問題