簡介
"Windows 95/NT 4+"這是 Windows 95, 98, NT 4.0, 2000 以及更高版本的簡稱。
"Windows 98/NT 4+"
這是 Windows 98, NT 4.0, 2000 以及更高版本的簡稱。
"Windows NT"
無論何時提及 Windows NT,除非有其他說明,他總是包括 Windows 2000(亦即 NT 5.0)。
一些常量
多數的腳本項都可以在它們的內部嵌入“常量(constants)”,它們總是被一對大括弧({ })擴起來的。當安裝程式被啟動的時候,這些常量將被轉換成其真實的值,這依賴於用戶的選擇和系統配置,例如, 這個常量在絕大多數的系統當中將被轉換成“C:\WINDOWS”。字元“{”被視為一個常量的起始標記,如果你想獲得的是它的真實字元,那么你必須使用兩個連續的“{”字元。
如果一個常量的後面緊跟著一個反斜槓,而此時這個常量被轉換成其真實值的結尾也是一個反斜槓時,Inno Setup 會自動的刪除一個反斜槓,這樣處理的明顯的好處是如果這個常量指向了“C:\”,{常量名}\file 就會被正確的轉換成“C:\file”而不是“C:\\file”。然而如果你想要防止這種事情的發生,那么就要將反斜槓用大括弧括起來,象這樣:{\}.
下面所列出的是目前已經被支持的常量。
目錄常量
應用程式目錄,這是用戶在安裝精靈的選擇安裝目錄頁裡面所選擇的。例如:如果你使用了 \MYPROG.EXE 作為一項並且用戶選擇了“C:\MYPROG”作為應用程式的目錄,那么安裝程式就會將它轉換成“C:\MYPROG\MYPROG.EXE”。
系統的 Windows 目錄。 例如:如果你使用了 \MYPROG.INI 作為一項並且系統的 Windows 目錄是“C:\WINDOWS”,那么安裝程式就會將它轉換成“C:\WINDOWS\MYPROG.INI”。
系統的 Windows 系統(System)目錄(在 Windows NT/2000 下是 System32)。 例如:如果你使用了 \ctl3d32.dll 作為一項並且系統的 Windows 系統目錄是“C:\WINDOWS\SYSTEM”,那么安裝程式就會將它轉換成“C:\WINDOWS\SYSTEM\CTL3D32.DLL”。
這個資料夾指向安裝程式所在的位置。
例如:如果你使用了 \MYPROG.EXE 作為一項並且用戶是從“S:\ ”安裝的,那么安裝程式就會將它轉換成“S:\MYPROG.EXE”。
系統驅動器,它是指 Windows 被安裝到的那個驅動器,典型的是“C:”,對於 Windows NT/2000,這個常量同系統的環境變數“SystemDrive”是等效的。
程式資料夾(Program Files),這個路徑是系統的 Program Files 目錄,典型的是“C:\Program Files”。
公共資料夾(Common Files),這個路徑是系統的 Common Files 資料夾,典型的是“C:\Program Files\Common Files”。
臨時目錄,這個目錄並不是用戶的 TEMP 環境變數指向的目錄,而是安裝程式在啟動時在用戶的臨時目錄下建立的一個子目錄(它有一個類似於“
C:\WINDOWS\TEMP\IS-xxxxx.tmp”這樣的名字),在安裝程式退出時所有的檔案和子目錄將會被刪除。對於在 [Run] 段裡面要被執行且在安裝以後又不需要的程式檔案來說這個功能是非常有用的。
字型目錄,在 Windows 95/NT 4+ 下有一個專門為字型設立的目錄(通常這個目錄在 Windows 目錄下且被命名為“FONTS”),這個常量就指向這個目錄。對於 Windows NT 3.51,這個常量是和 等效的,因為當時還沒有字型目錄。
DAO 目錄,當安裝程式運行在 Windows 95/NT 4+ 上時,它被等效為 \Microsoft Shared\DAO,當運行於 Windows NT 3.51 時,它被等效為 \MSAPPS\DAO.
外殼(Shell)資料夾常量
Inno Setup 還支持另外一套目錄常量,這就是涉及到的外殼(shell)資料夾常量,它們具有和其它的目錄常量相同的使用方法。然而,如果在腳本的 [Setup] 段裡面放入了 MinVersion=4,3.51 這一行來表示允許支持 NT 3.51,那么將只有 這個外殼資料夾常量能被使用,並簽只能用在 [Icons] 段。下面的包含了“user”的常量涉及到當前登入的用戶私人文檔(profile),而帶有“common”的常量會涉及到全部用戶(All Users)的私人文檔(profile)。當安裝程式運行在 Windows NT/2000 作業系統下並且用戶不具有管理員的許可權時,所有的帶有“common”的常量會強迫同帶有“user”的常量等效。
* 標記表示帶有“common”的常量在 Windows 9x 作業系統下同帶有“user”的常量等效。
程式組的路徑,取決於用戶在安裝程式嚮導的“選擇程式組”頁的選擇。對於 Windows NT,這個資料夾始終被建立在所有用戶的私人文檔(All Users profile),除非用戶正在安裝的這個應用程式不具有管理員的許可權,那么在這種情況下它將被建立在用戶的私人文檔中(profile).
當前用戶的“傳送”的路徑。(沒有公共的“傳送”資料夾。)
&
應用程式數據(Application Data)資料夾的路徑。
& *
桌面資料夾的路徑,推薦桌面捷徑使用 .
&
“我的文檔”資料夾的路徑(或者對於 NT 4.0,是指私人資料夾).
&
“收藏夾”的路徑,這個常量的使用方法是需要 MinVersion 的設定至少為“4.1, 4”,目前只有 Windows 2000 支持 ,如果使用的是在這之前的版本的 Windows,那么它將會被轉換成和 相同的目錄。
& *
在開始選單裡面的程式資料夾的路徑。
& *
開始選單的定級路徑。
& *
開始選單裡面的啟動資料夾的路徑。
&
模板(Templates)資料夾的路徑,目前只有 Windows 2000 支持 ,如果使用的是在這之前的版本的 Windows ,它將會被轉換成和 相同的目錄。
其他的常量
{\}一個反斜槓字元,請參見本頁前面提到的關於常量 {\} 和單字元 \ 在使用上有何不同的說明。
{%NAME}
內嵌一個環境變數,這個 NAME 是要使用的環境變數的名字。如果在用戶的系統當中指定的環境變數不存在,這個常量就會被一個空的字元串所替代。
安裝程式正在運行的計算機的名稱(就是“GetComputerName”函式的返回值)。
用戶在安裝程式嚮導的選擇程式組頁選擇的程式組的名稱,這個是不同於 的,它不包括路徑。
(專門用途)傳送安裝程式背景視窗的視窗句柄。
{reg:HKxx\SubkeyName,ValueName|DefaultValue}
內嵌一個註冊表值。
HKxx 指定根鍵(root key),參見 [Registry] 段 文檔所列出的根鍵。
SubkeyName 指定要讀取的子鍵的名稱。
ValueName 指定要讀取的值的名稱,要讀取一個鍵的默認值就讓 ValueName 為空。
DefaultValue 如果指定的註冊表值不存在或者它不是一個字元串類型(REG_SZ 或者 REG_EXPAND_SZ),則嵌入這個值。
如果你希望包括一個逗號,豎線(字元“|”)或大括弧閉弧“}”在常量裡面,你必須通過“%-編碼” 形式用“%”後緊跟一個兩位的16進制代碼轉譯後替換原來的字元,一個逗號是“%2c”,一個豎線符是“%7c”,一個大括弧閉弧是“%7d”。
DefaultValue 可以包括常量,然而,如上所訴內嵌的常量的大括弧的閉弧
(“}”) 必須被改成“%7d”才可以。
MinVersion
說明
該項處理所需的分別最低的 Windows 版本和 Windows NT 版本. 如果將某個版本號指定為 0 那么在該平台上就再也不會處理這項了,版本創建編號(Build numbers)和(或)服務包級別(Service pack levels)也可以被包括在版本號當中。這個參數將會覆蓋位於 [Setup] 段當中的 MinVersion 關鍵字。示例
MinVersion: 4.0,4.0OnlyBelowVersion
說明
基本上是和 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: "\MYPROG.INI"; Section: "InstallSettings"; Flags: uninsdeletesectionifempty
Filename: "\MYPROG.INI"; Section: "InstallSettings"; Key: "InstallPath"; String: ""; Flags: uninsdeleteentry
安裝程式首先記錄下第一項的數據 uninsdeletesectionifempty 標記到卸載記錄中。創建第二項的鍵,然後記錄下 uninsdeleteentry 標記的數據到卸載記錄中,當程式被卸載時,卸載程式將首先處理 uninsdeleteentry 標記,刪除該項,然後才是 uninsdeletesectionifempty 標記。
如果安裝程式在用戶的系統中檢測到一個 Windows 共享版本,Windows 系統目錄是防寫的, 目錄常量將會被轉變為用戶的 Windows 目錄替代系統目錄。
在命令行執行編譯器
腳本檔案也可以在命令行被安裝編譯器編譯。命令行的使用方法如下:compiler /cc <腳本檔案>
示例
compil16 /cc c:\isetup\sample16\sample16.isscompil32 /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, 那么該命令行參數將被忽略。
安裝腳本段
安裝腳本段
[Setup] 段
[Dirs] 段
[Files] 段
[Icons] 段
[INI] 段
[InstallDelete] 段
[Messages] 段
[Registry] 段
[Run] 段
[UninstallDelete] 段
[UninstallRun] 段
其它問題:
其它注意事項
在命令行執行編譯器
安裝命令行參數
[Setup] 段這個段包括了安裝和卸載程式所使用的全局設定,並且有些關鍵字在你建立的安裝程式中是必須要用到的。這個是 [Setup] 段的一個示例:
[Setup]
AppName=My Program
AppVerName=My Program version 1.4
DefaultDirName=\My Program
DefaultGroupName=My Program
[Dirs] 段
這個段是可選的,而且通常對於大多數簡單的應用程式來書不是必需的。這個段是用來創建除用戶選擇的應用程式目錄以外的其它的附加的目錄,它是被自動創建的。這個段所創建的子目錄是可以脫離主應用程式而共同使用的目錄。當然在 [Files] 段裡面的檔案被複製到某個目錄之前你並不一定要創建它,然而在卸載程式的時候在 [Dirs] 和 [UninstallDelete] 段裡面沒有指定的目錄就不會被刪除。
這是一個 [Dirs] 段的示例:
[Dirs]
Name: "\data"
Name: "\bin"
上面的示例演示了在安裝程式的應用程式目錄被創建之後,在應用程式的下面建立兩個子目錄。
下面列出了支持的參數:
Name (必需的)
說明:要被建立的目錄的名稱,通常它以一個目錄常數開始。
示例:
Name: "\MyDir"
Flags
說明
“標記”,這個參數是一個附加的選項集合,可以多個選項共同使用,使用空格分開多個選項。下面列出了被支持的選項:
deleteafterinstall
告訴安裝程式象平常一樣建立目錄,但是當安裝程式結束(或被中止)之後這個目錄是空的情況下將這個目錄刪除。如果釋放腳本的 [Run] 段所執行的程式所需要的臨時的數據時這個選項是很有用的。
uninsalwaysuninstall
告訴卸載程式試圖刪除這個目錄而不管它是不是空的。通常卸載程式只會嘗試刪除在安裝之前不存在的目錄。
uninsneveruninstall
告訴卸載程式不要去刪除這個目錄。在默認情況下,在 [Dirs] 段裡面指定的目錄如果是空的卸載程式就會嘗試將其刪除。
示例:
Flags: uninsneveruninstall
公共參數
[Files] 段這個段是可選的,但對於大多數安裝程式來說是必不可少的。在這裡定義了安裝程式需要複製到用戶的系統當中的全部檔案。
在安裝期間,卸載程式和數據被自動的複製到應用程式的目錄當中去,因此你不必手工的將它們添加到 [Files] 段。
這是一個 [Files] 段的示例:
[Files]
Source: "CTL3DV2.DLL"; DestDir: ""; CopyMode: onlyifdoesntexist; Flags: uninsneveruninstallSource: "MYPROG.EXE"; DestDir: ""
Source: "MYPROG.HLP"; DestDir: ""
Source: "README.TXT"; DestDir: ""; Flags: isreadme
下面列出了支持的參數:
Source (必需的)
說明
“源檔案”的名稱,如果沒有提供全程路徑時編譯器會根據安裝程式的源目錄的路徑預先設定號路徑。允許通配符,根據通配符可以在一項裡面簡單的指定一組檔案。當使用了通配符的時候,所有匹配的檔案使用相同的可選項。
當標記(flag) external 被指定的時候,Source 必須是一個在發布介質或用戶的系統中已經存在的檔案(或帶有通配符)的全程路徑。(例如“\license.ini”).
示例:
Source: "MYPROG.EXE"
DestDir (必需的)
說明這個是檔案將要被安裝到用戶的系統當中去的目錄。它幾乎總是以一個目錄常量開始的。如果指定的路徑不存在於用戶的系統中,它將會被自動的創建。
示例:
DestDir: ""
DestName
說明
這個常數為將要安裝到用戶的系統中的檔案指定一個新的名字。在默認的情況下,安裝程式使用的是同 Source 參數一樣的檔案名稱,因此在多數情況下不需要指定該參數。
示例:
DestName: "MYPROG2.EXE"
CopyMode
默認:
normal
說明:
“複製模式”,指定檔案複製的規則,必須是下列規則之一。
normal
這是最常使用的選項。如果檔案已經存在於用戶的系統當中並且比要複製的檔案的版本更新時(由檔案的版本信息決定),安裝程式將會向用戶提出詢問是否要替換掉已經存在的檔案。如果已經存在的檔案不包含檔案的版本信息,它將會被覆蓋而不會向用戶詢問。參見這個標題下面的注意中關於版本檢查的重要說明。
onlyifdoesntexist
只有當用戶的系統中的檔案不存在時才複製檔案。
alwaysoverwrite
總是覆蓋已經存在的檔案,甚至如果已經存在的檔案比被安裝的檔案的版本更新的情況下也是如此。對於共享的系統檔案永遠也不要這樣做!
alwaysskipifsameorolder
類似於 normal, 不同之處是如果遇到已經存在的檔案不會向用戶提出詢問。當這個模式被使用時,更新的一經存在的檔案時從來不會被替換的。
示例:
CopyMode: normalAttribs
說明:
為檔案指定附加的“屬性”,它可以包括一個或多個屬性,它們是:readonly, hidden, system. 如果沒有指定這個參數,安裝程式不會給檔案指派任何特殊的屬性。示例:
Attribs: hidden system
FontInstall
說明:
告訴安裝程式需要被安裝的檔案是一個字型檔,該值是被保存到註冊表或 WIN.INI 檔案中的字型名稱,這個名稱必須嚴格地和在資源管理器中雙擊字型檔看到的名稱相對應。注意,安裝程式會自動的在字型名稱的末尾加上“(TrueType)”。
如果這個字型檔不是一個 TrueType 字型,你必須在 Flags 參數中指定 fontisnttruetype 標記。
建議在安裝字型到 目錄的時候使用複製模式參數 onlyifdoesntexist 和標記(flag)參數 uninsneveruninstall.
示例:
Source: "OZHANDIN.TTF"; DestDir: ""; FontInstall: "Oz Handicraft BT"; CopyMode: onlyifdoesntexist; Flags: uninsneveruninstallFlags
說明:
“標記”,這個參數是一個附加的選項集合,可以多個選項共同使用,使用空格分開多個選項。下面列出了被支持的選項:comparetimestampalso
(專門用途) 如果要被複製到用戶系統的檔案已經存在於用戶的系統當中並且它們具有相同的版本信息,告訴安裝程式進行時間戳(檔案的日期時間屬性)的比較。 在正常情況下安裝程式不會覆蓋已經存在的檔案,但是當使用了這個標記的時候, 如果已存在的檔案的時間戳比它的版本信息還要舊,安裝程式在安裝檔案時就會覆蓋它。當複製模式不是 normal 或 alwaysskipifsameorolder 這兩者之一時該標記不起作用。
confirmoverwrite
當檔案已經存在每個檔案在複製之前始終向用戶提出詢問。
deleteafterinstall
告訴安裝程式象平常一樣複製檔案,但是當安裝程式結束(或被中止)之後將這個檔案刪除。如果釋放腳本的 [Run] 段所執行的程式所需要的臨時的數據時這個選項是很有用的。
此標記不能和下列標記在一起組合使用: isreadme, regserver, regtypelib, restartreplace, sharedfile, uninsneveruninstall.
external
此標記告訴 Inno Setup 不要將由 Source 參數指定的檔案編譯進安裝程式檔案中,在複製檔案的時候由發布介質或用戶的系統中已經存在檔案代替。要獲得更多詳細的信息請參見 Source 參數的說明。
fontisnttruetype
如果 FontInstall 參數指定的是一個 非 TrueType 字型則使用此標記。
isreadme
該檔案是“自述(README)”檔案,安裝程式中只有一個檔案能夠使用此參數。當有一個檔案使用了這個參數時,用戶將被詢問是否願意在安裝程式結束時查看自述檔案,如果選擇了是,安裝程式將會根據檔案的類型用默認的程式打開這個檔案,基於這個原因,自述檔案應該具有象 .txt, .wri 或 .doc. 這樣的擴展名。
注意如果安裝程式要重新啟動用戶的計算機(比如安裝了一個帶有 restartreplace 參數的檔案或在 [Setup] 段中的 AlwaysRestart
關鍵字的值為 yes),安裝程式就不會向用戶詢問是否要查看自述檔案。
overwritereadonly
始終覆蓋一個唯讀 (read-only) 檔案,如果沒有這個參數,當一個已存在的唯讀檔案要被覆蓋時安裝程式將會詢問用戶。
regserver
註冊 OLE 伺服器 (或稱作 ActiveX 控制項)。如果設定了此標記,安裝程式將查找並執行 DLL/OCX 的 DllRegisterServer 輸出,卸載程式調用 DllUnregisterServer. 當結合 sharedfile 標記一起使用,只有參照技術器的值歸零時 DLL/OCX 才可能百取消登記 (unregistered).要獲得更多的詳細信息請參見此標題最後的 注意。
regtypelib
註冊類型庫 (.tlb). 卸載程式將會取消註冊類型庫 (除非指定了 uninsneveruninstall 標記). 就像 regserver 標記那樣,如果結合 sharedfile 標記一起使用,這個檔案只有參照計數器的值歸零時才可能被卸載。
要獲得更多的詳細信息請參見此標題最後的 注意。
restartreplace
此標記通常用於替換系統核心檔案。如果檔案已經預先存在並發現它已經被鎖定結果導致安裝程式無法替換該檔案,安裝程式就會註冊此檔案(對於 Windows 和 Windows NT 分別使用 Wininit.ini 和函式 MoveFileEx)在下次啟動系統時被替換。當遇到這種情況,在安裝過程結束時用戶將被提示重新啟動計算機。
要保持 Windows95/98 和 3.1 的兼容性,使用了此標記的項不應該使用長檔案名稱,只能支持“8.3”格式的檔案名稱。(Windows NT 和 2000 則沒有此限制。)
重要提示:在 Windows NT/2000 下只有當用戶具有管理員許可權時使用 restartreplace 標記才可以成功的替換使用中的檔案。如果用戶沒有管理員許可權,將會顯示如下的信息:“RestartReplace failed: MoveFileEx failed; code 5.”,因此,當使用 restartreplace 標記時強烈建議讓你的安裝程式需要管理員許可權,在 [Setup] 段裡面設定 "AdminPrivilegesRequired=1"。
sharedfile
(僅 Windows 95/NT 4+) 使用 Windows 的已分享檔案計數功能 (位於註冊表的 HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\SharedDLLs). 這樣會使應用程式之間能夠共享一個檔案,不用擔心在不注意的情況下會刪除檔案。在每次安裝已分享檔案的時候,與這個檔案相對應的“參照計數器”的值就會加一,而每次應用程式被卸載的時候,參照計數器的值就會減一,如果參照計數器的值歸零的時候,該已分享檔案就會被刪除(在用戶確認的情況下)。
絕大多數被安裝到 Windows 系統目錄下的檔案都應當使用這個標記,包括 .OCX 和 .DPL (Delphi 3 package) 檔案。不使用這個標記的僅有的一個例外是 MFC DLLs. 作為替代,應該在複製模式中使用 onlyifdoesntexist ,並結合 uninsneveruninstall 標記,或者是如果安裝單獨發布的 MFC DLL 的最近的版本,則使用複製模式 alwaysskipifsameorolder ,並結合使用標記 uninsneveruninstall 和 restartreplace.
當安裝程式被運行在一個 NT 3.51 系統時,被安裝的帶有此標記的檔案就再也不會被刪除了。
skipifsourcedoesntexist
只有當 external 標記也使用了的時候這個標記才會有用。它會告訴安裝程式如果源檔案不存在的話則無任何提示的(靜靜的)跳過該項,如果沒有使用這個標記則會顯示一個錯誤訊息。
uninsneveruninstall
從來不會卸載這個檔案。此標記應當被保守地使用,而且通常它是和複製模式 onlyifdoesntexist 在一起結合使用。意思是用於安裝一個特別公共的已分享檔案,就像 CTL3DV2.DLL 或者一個 MFC DLL, 你不應該用卸載程式去刪除這個檔案的原因是以後其它的應用程式也要使用到它。
示例:
Flags: isreadme
公共參數
注意
如果安裝程式正在安裝一個已經存在於用戶的系統當中的 16 位的 DLL 或者 EXE 檔案,兩個檔案的版本信息是不會相比較的,已存在的檔案將始終被覆蓋(除非當複製模式的參數是 onlyifdoesntexist),這是由一個 Windows 的限制決定的,32 位的程式就像 Inno Setup 只能讀取 32 位執行檔的版本信息。
在安裝程式的最後一步安裝程式會註冊所有的帶有 regserver 或 regtypelib 標記的檔案。然而,如果 [Setup] 段關鍵字 AlwaysRestart 的值是 yes, 或如果有檔案帶有 restartreplace 標記,全部的檔案將會在下次啟動的時候註冊(在 Windows 註冊表的 RunOnce 創建一項)。
當帶有 .HLP 擴展名(Windows 的幫助檔案)的檔案被卸載的時候,其對應的 .GID 和 .FTS 檔案同樣會被自動刪除。
[Icons] 段
這個段是可選的,但對於大多數安裝程式來說是必不可少的。它定義了所有的安裝程式要在用戶系統中創建的程式管理器/開始選單的圖示。它也能被用來在其它的位置創建應用程式圖示(捷徑),比如就像桌面。
卸載圖示是由安裝程式內部創建的,這樣一來你就不需要在 [Icons] 段裡面手工的添加它。默認情況下,安裝程式運行在 Windows 95/NT 4+ 的時候是不創建卸載圖示的 ――除了安裝程式運行於 Windows NT 3.51 的時候。 要強制創建一個卸載圖示,請使用 [Setup] 段裡面的 AlwaysCreateUninstallIcon 關鍵字。
這是 [Icons] 段的一個示例:
[Icons]
Name: "\My Program"; Filename: "\MYPROG.EXE"; WorkingDir: ""
下面列出了支持的參數:
Name (必需的)
說明:
要創建的應用程式圖示的名稱和位置。此參數可以使用任何任何“外殼資料夾常量”和“目錄常量”。
注意: 記住 Windows 95/NT 4+ 的應用程式圖示是作為檔案直接存儲的,這樣一來普通檔案所不允許使用的字元都不能用來作為應用程式圖示的名稱。
示例:
Name: "\My Program"
Name: "\Subfolder\My Program"
Name: "\My Program"
Name: "\My Program"
Filename (必需的)
說明:
應用程式圖示的命令行檔案名稱,它通常以一個目錄常量開始。
示例:
Filename: "\MYPROG.EXE"
Parameters
說明:
應用程式圖示的可選的命令行參數,可以包括常量,在 Windows 95/NT 4+ 下運行時才可以包括引號。
示例:
Parameters: "/play filename.mid"
WorkingDir
說明:
應用程式圖示的工作目錄,應用程式啟動的那個目錄,如果沒有指定該參數或該參數是空的,Windows 將使用一個默認的路徑,它隨著 Windows 的版本的不同而改變。這個參數可以包括常量。
示例:
WorkingDir: ""
Comment
說明:
指定捷徑的“注釋”(或“描述”)欄的內容,它決定了在 Windows 2000 下的彈出信息,早期的 Windows 版本忽略這個注釋。
示例:
Comment: "This is my program"
IconFilename
說明:
要被顯示的一個自定義的應用程式圖示(位於用戶的系統中)的檔案名稱。它可以是一個包含圖示的執行檔映像 (.exe, .dll) 或一個 .ico 檔案。如果沒有指定該參數或該參速是空的,Windows 將會使用檔案的默認圖示。這個參數可以包括常量。
示例:
IconFilename: "\myicon.ico"
IconIndex
默認:
0
說明:
由 IconFilename 指定的檔案的以零開始的圖示索引。
示例:
IconIndex: 0
Flags
說明:
“標記”,這個參數是一個附加的選項集合,可以多個選項共同使用,使用空格分開多個選項。下面列出了被支持的選項:
closeonexit
當設定了此標記時,安裝程式將設定捷徑的“退出時關閉”屬性。這個標記僅對基於 MS-DOS 的應用程式有效 (具體說就是是否具有 .pif 擴展名)。如果這個標記和 dontcloseonexit 標記都沒有指定,安裝程式就不會去改變“退出時關閉”的屬性。
createonlyiffileexists
當設定了此標記時,安裝程式只創建已存在的由 Filename 參數指定的檔案的應用程式圖示。
dontcloseonexit
類似於 closeonexit, 只是會導致安裝程式不選定“退出時關閉”屬性。
runmaximized
當設定了此標記時,安裝程式將應用程式圖示的“運行方式”設定為“最大化”,這樣當程式被啟動時以最大化的模式初始化。當安裝在 Windows NT 3.51 上時該標記不起作用。
runminimized
當設定了此標記時,安裝程式將應用程式圖示的“運行方式”設定為“最小化”,這樣當程式被啟動時以最小化的模式初始化。
uninsneveruninstall
告訴卸載程式不要刪除這個應用程式圖示。
useapppaths
當設定了此標記時,在 Filename 參數裡僅指定沒有路徑的檔案名稱,以後安裝程式將會從註冊表的 "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths" 鍵裡面自動得到預先設定好的對應該檔案名稱的路徑名。
示例:
Flags: runminimized
公共參數
[INI] 段此段時可選的,它定義了一些 .INI 檔案項,在檔案被複製以後安裝程式在用戶的系統中的設定。
這是 [INI] 段的一個示例:
[INI]
Filename: "\MYPROG.INI"; Section: "InstallSettings"; Flags: uninsdeletesection
Filename: "\MYPROG.INI"; Section: "InstallSettings"; Key: "InstallPath"; String: ""
下面列出了支持的參數:
Filename (必需的)
說明:
你想要安裝程式修改的 .INI 檔案的檔案名稱,它可以包括常量。如果這個參數時空的,它將寫入系統的 Windows 目錄的 WIN.INI 檔案。
示例:
Filename: "\MYPROG.INI"
Section (必需的)
說明:
要被創建的段的名稱,可以包括常量。
示例:
Section: "Settings"
Key
說明:
要被設定的鍵的名稱,可以包括常量。如果沒有指定這個參數或這個參數是空的就不會創建任何鍵。
示例:
Key: "Version"
String
說明:
賦給鍵的值,可以使用常量。如果沒有指定該參數不會創建該鍵。
示例:
String: "1.0"
Flags
說明:
“標記”,這個參數是一個附加的選項集合,可以多個選項共同使用,使用空格分開多個選項。下面列出了被支持的選項:
createkeyifdoesntexist
只有該鍵不存在是才能給改建賦值。
uninsdeleteentry
程式被卸載時刪除該項,它可以結合 uninsdeletesectionifempty 標記一起使用。
uninsdeletesection
當程式被卸載時,刪除該項所在的整個段。對於由 Windows 本身使用的段(例如一些在 WIN.INI 中的段)來說這明顯不是一個好的主意,你應當將它用到自己的應用程式中的段。
uninsdeletesectionifempty
類似於 uninsdeletesection, 但是只能在該段中沒有了鍵的時候才能刪除。它可以結合 uninsdeleteentry 標記一起使用。
示例:
Flags: uninsdeleteentry
公共參數
[InstallDelete] 段
它使用的是和 [UninstallDelete] 段相同的格式,不同的是它是在安裝程式的第一步被處理的。
[Messages] 段
[Messages] 段是用於定義安裝程式和卸載程式所顯示的訊息。通常你不需要在你的腳本檔案裡面創建 [Messages] 段,默認情況下所有的顯示訊息都由 Inno Setup 包含的檔案 Default.isl 定義。 (或由 [Setup] 段的關鍵字 MessagesFile 指定的任何檔案).
然而,單獨的訊息可以被你的腳本中創建的 [Messages] 段覆蓋。要這么做,首先你需要知道你要改變的訊息的標識 (ID),在搜尋 Default.isl 檔案時能很容易的發現。例如,你想要改變安裝精靈的按鈕 “下一步(&N)” 為 “向前(&F)”,該訊息的標識為“ButtonNext”,那么你應該象這樣創建 [Messages] 段:
[Messages]
ButtonNext=&Forward >
有些訊息帶有象 %1 和 %2 這樣的參數,你可以重新排列參數的順序(例如將 %2 移到 %1 的前面)並且如果需要的話可以重複使用參數(例如“
%1 ... %1 %2”)。在帶有參數的訊息中,使用兩個連續的“%”代替一個嵌入的“%”,“%n”創建一個換行。
如果你希望將 Inno Setup 的文本翻譯成其他語言修改並替換檔案 Default.isl 或在你創建的腳本裡面覆蓋每個訊息,做一個 Default.isl 的副本並另起一個名字就像 MyTranslation.isl. 在你要使用 MyTranslation.isl 的任何安裝程式中,簡單的將 [Setup] 段中的關鍵字 MessagesFile 指向該檔案。
特殊用途的標識
有幾個 [Messages] 段的項實際上不是用於在螢幕上顯示的,它們是用於在安裝程式中指定所使用的字型和字型號的。這些可選項中的每一個都有一個前導下劃線字元 (“_”) 開始,請參閱 Default.isl 檔案頭部的注釋的使用方法示例。
[Registry] 段
這個段是可選的,他定義了一些註冊表項,用於在複製完檔案之後創建在用戶的系統中。
下面是 [Registry] 段的一個示例。
[Registry]
Root: HKCU; Subkey: "Software\My Company"; Flags: uninsdeletekeyifempty
Root: HKCU; Subkey: "Software\My Company\My Program"; Flags: uninsdeletekey
Root: HKLM; Subkey: "Software\My Company"; Flags: uninsdeletekeyifempty
Root: HKLM; Subkey: "Software\My Company\My Program"; Flags: uninsdeletekey
Root: HKLM; Subkey: "Software\My Company\My Program"; ValueType: string; ValueName: "InstallPath"; ValueData: ""
下面列出了支持的參數:
Root (必需的)
說明:根鍵,必須是下列各項之一:
HKCR (HKEY_CLASSES_ROOT)
HKCU (HKEY_CURRENT_USER)
HKLM (HKEY_LOCAL_MACHINE)
HKU (HKEY_USERS)
HKCC (HKEY_CURRENT_CONFIG)
示例:
Root: HKCU
Subkey (必需的)
說明:
子鍵名稱,可以包括常量。
示例:
Subkey: "Software\My Company\My Program"
ValueType
說明:
鍵值的數據類型,必須是下列各項之一:
none
string
expandsz
multisz
dword
binary
如果指定了 none (默認設定),安裝程式將創建一個沒有鍵值的鍵,在這種情況下將忽略 ValueName 和 ValueData 參數。
如果指定了 string,安裝程式將創建一個字元串 (REG_SZ) 值。
如果指定了 expandsz,安裝程式將創建一個擴展字元串 (REG_EXPAND_SZ) 值。這種數據類型主要用在 Windows NT 上,但是也支持 Windows 95/98.
如果指定了 multisz,安裝程式將創建一個多行文本 (REG_MULTI_SZ) 值。
如果指定了 dword,安裝程式將創建一個整數 (REG_DWORD) 值。
如果指定了 binary,安裝程式將創建一個二進制 (REG_BINARY) 值。
示例:
ValueType: string
ValueName
說明:
要創建的鍵值的名稱,可以包含常量。如果它是空的,將會寫入“默認”(Default)值中。如果ValueType 參數被設定為 none, 該參數將被忽略。
示例:
ValueName: "Version"
ValueData
說明:鍵值的數據。如果 ValueType 參數是 string, expandsz 或 multisz, 該參數是一個可以包含常量的字元串。如果數據類型是 dword, 該參數可以是一個十進制整數(例如“123”)或者是一個十六進制整數(例如“B”)。如果數據類型是 binary, 這是一個十六進制位元組序列的形式:“00 ff 12 34”。如果數據類型是 none, 該參數被忽略。
對於一個 string, expandsz 或者 multisz 類型的鍵值,在這個參數中你可以使用一個特殊的叫做 的常量。 常量代表的是註冊表鍵值原來的數據。如果你想要添加一個字元串到一個已經存在的鍵值時 常量時很有用的,例如,;.如果該鍵值並不存在或者不是一個字元串類型,這時 常量會被默默地刪除。如果正要被創建的鍵值是 multisz 類型,但是已經存在的鍵值並不是多行文本 (例如它是 REG_SZ 或 REG_EXPAND_SZ )類型,這時 常量也會被默默地刪除,反之亦然。
對於一個 multisz 類型的鍵值,在這個參數中你可以使用一個特殊的叫做 的常量來嵌入換行(nulls)。
示例:
ValueData: "1.0"
Flags
說明:
“標記”,這個參數是一個附加的選項集合,可以多個選項共同使用,使用空格分開多個選項。下面列出了被支持的選項:
createvalueifdoesntexist
當指定了此標記時,只有當相同名稱的鍵值不存在時安裝程式才會創建該鍵值。如果數據類型是 none ,或者同時指定了 deletevalue 標記將忽略該標記。
deletekey
當指定了此標記時,如果該項已存在,安裝程式會首先嘗試去刪除它,包括其中的鍵值和子鍵,然後如果 ValueType 不是 none 的話它將創建一個新的鍵和鍵值。
deletevalue
當指定了此標記時,如果該鍵值已存在,安裝程式會首先嘗試刪除該鍵值。然後如果 ValueType 不是 none ,並且該鍵不存在時它將創建該鍵和新的鍵值。
dontcreatekey
當指定了此標記時,如果該鍵不存在於用戶的系統中安裝程式將不會試圖創建該鍵或任何鍵值。如果改建不存在將不顯示錯誤訊息。
典型地該標記同 uninsdeletekey 標記結合使用,以便在安裝時沒有創建該鍵時確保在卸載期間刪除該鍵。
noerror
如果安裝程式在創建鍵或鍵值時無論什麼原因失敗不顯示錯誤訊息。
preservestringtype
該標記只用於 ValueType 參數為 string 或 expandsz 時。當指定了此標記並且該鍵值不存在或者已存在的鍵值不是字元串類型 (REG_SZ 或 REG_EXPAND_SZ) 時,該項將由 ValueType 指定的類型創建,如果該鍵值存在並且是一個字元串類型,該項將由與預先存在的鍵值相同的鍵值類型替代。
uninsclearvalue
當程式被卸載時,將設定該鍵值的數據為空的字元串 (類型 REG_SZ). 該標記不能同 uninsdeletekey 標記一起使用。
uninsdeletekey
當程式被卸載時,刪除整個鍵,包括其下全部的鍵值和子鍵。對於由 Windows 自身使用的鍵來說使用該標記明顯不是一個好的主意,你應當將該標記套用到你自己的應用程式鍵中。
uninsdeletekeyifempty
當程式被卸載時,如果該鍵下沒有其它鍵值和子鍵則將其刪除。該標記可以結合 uninsdeletevalue 標記一起使用。
uninsdeletevalue
當程式卸載時刪除該鍵值,該標記可以結合 uninsdeletekeyifempty 標記一起使用。
注意:對於 Inno Setup 1.1 之前的版本,你可以與 none 數據類型一起使用該標記則將會成為 “delete key if empty” (如為空則刪除該鍵)功能的標記。這個技巧現在已經不在被支持,你必須使用 uninsdeletekeyifempty 標記來實現該功能。
示例:
Flags: uninsdeletevalue
公共參數
[Run] & [UninstallRun] 段
[Run] 段是可選的,指定任意數量的程式在成功安裝程式以後及顯示結束對話框之前被執行。同樣 [UninstallRun] 段也是可選的,指定任意數量的程式在“卸載程式”的第一步時被執行。除非下面有其它說明,兩個段共有相同的語法。
每個程式按照你的腳本編排的順序被執行,當出路 [Run]/[UninstallRun] 的項時,安裝程式將會等到當前的程式終止之後才處理下一個,當然除非使用了 nowait 標記。
這是一個 [Run] 段的示例。
[Run]
Filename: "\INIT.EXE"; Parameters: "/x"
下面列出了支持的參數:
Filename (必需的)
說明:要被執行的程式,或要被打開的檔案/資料夾。如果 Filename 不是一個 .exe 或 .com 檔案,你必須在該項中使用 shellexec 標記。該參數可以包含常量。
示例:
Filename: "\INIT.EXE"
Parameters
說明:
程式可選的命令行參數,該參數可以包含常量。
示例:
Parameters: "/x"
WorkingDir
說明:
程式起始位置的目錄。如果沒有指定該參數或該參數是空的,將不會改變任何特殊的目錄。該參數可以包含常量。
示例:
WorkingDir: ""
RunOnceId
說明:
只在 [UninstallRun] 段裡面有效。如果相同的應用程式被安裝超過了一次,“run”項將會重複出現在卸載記錄檔案裡面。通過將一個字元串賦值給 RunOnceId, 你可以確保一個獨特的 [UninstallRun] 項在卸載期間只被執行一次。例如,如果在卸載記錄中的“run”中有兩個或者更多的帶有 RunOnceId 參數並被設定為“DelService”的項,則只有最後一個帶有一個 RunOnceId 參數並被設定為“DelService”的項會被執行。其餘的將被忽略。注意 RunOnceId 參數是大小寫敏感的。
示例:
RunOnceId: "DelService"
Flags
說明:
“標記”,這個參數是一個附加的選項集合,可以多個選項共同使用,使用空格分開多個選項。下面列出了被支持的選項:
nowait
如果指定了該標記,將不會等待該項處理被結束運行之前就進行到下一個 [Run] 項,或者結束安裝程式。不能結合 waituntilidle
標記一起使用。
shellexec
如果 Filename 不是一個可以直接執行的檔案(一個 .exe 或 .com 檔案)則該標記是必需的。當設定了該標記時,Filename 可以是一個資料夾或者任何已註冊的檔案類型 ―― 包括 .hlp, .doc 等等。檔案將會被用戶系統中的與該檔案類型相關聯的應用程式打開,就像用戶在資源管理器中用滑鼠雙擊該檔案一樣。當在 Filename 中使用一個資料夾名稱時,建議在後面加上一個反斜槓字元(例如“\”),以確保可能有相同名稱的程式不會被執行。同樣要注意資料夾只能在 Windows 95/NT 4+ 上被打開,因為從那時起使用了一個新的資源管理器的外殼。
使用 shellexec 標記有一個缺點,那就是無法等待該過程結束,因此,它始終就像被指定了 nowait 標記一樣操作。
skipifdoesntexist
如果指定了該標記,如果 Filename 不存在安裝程式將不會顯示錯誤訊息。它只適用於 [Run] 段,因為卸載程式從來不顯示錯誤訊息在 [UninstallRun] 項執行失敗時。
runmaximized
如果指定了該標記,將會在一個最大化的視窗啟動程式或文檔。
runminimized
如果指定了該標記,將會在一個最小化的視窗啟動程式或文檔。
waituntilidle
如果指定了該標記,它將暫停直到該過程正在等待用戶的輸入並且沒有未決的輸入時,取而代之的是等待該過程的結束。(該標記調用 WaitForInputIdle Win32 函式.) 不能結核 nowait 一起使用。
示例:
Flags: nowait
公共參數
[UninstallDelete] 段該段是可選的。該段是用來定義一些附加的除了那些被安裝的應用程式之外的要被卸載程式刪除的檔案或目錄。使用該段來刪除由你的應用程式創建的 .INI 檔案是一個常用的辦法。卸載程式在卸載過程的最後一步處理這些項。
這是一個 [UninstallDelete] 段的示例:
[UninstallDelete]
Type: files; Name: "\MYPROG.INI"
下面列出了支持的參數:
Type (必需的)
說明:
指出要被卸載程式刪除的是什麼。必須是下列之一:
files
Name 參數指定的是一個具體的檔案的名稱,或者是一個帶有通配符的檔案名稱。
filesandordirs
功能上類似於 files ,但是它還可以匹配目錄名稱,並且任何名稱匹配的目錄包括其中所有的檔案和子目錄都會被刪除。
dirifempty
當使用它時,Name 參數必須是一個目錄的名稱,但是它不能包括通配符。只有在不包含任何檔案和子目錄的情況下該目錄才能被刪除。示例:
Type: files
Name (必需的)
說明:
要被刪除的檔案或目錄的名稱。
注意:不要試圖通過在這裡使用通配符去刪除 目錄下的全部檔案,我強烈建議你不要這樣做的原因由兩個,首先,用戶通常不會意識到可能還有他們放進應用程式目錄中的數據檔案將要被刪除而不會得到警告(例如他們可能卸載應用程式只是為了要將它轉移到一個不同的驅動器)。最好是將其保留一直到最後用戶想要刪除時用手工的方法刪除;還有,如果由於用戶的失誤碰巧將程式安裝到了一個錯誤的目錄當中(例如 C:\WINDOWS)而這時去卸載它勢必結果會損失慘重。再次聲明,千萬不要這么做!
示例:
Name: "\MYPROG.INI"
公共參數
編譯器相關
[Setup]: Bits
有效值: 32
說明:
1.3 版本以後已廢棄。 1.3 以前的版本的 Inno Setup 有一個 16 位的版本,編譯器將檢查 Bits 關鍵字以判斷是否使用了正確的編譯器來編譯腳本。以後 Inno Setup 的更新的版本只有 32 位的版本可用,你將不再需要設定該關鍵字。無論什麼時候如果 Bits 被設定為“16”,編譯器都將會失敗並提示一個錯誤訊息。
[Setup]: UseSetupLdr
有效值: yes 或 no默認值: yes
說明:
告訴安裝程式編譯器要創建的安裝程式的類型,如果是 yes, 將把所有的安裝程式數據編譯成一個單獨的 SETUP.EXE (如果你願意也可以重新命名為任何名稱)。如果是 no, 將把安裝程式數據編譯成至少三個檔案:SETUP.EXE, SETUP.0 和 SETUP.1. 你想使用 no 的僅有的理由大概是為了調試的目的。
注意:不要在一個使用了多磁碟生成(DiskSpanning=yes)的安裝程式中使用 UseSetupLdr=no,當 UseSetupLdr 是 yes 時,安裝程式被複製到用戶的臨時 (TEMP) 目錄並在那裡運行,這不會發生在 UseSetupLdr 是 no 的情況下,如果 Windows 試圖去在磁碟上尋找 setup.exe 檔案卻不能找到,因為在驅動器中的是一個不同的磁碟,所以會產生錯誤的結果。
[Setup]: BackColor, BackColor2
有效值: 一個值形如 $bbggrr, 這裡的 rr, gg 和 bb 指定了兩位的亮度值(以十六進制表示)分別為紅色,綠色和藍色。或者也可以是下列預定義的顏色名稱之一:clBlack(黑色),clMaroon(暗紅),clGreen(綠色),clOlive(橄欖綠),clNavy(深藍),clPurple(紫色),clTeal(深青),clGray(灰色),clSilver(淺灰),clRed(紅色),clLime(淺綠),clYellow(黃色),clBlue(藍色),clFuchsia(紫紅),clAqua(青綠),clWhite(白色)。默認值: BackColor 為 clBlue,
BackColor2 為 clBlack
說明:
BackColor 關鍵字自定的顏色被用在安裝程式視窗背景漸變色的上面(或左面,如果 BackColorDirection=lefttoright),BackColor2 指定的顏色被用在下面(或右面)。
如果 BackSolid=yes 則 BackColor2 的設定被忽略。
示例:
BackColor=clBlue
BackColor2=clBlack
BackColor=$FF0000
BackColor2=0000
[Setup]: BackColorDirection
有效值: toptobottom 或 lefttoright
默認值: toptobottom
說明:
決定了安裝程式視窗的背景漸變色的漸變方向,如果 BackColorDirection 是 toptobottom, 將自上而下繪出,如果是 lefttoright, 將從左到右繪出。
[Setup]: BackSolid
有效值: yes 或 no默認值: no
說明:
它決定了安裝程式視窗的背景色是使用單一顏色還是漸變色,如果是 yes, 背景色會是一單一顏色(顏色由 BackColor 指定,忽略 BackColor2)。
[Setup]: AppName
說明:
這個必需的關鍵字指定了你正在安裝的應用程式的標題。不要包含版本號,那樣應該使用 AppVerName 關鍵字。AppName 在安裝程式的全部過程始終被顯示,位於安裝程式螢幕的左上角和嚮導中。
示例: AppName=My Program
[Setup]: AppVerName
說明:
這個必需的關鍵字的值應該和 AppName 的值相同(或相似),但是它還應當包含程式的版本號。
示例: AppVerName=My Program version 3.0
[Setup]: AppId
默認值: 如果沒有指定 AppId 或者它是空值,編譯器將會把 AppName 的值作為 AppId 來使用。說明:
AppId 的值是被存儲在卸載記錄檔案 (unins???.dat) 裡面的,以便隨後的安裝程式檢查後決定是否可以被添加到一個特定的已存在的卸載記錄,安裝程式只有在已存在的卸載記錄中的 AppId 和當前的安裝程式的 AppId 相同是才能添加到卸載記錄。舉一個實際的例子,比方說你右兩個安裝程式,一個叫做《我的程式》而另外一個叫做《我的程式 1.1 升級版》,要想把《我的程式 1.1 升級版》添加到《我的程式》的卸載記錄中,你應該設定兩個安裝程式的 AppId 為相同的值。
AppId 還決定了卸載註冊表鍵的實際名稱,被 Inno Setup 在其末尾附加上“_is1”(因此,如果 AppId 是 “MyProgram”,那么這個鍵將會被命名為“MyProgram_is1”)。Inno Setup 的早於 1.3 的版本的鍵的名稱是基於 AppVerName 的值的。
無論什麼時候 AppId 都不會被顯示出來,因此你要求非常隱諱的感覺很輕鬆。
示例: AppId=MyProgram
[Setup]: AppMutex
說明:
如果用戶要為當前的應用程式升級為新的版本,然而當前的應用程式正在運行,該關鍵字就是用來防止這類事情的發生的,而且它也可以防止用戶卸載正在運行的應用程式。它指定了一個或多個同名互斥體的名稱(多個互斥體用逗號隔開),安裝程式和卸載程式將會在啟動時檢查,如果存在,安裝程式/卸載程式將顯示如下的信息:“[安裝程式或卸載程式] 檢測到 [應用程式] 現在正在運行。請立即關閉它的全部實例,然後單機‘確定’繼續,或者‘取消’退出。”
如果你要使用這個關鍵字就必須在你的應用程式中以該關鍵字指定的名稱添加一個同名的互斥體。例如在 Delphi 和 C 中創建如下顯示的同名互斥體,該代碼應該在應用程式啟動是被執行。
Delphi:
CreateMutex(nil, False, ’MyProgramsMutexName’);
C:
CreateMutex(NULL, FALSE, "MyProgramsMutexName");
並不是必需在應用程式被結束之前顯示的銷毀同名互斥體對象,系統會自動完成此功能,也不推薦你這樣做,因為理想狀態下同名互斥體對象必須存在直到進程被完全終止。
注意在 Windows 下同名互斥體是大小寫敏感的。
要想獲得有關同名互斥體的更多信息請參閱 MS SDK 幫助的 CreateMutex 主題。
示例: AppMutex=MyProgramsMutexName