InnoSetup使用說明

Inno Setup 是什么

Inno Setup 是一個(gè)免費(fèi)的 Windows 安裝程序制作軟件。第一次發(fā)表是在 1997 年,Inno Setup 今天在功能設(shè)置和穩(wěn)定性上的競(jìng)爭(zhēng)力可能已經(jīng)超過一些商業(yè)的安裝程序制作軟件。

創(chuàng)建安裝程序

安裝程序用編譯腳本的方式創(chuàng)建,腳本其實(shí)就是一個(gè)類似 .INI 文件格式的 ASCII 碼文本 文件。 (它不象你想象的那么復(fù)雜) 腳本用一個(gè)“.iss” (表示 Inno Setup Script) 的擴(kuò)展名

腳本文件一般可以用安裝程序編譯器程序內(nèi)置的編輯器進(jìn)行編輯。在你編寫完腳本后,下一個(gè)最終步驟就是選擇安裝程序編譯器中的“編譯”。 創(chuàng)建完成后,就可以運(yùn)行根據(jù)你腳本編 譯的安裝程序了

例子:Inno Setup 安裝目錄下的 Samples 子目錄中

腳本格式概述

Inno Setup 準(zhǔn)備了一些段。每個(gè)段控制一個(gè)不同方面的安裝程序部分。每個(gè)段用包含在括號(hào) [] 中的段名開始,每個(gè)段里面是一些相關(guān)的條目。 其中有兩種不能類型的段: 有些就象 [Setup] 段,條目包含指示名和值 (格式為 Directive=Value),還有一些就象 [Files] 段,條目被參數(shù)分隔。 這里是一個(gè)例子:

[Setup] 
AppName=My Program  
[Files]  
Source: "MYPROG.EXE"; DestDir: "{app}" 

你可以通過在行起始位置加個(gè)分號(hào)“;”在腳本中寫入“注釋” (編譯時(shí)被編譯時(shí)忽略)。例 如: ; 這是一條注釋,放在這里只是要提醒我自己...

段中參數(shù)

所有腳本中的段,除 [Setup]、[Messages]、[CustomMessages] 和 [LangOptions] 段,包含的 行中可有多個(gè)各自的參數(shù)。下列是 [Files] 段中的一個(gè)舉例:

[Files] 
Source: "MYPROG.EXE"; DestDir: "{app}"  
Source: "MYPROG.HLP"; DestDir: "{app}"  
Source: "README.TXT"; DestDir: "{app}"; Flags: isreadme

每個(gè)參數(shù)都由一個(gè)名字組成,然后跟隨一個(gè)冒號(hào),然后是一個(gè)值。除非另外說明,如果參數(shù) 未指定,將設(shè)定為一個(gè)默認(rèn)值。一行中多個(gè)參數(shù)用分號(hào)隔開,并且可以以任何次序列出。

參數(shù)的值如果包含一個(gè)用戶定義的字符串時(shí),一般來說用雙引號(hào) (") 包含,例如象文件名。 引號(hào)使用不是必需的,但這樣做可能會(huì)在值中的首位或末位被加入空格,以及分號(hào)和雙引號(hào)。 在要引用的值中使用一個(gè)雙引號(hào)字符,用兩個(gè)連續(xù)的雙引號(hào)字符,例如: "This "" contains "" embedded "" quotes" 安裝程序編譯器會(huì)將它視作: This " contains " embedded " quotes

常量

腳本中的項(xiàng)目大部分可以嵌入常量。這些預(yù)定義的字符被包含在括弧 { } 中。安裝程序或 卸載程序會(huì)根據(jù)用戶選擇和系統(tǒng)配置將這些常量翻譯為文字值。例如,{win} 在大部分系統(tǒng) 中會(huì)被翻譯為“C:\WINDOWS”。 字 符 “ { ” 視 作 為 常量開始。如果你想將它作為實(shí)際字符使用,你必須使用兩個(gè)連續(xù)的“{” 字符。(對(duì)于“}”則不需要。) 當(dāng)在常量后面直接跟隨一個(gè)反斜杠時(shí),如 果 常量的值末端已經(jīng)包含了一個(gè)反斜杠號(hào),安裝程 序或卸載程序?qū)⒆詣?dòng)刪除該反斜杠號(hào)。 因此,如果一個(gè)特殊常量值是“C:\”, {constantname}\file 將翻譯為“C:\file”, 而 不是“C:\file”。如果你想防止意外,將反斜框放 入 { } 字符中,例如,{app}{\}

[Setup] 段

這個(gè)段包含用于安裝程序和卸載程序的全局設(shè)置。某些提示對(duì)于你創(chuàng)建的任何安裝程序都是 必需的。這是 [Setup]段的一個(gè)示例:

[Setup]  
AppName=My Program  
AppVerName=My Program version 1.4  
DefaultDirName={pf}\My Program  
DefaultGroupName=My Program 

[Tasks] 段

這個(gè)段是只選的。它定義安裝程序在執(zhí)行安裝期間所有由用戶定制的任務(wù)。這些任務(wù)以選項(xiàng) 框和單選項(xiàng)形式在附加任務(wù)向?qū)ы?yè)中出現(xiàn)。 光任務(wù)本身是不會(huì)做任何事情的: 它需要“鏈接”到其它安裝條目。查閱組件和任務(wù)參數(shù)。 這里是一個(gè) [Tasks] 段的示例:

[Tasks]  
Name: desktopicon; Description: "創(chuàng)建桌面快捷方式(&D)"; GroupDescription: "添加快捷方 式:"; Components: main  
Name: desktopicon\common; Description: "對(duì)于所有用戶"; GroupDescription: "添加快捷方式:"; Components: main; Flags: exclusive 
Name: desktopicon\user; Description: "僅對(duì)當(dāng)前用戶"; GroupDescription: "添加快捷方式 : quicklaunchicon; Description: "創(chuàng)建快速運(yùn)行欄快捷方式(&Q)"; GroupDescription: "添加快捷 方式:"; Components: main; Flags: unchecked 

[Dirs] 段

這個(gè)可選段用來定義除創(chuàng)建用戶選擇的應(yīng)用程序目錄外安裝程序自動(dòng)創(chuàng)建的另外目錄。在 主 應(yīng) 用程序目錄下創(chuàng)建子目錄對(duì)于這個(gè)段是公共使用的。 請(qǐng)注意,在使用 [Files] 段安裝文件前你無需一定要?jiǎng)?chuàng)建目錄,這個(gè)段起初用于創(chuàng)建一個(gè)空 的目錄。 這里是一個(gè) [Dirs] 段的示例:

[Dirs]  
Name: "{app}\data"  
Name: "{app}\bin" 

上面的示例中,在安裝程序創(chuàng)建應(yīng)用程序目錄后,又在應(yīng)用程序目錄下創(chuàng)建了兩個(gè)子目錄。

[Files] 段

這是定義安裝程序安裝文件到用戶系統(tǒng)中的可選文件段。 這里是一個(gè) [Files] 段的示例:

[Files]  
Source: "CTL3DV2.DLL"; DestDir: "{sys}"; Flags: onlyifdoesntexist uninsneveruninstall  
Source: "MYPROG.EXE"; DestDir: "{app}"  
Source: "MYPROG.HLP"; DestDir: "{app}"  
Source: "README.TXT"; DestDir: "{app}"; Flags: isreadme 

[Icons] 段

這個(gè)可選段定義所有創(chuàng)建在開始菜單和/或其它位置 (比如桌面) 的快捷方式。 這里是 [Icons] 段的例子:

[Icons]  
Name: "{group}\My Program"; Filename: "{app}\MYPROG.EXE"; WorkingDir: "{app}"  
Name: "{group}\Uninstall My Program"; Filename: "{uninstallexe}"

[INI] 段

這是你希望安裝程序在用戶系統(tǒng)中設(shè)置 .INI 文件條目的可選段。 這里是 [INI] 段的例子:

[INI]  
Filename: "{win}\MYPROG.INI"; Section: "InstallSettings"; Flags: uninsdeletesection  
Filename: "{win}\MYPROG.INI"; Section: "InstallSettings"; Key: "InstallPath"; String: "{app}" 

[Run] & [UninstallRun] 段

[Run] 段是可選的,用來指定程序完成安裝后、在安裝程序顯示最終對(duì)話框之前要執(zhí)行的程 序數(shù),[UninstallRun] 段也可樣是可選的,用來指定在卸載第一步要執(zhí)行的程序數(shù)。除在下 面有注釋的外,兩個(gè)段用相同的語(yǔ)法。 程序按它們?cè)谀_本中的出現(xiàn)順序執(zhí)行。按默認(rèn),當(dāng)處理 [Run]/[UninstallRun] 段條目時(shí),安 裝程序/卸載程序?qū)⒃谔幚硐乱粋€(gè)任務(wù)之前等待,直到程序終止。除非使用了 nowait, shellexec 或 waituntilidle 標(biāo)記。 注意,按默認(rèn),如果 [Run] 段隊(duì)列文件中的一個(gè)正在執(zhí)行的程序要在下一次重新啟動(dòng)后替 換 (通過調(diào)用 MoveFileEx 或通過修改 wininit.ini),安裝程序?qū)⑦M(jìn)行偵測(cè),并在安裝結(jié)束后 提示用戶重新啟動(dòng)電腦。如果你不想這么做,設(shè)置 RestartIfNeededByRun 指示為 no。 下面是 [Run] 段的一個(gè)示例。

[Run]  
Filename: "{app}\INIT.EXE"; Parameters: "/x"  
Filename: "{app}\README.TXT"; Description: "查看自述文件"; Flags: postinstall shellexec skipifsilent  
Filename: "{app}\MYPROG.EXE"; Description: "運(yùn)行應(yīng)用程序"; Flags: postinstall nowait skipifsilent unchecked

摘自百度文庫(kù)

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 228,702評(píng)論 6 534
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 98,615評(píng)論 3 419
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 176,606評(píng)論 0 376
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)。 經(jīng)常有香客問我,道長(zhǎng),這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 63,044評(píng)論 1 314
  • 正文 為了忘掉前任,我火速辦了婚禮,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 71,826評(píng)論 6 410
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 55,227評(píng)論 1 324
  • 那天,我揣著相機(jī)與錄音,去河邊找鬼。 笑死,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,307評(píng)論 3 442
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 42,447評(píng)論 0 289
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 48,992評(píng)論 1 335
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 40,807評(píng)論 3 355
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 43,001評(píng)論 1 370
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,550評(píng)論 5 361
  • 正文 年R本政府宣布,位于F島的核電站,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 44,243評(píng)論 3 347
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 34,667評(píng)論 0 26
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 35,930評(píng)論 1 287
  • 我被黑心中介騙來泰國(guó)打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 51,709評(píng)論 3 393
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 47,996評(píng)論 2 374

推薦閱讀更多精彩內(nèi)容

  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 134,785評(píng)論 18 139
  • Spring Boot 參考指南 介紹 轉(zhuǎn)載自:https://www.gitbook.com/book/qbgb...
    毛宇鵬閱讀 46,899評(píng)論 6 342
  • Ubuntu的發(fā)音 Ubuntu,源于非洲祖魯人和科薩人的語(yǔ)言,發(fā)作 oo-boon-too 的音。了解發(fā)音是有意...
    螢火蟲de夢(mèng)閱讀 99,431評(píng)論 9 467
  • 1. Java基礎(chǔ)部分 基礎(chǔ)部分的順序:基本語(yǔ)法,類相關(guān)的語(yǔ)法,內(nèi)部類的語(yǔ)法,繼承相關(guān)的語(yǔ)法,異常的語(yǔ)法,線程的語(yǔ)...
    子非魚_t_閱讀 31,721評(píng)論 18 399
  • 前幾天我跟郭先生說:我說我要來練寫字,我的字太難看了。 郭先生:寫好字很難的呢,我跟你說中國(guó)有一個(gè)書圣,他字就真的...
    南雅媽媽閱讀 138評(píng)論 0 0