Inno Setup 是什么
Inno Setup 是一個免費的 Windows 安裝程序制作軟件。第一次發表是在 1997 年,Inno Setup 今天在功能設置和穩定性上的競爭力可能已經超過一些商業的安裝程序制作軟件。
創建安裝程序
安裝程序用編譯腳本的方式創建,腳本其實就是一個類似 .INI 文件格式的 ASCII 碼文本 文件。 (它不象你想象的那么復雜) 腳本用一個“.iss” (表示 Inno Setup Script) 的擴展名
腳本文件一般可以用安裝程序編譯器程序內置的編輯器進行編輯。在你編寫完腳本后,下一個最終步驟就是選擇安裝程序編譯器中的“編譯”。 創建完成后,就可以運行根據你腳本編 譯的安裝程序了
例子:Inno Setup 安裝目錄下的 Samples 子目錄中
腳本格式概述
Inno Setup 準備了一些段。每個段控制一個不同方面的安裝程序部分。每個段用包含在括號 [] 中的段名開始,每個段里面是一些相關的條目。 其中有兩種不能類型的段: 有些就象 [Setup] 段,條目包含指示名和值 (格式為 Directive=Value),還有一些就象 [Files] 段,條目被參數分隔。 這里是一個例子:
[Setup]
AppName=My Program
[Files]
Source: "MYPROG.EXE"; DestDir: "{app}"
你可以通過在行起始位置加個分號“;”在腳本中寫入“注釋” (編譯時被編譯時忽略)。例 如: ; 這是一條注釋,放在這里只是要提醒我自己...
段中參數
所有腳本中的段,除 [Setup]、[Messages]、[CustomMessages] 和 [LangOptions] 段,包含的 行中可有多個各自的參數。下列是 [Files] 段中的一個舉例:
[Files]
Source: "MYPROG.EXE"; DestDir: "{app}"
Source: "MYPROG.HLP"; DestDir: "{app}"
Source: "README.TXT"; DestDir: "{app}"; Flags: isreadme
每個參數都由一個名字組成,然后跟隨一個冒號,然后是一個值。除非另外說明,如果參數 未指定,將設定為一個默認值。一行中多個參數用分號隔開,并且可以以任何次序列出。
參數的值如果包含一個用戶定義的字符串時,一般來說用雙引號 (") 包含,例如象文件名。 引號使用不是必需的,但這樣做可能會在值中的首位或末位被加入空格,以及分號和雙引號。 在要引用的值中使用一個雙引號字符,用兩個連續的雙引號字符,例如: "This "" contains "" embedded "" quotes" 安裝程序編譯器會將它視作: This " contains " embedded " quotes
常量
腳本中的項目大部分可以嵌入常量。這些預定義的字符被包含在括弧 { } 中。安裝程序或 卸載程序會根據用戶選擇和系統配置將這些常量翻譯為文字值。例如,{win} 在大部分系統 中會被翻譯為“C:\WINDOWS”。 字 符 “ { ” 視 作 為 常量開始。如果你想將它作為實際字符使用,你必須使用兩個連續的“{” 字符。(對于“}”則不需要。) 當在常量后面直接跟隨一個反斜杠時,如 果 常量的值末端已經包含了一個反斜杠號,安裝程 序或卸載程序將自動刪除該反斜杠號。 因此,如果一個特殊常量值是“C:\”, {constantname}\file 將翻譯為“C:\file”, 而 不是“C:\file”。如果你想防止意外,將反斜框放 入 { } 字符中,例如,{app}{\}
。
[Setup] 段
這個段包含用于安裝程序和卸載程序的全局設置。某些提示對于你創建的任何安裝程序都是 必需的。這是 [Setup]段的一個示例:
[Setup]
AppName=My Program
AppVerName=My Program version 1.4
DefaultDirName={pf}\My Program
DefaultGroupName=My Program
[Tasks] 段
這個段是只選的。它定義安裝程序在執行安裝期間所有由用戶定制的任務。這些任務以選項 框和單選項形式在附加任務向導頁中出現。 光任務本身是不會做任何事情的: 它需要“鏈接”到其它安裝條目。查閱組件和任務參數。 這里是一個 [Tasks] 段的示例:
[Tasks]
Name: desktopicon; Description: "創建桌面快捷方式(&D)"; GroupDescription: "添加快捷方 式:"; Components: main
Name: desktopicon\common; Description: "對于所有用戶"; GroupDescription: "添加快捷方式:"; Components: main; Flags: exclusive
Name: desktopicon\user; Description: "僅對當前用戶"; GroupDescription: "添加快捷方式 : quicklaunchicon; Description: "創建快速運行欄快捷方式(&Q)"; GroupDescription: "添加快捷 方式:"; Components: main; Flags: unchecked
[Dirs] 段
這個可選段用來定義除創建用戶選擇的應用程序目錄外安裝程序自動創建的另外目錄。在 主 應 用程序目錄下創建子目錄對于這個段是公共使用的。 請注意,在使用 [Files] 段安裝文件前你無需一定要創建目錄,這個段起初用于創建一個空 的目錄。 這里是一個 [Dirs] 段的示例:
[Dirs]
Name: "{app}\data"
Name: "{app}\bin"
上面的示例中,在安裝程序創建應用程序目錄后,又在應用程序目錄下創建了兩個子目錄。
[Files] 段
這是定義安裝程序安裝文件到用戶系統中的可選文件段。 這里是一個 [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] 段
這個可選段定義所有創建在開始菜單和/或其它位置 (比如桌面) 的快捷方式。 這里是 [Icons] 段的例子:
[Icons]
Name: "{group}\My Program"; Filename: "{app}\MYPROG.EXE"; WorkingDir: "{app}"
Name: "{group}\Uninstall My Program"; Filename: "{uninstallexe}"
[INI] 段
這是你希望安裝程序在用戶系統中設置 .INI 文件條目的可選段。 這里是 [INI] 段的例子:
[INI]
Filename: "{win}\MYPROG.INI"; Section: "InstallSettings"; Flags: uninsdeletesection
Filename: "{win}\MYPROG.INI"; Section: "InstallSettings"; Key: "InstallPath"; String: "{app}"
[Run] & [UninstallRun] 段
[Run] 段是可選的,用來指定程序完成安裝后、在安裝程序顯示最終對話框之前要執行的程 序數,[UninstallRun] 段也可樣是可選的,用來指定在卸載第一步要執行的程序數。除在下 面有注釋的外,兩個段用相同的語法。 程序按它們在腳本中的出現順序執行。按默認,當處理 [Run]/[UninstallRun] 段條目時,安 裝程序/卸載程序將在處理下一個任務之前等待,直到程序終止。除非使用了 nowait, shellexec 或 waituntilidle 標記。 注意,按默認,如果 [Run] 段隊列文件中的一個正在執行的程序要在下一次重新啟動后替 換 (通過調用 MoveFileEx 或通過修改 wininit.ini),安裝程序將進行偵測,并在安裝結束后 提示用戶重新啟動電腦。如果你不想這么做,設置 RestartIfNeededByRun 指示為 no。 下面是 [Run] 段的一個示例。
[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
摘自百度文庫