1. 程式人生 > 實用技巧 >Inno Setup區段之Run篇

Inno Setup區段之Run篇

簡述

安裝程式顯示最終對話方塊前要執行的一些程式.

[Run]

  • Filename 必需的

  • Description 描述

  • Parameters 引數

  • WorkingDir 預設初始為當前目錄啟動

  • StatusMsg 安裝過程的訊息: 預設為 正在完成安裝

  • Flags
    此引數是一組額外選項。可以通過用空格分隔它們來使用多個選項。支援以下選項:

    32bit
    當在 Filename 和 WorkingDir 引數中使用時,促使{sys}常量對映到 32-位系統目錄。這是在一個 32-位 模式安裝中的預設行為。

    該標誌不能與 shellexec 標誌組合。

    64bit
    當在 Filename 和 WorkingDir 引數中使用時,促使{sys}常量對映到 64-位系統目錄。這是在一個 64-位安裝模式安裝中的預設行為。

    當安裝程式執行在 64-位 Windows 時,該標誌僅可被使用,否則將會出現一個錯誤。在一個安裝支援 32- 和 64-位體系結構時,通過新增一個 Check: IsWin64 引數可以避免該錯誤,當執行在 32-位 Windows 時,將導致該項被靜默跳過。

    該標誌不能與 shellexec 標誌組合。

    hidewizard
    如果指定了該標誌,嚮導將在程式執行期間隱藏。

    nowait
    如果指定了該標誌,它將在處理下一個 [Run] 條目前或完成安裝前不等待程序執行完成。不能與 waituntilidle 或 waituntilterminated 組合使用。

    postinstall
    僅在 [Run] 區段有效。告訴安裝程式在安裝完成嚮導頁面建立一個選擇框,使用者可以選擇或不 選擇該複選框從而決定是否處理這個條目。以前該標誌呼叫 showcheckbox。

    如果安裝程式已經重新啟動了使用者的電腦(安裝了一個帶 restartreplace 標誌的檔案或如果 [Setup] 區段的 AlwaysRestart 指令是 yes 引起的),選擇框沒有機會出現,因此這些條目不會被處理。

    [Files] 區段條目中的 isreadme 標誌現在已被廢棄。如果編譯器帶 isreadme 標誌的條目,它將從 [Files] 區段條目中去除 isreadme 標誌,並在 [Run] 區段條目列表的開頭插入一個生成的 [Run] 條目。該生成的 [Run] 區段條目執行自述檔案,並帶有 shellexec,skipifdoesntexist,postinstall 和 skipifsilent 標誌。

    runascurrentuser
    如果指定了該標誌,則產生的程序將繼承安裝/解除安裝的使用者證書(典型的,完全的管理許可權)。

    當 postinstall 標誌未被使用時,這是預設行為。

    該標誌不能與 runasoriginaluser 組合使用。

    runasoriginaluser
    僅在 [Run] 區段有效。如果該標誌被指定,並且該系統是正執行的 Windows Vista 或以後的版本,則產生的程序將執行帶有最初啟動安裝程式的使用者證書(通常非高層級的) (即,"pre-UAC 對話方塊"證書)。

    當 postinstall 標誌被使用時,這是預設行為。

    如果使用者通過右鍵點選它的 EXE 檔案並選擇 "以管理員身份執行" 來啟動安裝程式,那麼遺憾的是這個標誌不會有任何效果,因為安裝程式有沒有機會用原來的使用者證書執行任何程式碼。如果安裝程式是從已提升的程序中啟動,也是同樣的道理。但是請注意,這不是 Inno Setup 一個特定的限制;在任何一種情況中 Windows Installer 的基本安裝程式不能返回到原始使用者證書。

    該標誌不能與 runascurrentuser 組合使用。

    runhidden
    如果指定了該標誌,它將在隱藏視窗中執行程式。請在執行一個要提示使用者輸入的程式中不要使用該標誌。

    runmaximized
    如果指定了該標誌,將在最大化視窗執行程式或文件。

    runminimized
    如果指定了該標誌,將在最小化視窗執行程式或文件。

    shellexec
    如果 Filename 不是一個直接可執行檔案(.exe 或 .com 檔案),該標誌是必需的。當設定該標誌時,Filename 可以是一個資料夾或任何已註冊的檔案型別 -- 包括 .hlp,.doc 等。該檔案將用使用者系統中與這個檔案型別關聯的應用程式開啟,與在資源管理器雙擊檔案的方法是相同的。

    按預設值,當使用 shellexec 標誌時,將不等待,直到生成的程序終止。
    如果你需要,你必須新增標誌 waituntilterminated。注意,如果新程序未生成,它不能執行也將不等待 -- 例如,檔案指定指定為一個資料夾。

    skipifdoesntexist
    如果該標誌在 [Run] 區段中指定,如果 Filename 不存在,安裝程式不顯示錯誤訊息。

    如果該標誌在 [UninstallRun] 區段中指定,如果 Filename 不存在,解除安裝程式不顯示“一些元素不能刪除”的警告。

    在使用該標誌時,Filename 必須是一個絕對路徑。

    skipifnotsilent
    僅在 [Run] 區段有效。告訴安裝程式如果安裝程式未在靜默執行則跳過這個條目。

    skipifsilent
    僅在 [Run] 區段有效。告訴安裝程式如果安裝程式在靜默執行則跳過這個條目。

    unchecked
    僅在 [Run] 區段有效。告訴安裝程式初始為不選中選擇框。如果使用者希望處理這個條目,可以通過選取選擇框執行。如果 postinstall 標誌未同時指定,該標誌被忽略。

    waituntilidle
    如果指定了該標誌,它將在未輸入期間等待,直到程序等待使用者輸入,而不是等待程序終止。(呼叫 WaitForInputIdle Win32 函式。)不能與 nowait 或 waituntilterminated 組合使用。

    waituntilterminated
    如果指定該標誌,將等待到程序完全終止。注意這是一個預設動作(也就是你不需要指定該標誌),除非你使用了 shellexec 標誌,在這種情況下,如果你要等待,需要指定該標誌。不能與 nowait 或 waituntilidle 組合使用。

code

[Run]
Filename: "{app}\INIT.EXE"; Parameters: "/x"
Filename: "{app}\README.TXT"; Description: "檢視自述檔案"; Flags: postinstall shellexec skipifsilent
Filename: "{app}\MYPROG.EXE"; Description: "執行應用程式"; Flags: postinstall nowait skipifsilent unchecked