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ù)