簡體   English   中英

Inno Setup:在安裝過程完成后執行命令/批處理文件

[英]Inno Setup : execute command/batch file after install process is complete

朋友,我正在編寫一個腳本,它可以完成很多工作-安裝我的應用程序和其他開源軟件,將軟件設置為服務,執行批處理文件來完成一些工作等。

  1. 我一開始設置了一些環境變量。 當然,它們在Inno腳本完成執行(即安裝完成)之前不會生效。
  2. 安裝服務需要環境變量。
  3. 安裝,配置和啟動服務的命令位於批處理文件中,安裝完成后需要執行該命令。 我只需要執行一次此批處理文件。

安裝完成后,如何使用Inno執行此批處理文件? 它可以在用戶完成安裝過程后立即執行,也可以在系統重新啟動時運行一次。 通過Inno腳本可以實現嗎?

還是有一種方法可以使我的環境變量生效,以便我的批處理文件可以運行?

我知道有些安裝程序會在用戶完成安裝過程並且系統重新啟動后執行部分安裝。 Inno是否支持這種功能?

我不確定CurStepChanged + ssPostInstall方法是否可以在這里使用,因為它基本上是Inno ssPostInstall使用的相同環境,並且我的變量尚未生效。

如果無法通過Inno腳本實現此目的,我將在系統啟動時放置批處理文件-在這種情況下,我將需要檢查服務是否已安裝/正在運行並采取適當的措施。 但這將是粗糙的。

請幫助任何指針/建議。

謝謝。

要計划在下一個Windows啟動/登錄上運行的批處理文件,請向HKCU\\Software\\Microsoft\\Windows\\CurrentVersion\\RunOnce項添加一個值:

[Registry]
Root: HKCU; Subkey: "Software\Microsoft\Windows\CurrentVersion\RunOnce"; \
    ValueType: string; ValueName: "MyProg"; ValueData: """{app}\MyBatch.bat"""

運行程序/批處理時,Windows將自動刪除RunOnce項中的值。

閱讀有關Run和RunOnce注冊表項的信息

默認情況下,在運行命令行之前會刪除RunOnce鍵的值。 您可以在RunOnce值名稱前添加一個感嘆號(!),以將值的刪除推遲到命令運行之后。 如果沒有感嘆號前綴,則如果RunOnce操作失敗,則下次啟動計算機時,將不會要求關聯的程序運行。

執行順序:

如果在一個特定的密鑰下注冊了多個程序,則這些程序的運行順序不確定。

實際上,程序是並行運行的。 某些條目可以很容易地成為可以運行到Windows會話結束的應用程序。 因此,Windows無法等待程序完成之后再啟動另一個程序。

如果需要按特定順序運行批處理文件,則僅創建一個指向主批處理文件的條目,該主批處理文件將按需要的順序運行其他批處理文件。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM