Inno Setup入門(十一)——完成安裝後執行某些程式

來源:互聯網
上載者:User

有些時候我們的程式雖然能夠很好的完成安裝,但是程式的配置工作可能需要其他的一些程式來輔助完成,如果不執行這些程式,主程式就不能很好的完成工作,甚至不能完成工作,一個很明顯的例子是,目前許多程式是通過NET技術開發的,這就要求電腦上必須安裝有.net Framework,否則主程式運行不了,只有預先安裝了NET Framework後主程式才能得以運行。這個時候可以通過Run段,指定程式完成安裝後、在安裝程式顯示最終對話方塊之前要執行的程式。

       設想有個主程式為ipmsg.exe,初始化程式為init.exe,主程式必須在init.exe運行一次之後方可很好的運行,這個時候可以這樣做(這裡的init.exe是我隨便找的一個檔案,和ipmsg沒有必然的聯絡,只是用來示範):

DefaultDirName="E:\TEST"

AppVersion=1.0

Compression=lzma2/max

ShowLanguageDialog=yes

 

[components]

Name: main; Description:"主程式(必選)";Types:full compact custom;Flags: fixed

Name: data; Description:"資料檔案";Types:full

Name: help;Description:"協助檔案";Types:full compact

 

[files]

;需要打包的檔案

Source: "F:\desktop\test\ipmsg.exe"; DestDir: "{app}";Components:main

Source: "F:\desktop\test\init.exe"; DestDir: "{app}";Components:main

Source: "F:\desktop\test\bin.dat"; DestDir: "{app}";Components:data

Source: "F:\desktop\test\help.chm"; DestDir: "{app}" ;Components:help

Source: "F:\desktop\test\readme.txt"; DestDir: "{app}";components:help;Flags:isreadme

 

[run]

Filename: "{app}\INIT.EXE";

測試上面代碼產生的打包檔案,運行到最後出現finish之前,將會出現如下畫面,後面的安裝程式將掛起,等待run段下的程式執行完畢後方可繼續運行。

聰明的讀者可能已經想到,使用該方法也可以實現readme的功能。這裡再談談該段的各個參數:

Filename:

該參數是必須的,用於說明需要執行的檔案,或者需要開啟的檔案夾。如果Filename 不是可執行檔(.exe或.com) 或批次檔(.bat 或.cmd),你必須在條目中使用shellexec 標記,由上面的代碼可知,這個參數可以包含常量。

Description:

僅在[Run] 段有效。這是條目的描述,可以包含常量,如果沒有指明,將會使用預設的描述

Parameters:

程式的可選命令列參數,可以包含常量例如有的控制台程式需要傳遞參數,這個時候就可以使用該參數了,樣本如下:

Filename: "{app}\INIT.EXE";Description:"初始化程式";Parameters:"/t"

注意:如果你的程式不接受參數,傳遞的參數將會被忽略。

WorkingDir

程式在哪個目錄啟動。如果這個參數未指定則使用Filename 參數中的目錄。如果Filename 不包含路徑,它將使用預設目錄。這個參數可以包含常量。

StatusMsg

僅在[Run] 段有效。由於某些程式在執行期間是不可見的(處於安全或者其他原因),但是又不想讓使用者以為安裝程式沒有響應,可以通過該參數指定程式執行時顯示在嚮導頁的訊息,如果這個參數未指定可是空白的,將使用預設的訊息“正在完成安裝...”。這個參數可以包含常量。例如下例:

[run]

Filename: "{app}\INIT.EXE";Description:"初始化程式"; StatusMsg:"別急,等一下就好"

則效果如下:

 

Flags:

這個參數是額外選項設定。多個選項可以使用空格隔開。支援下面的選項:

選項

說明

hidewizard

如果指定了這個標記,嚮導將在程式運行期間隱藏

nowait

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

postinstall

僅在[Run] 段有效。告訴安裝程式在安裝完成嚮導頁建立一個選擇框,使用者可以選中或不選中這個選擇框從而決定是否處理這個條目。以前這個標記調用showcheckbox。如果安裝程式已經重新啟動了使用者的電腦 (安裝了一個帶restartreplace 標記的檔案或如果[Setup] 段的AlwaysRestart 指示是yes 引起的),選擇框沒有機會出現,因此這些條目不會被處理。

runhidden

如果指定了這個標記,它將在隱藏視窗中運行程式。

runmaximized

如果指定了這個標記,將在已最大化的視窗運行程式或文檔

runminimized

如果指定了這個標記,將在已最小化的視窗運行程式或文檔。

shellexec

如果Filename 不是一個直接可執行檔(.exe 或.com 檔案),這個標記是必需的。當設定這個標記時,Filename 可以是一個檔案夾或任何登入的檔案類型,當使用shellexec 標記時,將不等待,直到產生的進程終止,如果確實需要,則必須委任標記waituntilterminated

skipifdoesntexist

如果這個標記在[Run] 段中指定,如果檔案名稱不存在,安裝程式不顯示錯誤訊息;如果這個標記在[UninstallRun] 段中指定,如果檔案名稱不存在,卸載程式不顯示“一些元素不能刪除”的警告

skipifnotsilent

僅在[Run] 段有效。告訴安裝程式如果安裝程式未在後台運行則跳過這個條目

skipifsilent

告訴安裝程式如果安裝程式在後台運行則跳過這個條目

unchecked

 

告訴安裝程式初始為不選中選擇框。如果使用者希望處理這個條目,可以通過選取選擇框執行,如果postinstall 標記未同時指定,這個標記被忽略

waituntilidle

如果指定了這個標記,它將在未輸入期間等待,直到進程等待使用者輸入,而不是等待進程終止。(調用WaitForInputIdle Win32 函數。) 不能與nowait 或waituntilterminted 組合使用

waituntilterminated

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

 

   

 

轉自:http://www.360doc.com/content/13/0327/14/4221543_274247804.shtml

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.