[Setup]shell
這個段包含用於安裝程序和卸載程序的全局設置
AppId:在註冊表中惟一的項名稱,安裝完64位系統在安全
HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\{AppId}_is1app
反之在如下路徑中ide
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{AppId}_is1函數
該項裏面的內容包括以下內容post
若是不定義AppId,則其安裝完以後,在註冊表中默認以{AppName}_is1的名字存在字體
AppName:用以指定你正在安裝的應用程序的標題,AppName 始終在安裝過程當中顯示在安裝屏幕的左上角以及安裝嚮導中
AppVersion:應用程序版本號
AppVerName:在控制面板中顯示的名稱
AppPublisher:在控制面板中顯示的發佈者
DefaultDirName:用於選擇目標位置嚮導面中的默認目錄名
DisableProgramGroupPage:
OutputDir:用於打包完程序的輸出位置
OutputBaseFilename:打包完程序顯示的默認名
Compression:指定要在文件中使用的壓縮方法,以及壓縮標準
SolidCompression: 若是設爲 yes,固實壓縮將啓用。這會使全部文件一次性壓縮
[registry]ui
本段是對註冊表的操做編碼
示例以下:spa
Root:HKLM;Subkey:SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{#AppId};ValueType: string; ValueName:DisplayName; ValueData:{#MyAppServiceName}; Flags: uninsdeletevalue
另外能夠http://379910987.blog.163.com/blog/static/3352379720110259414788/該網址下,有關於註冊表的參數說明
[Languages]
本段是安裝程序默認語言
Name: "english"; MessagesFile: "compiler:Default.isl"
Name:語言爲英文;因爲InnoSetup安裝包中默認沒有帶中文語言文件,因此若是須要將它變成中文,則先要下載一箇中文語言文件,並把它放到InnoSetup安裝目錄中的Languages子目錄中
MessageFile:則指定了語言文件路徑
[Tasks]
這個段是隻選的。它定義安裝程序在執行安裝期間全部由用戶定製的任務。這些任務以選項框和單選項形式在附加任務嚮導頁中出現
Name: "desktopicon"; Description: "{cm:CreateDesktopIcon}"; GroupDescription: "{cm:AdditionalIcons}"; Flags: unchecked(不選中)/ checkedonce(默認選中)
[Files]
定義安裝程序安裝文件到用戶系統中的可選文件段
Source: "E:\Softwares\Inno Setup\SourceFile\*"; DestDir: "{app}"; Flags: ignoreversion recursesubdirs createallsubdirs
Source:須要打包進去的源文件
DestDir:默認是{app}
Flags: "recursesubdirs" 和 "createallsubdirs",意思是包含文件夾裏的全部文件和子文件夾,
注意: 不要在任何共享系統文件上使用「Flags: ignoreversion」,意爲不比較版本信息
[Icons]
這個可選段定義全部建立在開始菜單和/或其它位置 (好比桌面) 的快捷方式
Name: "{commonprograms}\{#MyAppName}"; Filename: "{app}\{#MyAppClientName}"
Name: "{commondesktop}\{#MyAppName}"; Filename: "{app}\{#MyAppClientName}"; Tasks: desktopicon;IconFilename:"{app}\eas.ico"
FileName:程序的路徑
Name:開始菜單/桌面快捷方式的名稱
Tasks:任務(desktopicon:桌面圖標)
IconFilename:圖標位置
[Run]
Filename: "{app}\installService.bat"; Description: "描述內容";Flags:runhidden
Filename:安裝文件
Description: 這是條目的描述,能夠包含常量,若是沒有指明,將會使用默認的描述
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 組合使用 |
StatusMsg
僅在[Run] 段有效。因爲某些程序在執行期間是不可見的(處於安全或者其餘緣由),可是又不想讓用戶覺得安裝程序沒有響應,能夠經過該參數指定程序執行時顯示在嚮導頁的消息,若是這個參數未指定但是空白的,將使用默認的消息「正在完成安裝...」。這個參數能夠包含常量。
[UninstallRun]
卸載時候作的一些操做
Filename:"{cmd}";Parameters:"/c net stop 服務名稱";Flags:runhidden
另外羅列了一些經常使用的常量
目錄常量
{app}
應用程序目錄,這是用戶在安裝嚮導的選擇安裝目錄頁裏面所選擇的。
例如:若是你使用了 {app}/MYPROG.EXE 做爲一項而且用戶選擇了「C:/MYPROG」做爲應用程序的目錄,那麼安裝程序就會將它轉換成「C:/MYPROG/MYPROG.EXE」。
{win}
系統的 Windows 目錄。 例如:若是你使用了 {win}/MYPROG.INI 做爲一項而且系統的 Windows 目錄是「C:/WINDOWS」,那麼安裝程序就會將它轉換成「C:/WINDOWS/MYPROG.INI」。
{sys}
系 統的 Windows 系統(System)目錄(在 Windows NT/2000 下是 System32)。 例如:若是你使用了 {sys} /CTL3D32.DLL 做爲一項而且系統的 Windows 系統目錄是「C:/WINDOWS/SYSTEM」,那麼安裝程序就會將它轉換成「C: /WINDOWS/SYSTEM/CTL3D32.DLL」。
{src}
這個文件夾指向安裝程序所在的位置。
例如:若是你使用了 {src}/MYPROG.EXE 做爲一項而且用戶是從「S:/ 」安裝的,那麼安裝程序就會將它轉換成「S:/MYPROG.EXE」。
{sd}
系統驅動器,它是指 Windows 被安裝到的那個驅動器,典型的是「C:」,對於 Windows NT/2000,這個常量同系統的環境變量「SystemDrive」是等效的。
{pf}
程序文件夾(Program Files),這個路徑是系統的 Program Files 目錄,典型的是「C:/Program Files」。
{cf}
公共文件夾(Common Files),這個路徑是系統的 Common Files 文件夾,典型的是「C:/Program Files/Common Files」。
{tmp}
臨時目錄,這個目錄並非用戶的 TEMP 環境變量指向的目錄,而是安裝程序在啓動時在用戶的臨時目錄下創建的一個子目錄(它有一個相似於「
C:/WINDOWS/TEMP/IS-xxxxx.tmp」這樣的名字),在安裝程序退出時全部的文件和子目錄將會被刪除。對於在 [Run] 段裏面要被執行且在安裝之後又不須要的程序文件來講這個功能是很是有用的。
{fonts}
字 體目錄,在 Windows 95/NT 4+ 下有一個專門爲字體設立的目錄(一般這個目錄在 Windows 目錄下且被命名爲「FONTS」),這 個常量就指向這個目錄。對於 Windows NT 3.51,這個常量是和 {sys} 等效的,由於當時尚未字體目錄。
{dao}
DAO 目錄,當安裝程序運行在 Windows 95/NT 4+ 上時,它被等效爲 {
cf}/Microsoft Shared/DAO,當運行於 Windows NT 3.51 時,它被等效爲 {
win}/MSAPPS/DAO.
外殼(Shell)文件夾常量
Inno Setup 還 支持另一套目錄常量,這就是涉及到的外殼(shell)文件夾常量,它們具備和其它的目錄常量相同的使用方法。然而,若是在腳本的 [Setup] 段 裏面放入了 MinVersion=4,3.51 這一行來表示容許支持 NT 3.51,那麼將只有 {group} 這個外殼文件夾常量能被使用,並籤只能用在 [Icons] 段。
下面的包含了「user」的常量涉及到當前登錄的用戶私人文檔(profile),而帶有「
common」的常量會涉及到所有用戶(All Users)的私人文檔(profile)。當安裝程序運行在 Windows NT/2000 操做系統下而且用戶不具備管理員的權限時,全部的帶有「common」的常量會強迫同帶有「user」的常量等效。
* 標記表示帶有「common」的常量在 Windows 9x 操做系統下同帶有「user」的常量等效。
{group}
程 序組的路徑,取決於用戶在安裝程序嚮導的「選擇程序組」頁的選擇。對於 Windows NT,這個文件夾始終被創建在全部用戶的私人文檔 (All Users profile),除非用戶正在安裝的這個應用程序不具備管理員的權限,那麼在這種狀況下它將被創建在用戶的私人文檔中 (profile).
{sendto}
當前用戶的「發送」的路徑。(沒有公共的「發送」文件夾。)
{userappdata} & {commonappdata}
應用程序數據(Application Data)文件夾的路徑。
{userdesktop} & {commondesktop} *
桌面文件夾的路徑,推薦桌面快捷方式使用 {userdesktop}.
{userdocs} & {commondocs}
「個人文檔」文件夾的路徑(或者對於 NT 4.0,是指私人文件夾).
{userfavorites} & {commonfavorites}
「收 藏夾」的路徑,這個常量的使用方法是須要 MinVersion 的設置至少爲「4.1, 4」,目前只有 Windows 2000 支 持 {commonfavorites},若是使用的是在這以前的版本的 Windows,那麼它將會被轉換成和{userfavorites} 相同的 目錄。
{userprograms} & {commonprograms} *
在開始菜單裏面的程序文件夾的路徑。
{userstartmenu} & {commonstartmenu} *
開始菜單的定級路徑。
{userstartup} & {commonstartup} *
開始菜單裏面的啓動文件夾的路徑。
{usertemplates} & {commontemplates}
模板(Templates)文件夾的路徑,目前只有 Windows 2000 支持 {
commontemplates},若是使用的是在這以前的版本的 Windows ,它將會被轉換成和 {usertemplates} 相同的目錄。
其餘的常量
{/}
一個反斜槓字符,請參見本頁前面提到的關於常量 {/} 和單字符 / 在使用上有何不一樣的說明。
{%NAME}
內嵌一個環境變量,這個 NAME 是要使用的環境變量的名字。若是在用戶的系統當中指定的環境變量不存在,這個常量就會被一個空的字符串所替代。
{computername}
安裝程序正在運行的計算機的名稱(就是「GetComputerName」函數的返回值)。
{groupname}
用戶在安裝程序嚮導的選擇程序組頁選擇的程序組的名稱,這個是不一樣於 {group} 的,它不包括路徑。
{hwnd}
(專門用途)傳送安裝程序背景窗口的窗口句柄。
{reg:HKxx/SubkeyName,ValueName|DefaultValue}
內嵌一個註冊表值。
HKxx 指定根鍵(root key),參見 [Registry] 段 文檔所列出的根鍵。
SubkeyName 指定要讀取的子鍵的名稱。
ValueName 指定要讀取的值的名稱,要讀取一個鍵的默認值就讓 ValueName 爲空。
DefaultValue 若是指定的註冊表值不存在或者它不是一個字符串類型(REG_SZ 或者 REG_EXPAND_SZ),則嵌入這個值。
若是你但願包括一個逗號,豎線(字符「|」)或大括號閉弧「}」在常量裏面,你必須經過「%-編碼」 形式用「%」後緊跟一個兩位的16進制代碼轉譯後替換原來的字符,一個逗號是「%2c」,一個豎線符是「%7c」,一個大括號閉弧是「%7d」。
DefaultValue 能夠包括常量,然而,如上所訴內嵌的常量的大括號的閉弧
(「}」) 必須被改爲「%7d」才能夠。
{srcexe}
安裝程序的文件名全稱(包括全程路徑和文件名),例如「C:/SETUP.EXE」。
{username}
運行安裝程序的用戶的名稱(函數 GetUserName 的返回值)。
公共參數
有倆個可選的參數能夠在全部的段裏面的任何項中使用,它們是:
MinVersion
說明:
該 項處理所需的分別最低的 Windows 版本和 Windows NT 版本. 若是將某個版本號指定爲 0 那麼在該平臺上就不再會處理這項了,版 本建立編號(Build numbers)和(或)服務包級別(Service pack levels)也能夠被包括在版本號當中。這個參數將會覆蓋位 於 [Setup] 段當中的 MinVersion 關鍵字。
示例:
MinVersion: 4.0,4.0
OnlyBelowVersion
說明:
基本上是和 MinVersion 相反,該項所指定的最低的 Windows 版本 和 Windows NT
版 本將不會被處理,例如:若是你指定了 4.1,5.0 而且用戶運行在 Windows 95 或 NT 4.0 下,那麼該項將會被處理,可是若是用戶 運行在 Windows 98 (報告的版本信息是 4.1)或 Windows 2000 (報告的版本信息是 NT 5.0),則該項就不會被處理。 使用「0」表示該版本號上限的限制。版本建立編號(Build numbers)和(或)服務包級別(Service pack levels) 也能夠 包括在版本號當中。這個參數將會覆蓋位於 [Setup] 段當中的 OnlyBelowVersion 關鍵字。
示例:
OnlyBelowVersion: 4.1,5.0
其它注意事項
安裝程序是按照段內的排列順序來處理全部的項的,[UninstallRun] 段是個例外,卸載時處理全部項的順序是與安裝程序相反的。
在這個示例中:
[INI]
Filename: 「{win}/MYPROG.INI」; Section: 「InstallSettings」; Flags: uninsdeletesectionifempty
Filename: 「{win}/MYPROG.INI」; Section: 「InstallSettings」; Key: 「InstallPath」; String: 「{app}」; Flags: uninsdeleteentry
安 裝程序首先記錄下第一項的數據 uninsdeletesectionifempty 標記到卸載記錄中。建立第二項的鍵,而後記錄 下 uninsdeleteentry 標記的數據到卸載記錄中,當程序被卸載時,卸載程序將首先處理 uninsdeleteentry 標記,刪除該 項,而後纔是 uninsdeletesectionifempty 標記。
若是安裝程序在用戶的系統中檢測到一個 Windows 共享版本,Windows 系統目錄是寫保護的,{sys} 目錄常量將會被轉變爲用戶的 Windows 目錄替代系統目錄。
在命令行執行編譯器
腳本文件也能夠在命令行被安裝編譯器編譯。命令行的使用方法以下:
compiler /cc <腳本文件>
示例:
compil16 /cc c:/isetup/sample16/sample16.iss
compil32 /cc 「c:/isetup/sample32/my script.iss」
在上面列出的例子中,帶有空格的文件名必須用引號括起來。
在命令行運行安裝編譯器不支持正常的進程顯示或任何錯誤消息。若是編譯成功安裝編譯器將會返回一個退出代碼 0,若是是 1 則表示有無效的命令行參數, 2 則代表編譯失敗。
安裝命令行參數 安裝程序自己接受三個不一樣的可選的命令行參數,這些參數能被用於系統管理員和其餘程序調用安裝程序。
/SP-
在安裝程序開始時禁止「即將安裝 … ,繼續嗎?」的提示,固然,它將使 [Setup] 段的 DisableStartupPrompt 關鍵字設置爲 yes 無效
/DIR=」x:/dirname」
替換在「選擇目標文件夾」嚮導頁顯示的默認的目錄名,必須要指定一個全程路徑名。若是 [Setup] 段的 DisableDirPage 關鍵字被設置爲 yes, 那麼該命令行參數將被忽略。
/GROUP=」group name」
替換在「選擇程序組」嚮導頁顯示的默認的程序組名,若是 [Setup] 段的 DisableProgramGroupPage 關鍵字被設置爲 yes, 那麼該命令行參數將被忽略。