簡述
定義安裝程序安裝文件到系統中的可選文件區段
[Files]區段
-
Source 必需 源文件名稱
-
DestDir 必需的 文件安裝到用戶系統的目錄
-
DestName 指定該文件使用新的文件名安裝到用戶系統中
-
Excludes 指定要排除的格式列表
-
Attribs ; 文件附加屬性 [readonly , hidden, system, notcontentindexed]
-
Permissions: 指定操作ACL(訪問控制權限)的附加權限 [full, modify, readexec]
-
Flags :
-
此參數是一組額外選項。可以通過用空格分隔它們來使用多個選項。支持以下選項:
32bit
當在 Source 和 DestDir 參數使用時,促使 {sys} 常量映射到 32-位系統目錄,regserver 和 regtypelib 標志將文件視為 32-位,以及 sharedfile 標志更新 32-位 SharedDLLs 注冊表鍵。這是在 32-位安裝模式時的默認行為。64bit
當在 Source 和 DestDir 參數使用時,確保 {sys} 常量映射到 64-位系統目錄,regserver 和 regtypelib 標志將文件視 64-位,以及 sharedfile 標志更新 64-位 SharedDLLs 注冊表鍵。這是在 64-位安裝模式時的默認動作。allowunsafefiles
禁止編譯器自動檢查不安全文件。強烈推薦你不要使用該標志,除非你有絕對的把握。comparetimestamp
(不推薦,參見下面)
如果安裝的文件已經在用戶系統中存在,以及至少下列條件中的一個為 true,則告訴安裝程序進行時間戳比較:•現有的文件和安裝的文件都沒有版本信息。
•條目中同時使用了 ignoreversion 標志。
•未使用 replacesameversion 標志,並且現有的文件和要安裝的文件版本號相同(用文件的版本信息決定)。
如果現有的文件的時間戳比安裝的文件老,現有的文件將被替換。否則,將不替換。如果還沒有其它方法,不推薦使用該標志,因為其中有一個內部問題: NTFS 分區在 UTC (不同於 FAT 分區)貯存時間戳,因本地時間戳原因 -- Inno Setup 按默認工作 -- 只要用戶改變他們系統的時間區域,或轉到或使夏令時生效。這可能會導致用戶不希望替換的文件被替換,或用戶希望替換的文件未被替換。
confirmoverwrite
替換現有的文件前總是詢問用戶確認。createallsubdirs
按默認值,當編譯器包含子目錄搜索 Source 文件名/通配符時,將跳過空目錄。該標志會使這些目錄在安裝時被創建(就象在 [Dirs] 區段創建一樣)。必須和 recursesubdirs 組合使用。
deleteafterinstall
告訴安裝程序象平常一樣安裝文件,但一旦安裝完成(或中斷)則刪除。這在提取腳本中的 [Run] 區段指定要執行的臨時程序時有用。該標志不會導致安裝期間未被替換的現有文件被刪除。
該標志不能與 isreadme,regserver,regtypelib,restartreplace,sharedfile,或 uninsneveruninstall 標志組合使用。
dontcopy
在正常的文件復制階段不復制文件到用戶系統,但會靜態編譯到安裝文件中。該標志是有用的,如果要處理該文件是通過 [Code] 區段專門處理和使用提取函數 ExtractTemporaryFile 處理。dontverifychecksum
防止安裝程序在提取后校驗文件。在你想修改的已編譯到安裝程序中的文件使用該標志。必須與 nocompression 組合。
external
該標志告訴 Inno Setup 不要編譯 Source 參數指定的文件到安裝程序文件中,改為從分布的媒介或用戶系統中復制。參見 Source 參數的描述獲取更多信息。fontisnttruetype
如果用 FontInstall 參數的條目安裝一個非 TrueType 字體,則使用該標志。gacinstall
將文件安裝到 .NET Global Assembly Cache 中。當與 sharedfile 結合使用時,在引用總數達到零時文件只能被卸載。若要卸載文件,卸載程序可使用由參數 StrongAssemblyName 指定的強程序集名稱。
如果企圖在無 .NET Framework 存在的系統中使用該標志,則會出現一個異常。
ignoreversion
不比較版本信息;不考慮版本號替換現有的文件。此標志僅應用於應用程序專用的文件,從不共享系統文件。
isreadme
表示文件為“自述”文件。安裝程序中只有一個文件可以使用該標志。當文件使用該標志時,在安裝完成后詢問用戶是否想查看自述文件。如果選擇是,安裝程序將使用與這個文件類型默認的程序打開該文件。因上,自述文件應該總是使用如 .txt、.wri 或 .doc 擴展名。請注意,如果安裝程序重新啟動了用戶的電腦(安裝了一個帶 restartreplace 標志的文件或 [Setup] 區段的 AlwaysRestart 指令設為 yes),用戶將沒有查看自述文件的選項。
nocompression
預防編譯器嘗試壓縮文件。在你知道壓縮沒有什么好處的文件(例如 JPEG 圖像)上使用該標志,可以加速編譯進度,並可以使生成的安裝程序更小。noencryption
防止文件被加密貯存。如果你已經啟用了加密(用 [Setup] 區段指令 Encryption),但想讓它可以在用戶輸入正確的密碼之前用 [Code] 區段支持函數 ExtractTemporaryFile 提取該文件,則使用該標志)。noregerror
當與 regserver 或 regtypelib 標志中的任一一個組合使用時,安裝程序將在注冊失敗時不顯示任何錯誤消息。onlyifdestfileexists
僅在用戶系統中已經存在相同名稱的文件時安裝文件。如果你的安裝程序是已經安裝的軟件的補丁,並且你希望安裝用戶沒有安裝的文件時,該標志可能有用。onlyifdoesntexist
僅在用戶系統中不存在時安裝文件。overwritereadonly
總是覆蓋只讀文件。如果不帶該標志,安裝程序在遇到只讀文件時詢問用戶是否覆蓋。promptifolder
按默認值,當安裝的文件比現有的文件是個較老的版本(或當使用 comparetimestamp 時發現較早的時間戳)安裝程序將不替換現有的文件(參見這個主題下面的備注區段獲取詳細資料)。當使用該標志時,安裝程序將詢問用戶是否替換文件,默認的回答是保留現有的文件 。recursesubdirs
告訴編譯器或安裝程序同時也搜索 Source 目錄下子目錄中的 Source 文件名/通配符。regserver
注冊 OLE 服務(a.k.a. ActiveX 控件)。使用該標志,安裝程序將查找和執行 DLL/OCX 的 DllRegisterServer 輸出。卸載程序調用 DllUnregisterServer。當用於與 sharedfile 結合時,DLL/OCX 只將在涉及的計數為零時取消注冊。在 64-位安裝模式中,文件假定為 64-位映像,並將在 64 位進程內注冊。你可以通過指定 32bit 標志來覆蓋它。
更多信息請參見在該主題下面的備注。
regtypelib
注冊類型庫(.tlb)。卸載程序將撤消類型庫注冊(除非指定了 uninsneveruninstall 標志)。與 regserver 標志一樣,當用於與 sharedfile 結合時,文件只將在涉及的計數為零時取消注冊。在 64-位安裝模式安裝運行於x64版本的Windows時,類型庫將按 64-位處理進行注冊。你可以通過指定 32bit 標志忽略。
不支持在 Windows 的 Itanium 版本的 64-位安裝模式中注冊類型庫。
更多信息請參見在該主題下面的備注。
replacesameversion
當使用該標志,並且文件已經在用戶系統中存在,以及它與要安裝的文件版本號相同,安裝程序將比較文件,如果它們的內部不同,則替換現有的文件。默認動作(例如,當該標志未使用)是不替換版本號相同的已有的文件。
restartreplace
該標志通常用於替換系統核心文件。如果文件預先已經存在,且發現被鎖定,以至於安裝程序不能替換,安裝程序將注冊該文件(用 WININIT.INI 可通過使用 MoveFileEx,分別用於 Windows 和 Windows NT)在下次系統重新啟動時替換。當出現這種情況時,將在安裝完成時提示用戶重新啟動電腦。注意:如果用戶沒有管理權限,則該標志沒有作用。因此,當使用該標志時,推薦你在 admin.的默認設置下權限 PrivilegesRequired [Setup] 區段指令。
setntfscompression
指示安裝程序對文件啟用 NTFS 壓縮(即使它沒有取代文件)。如果它因為任何原因設置壓縮狀態失敗(例如,如果壓縮不被文件系統支持),將不顯示錯誤信息。sharedfile
指定在多個應用程序中共享該文件,如果沒有其他應用程序正在使用該文件,則只需在卸載時刪除該文件。使用該標志的大多數文件被安裝到 Windows 系統目錄,包含 .OCX、.BPL 和 .DPL 文件。使用 Windows 共享文件計數功能(位於注冊表 HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\SharedDLLs)。這個功能是用於讓文件在應用程序之間共享使用,不要不注意將它刪除了。每次安裝該文件,涉及的文件計數將增加,當使用這個文件的應用程序卸載,涉及的文件計數減少。如果計數減少到零,該文件被刪除(會通知用戶確認,除非同時指定了 uninsnosharedfileprompt 標志)。
如果安裝程序被多次運行,則引用文件的次數將超過一次。卸載程序將減少相同次數的引用,所以無論如何沒有引用被遺漏(假如來自它的 append 默認設置 UninstallLogMode [Setup] 區段指令不更改)。
當該標志被使用時,在 DestDir 參數中不指定 {syswow64};而用 {sys} 代替。在32-位安裝模式安裝中,即使 {sys} 和 {syswow64} 映射到相同的基礎目錄,路徑名稱也必須精確匹配正在使用的每個其他現有的安裝程序;否則對文件將創建第二個引用數目,這可能導致文件過早地被刪除。如果你需要在64-位安裝模式安裝中安裝一個共享文件到 32-位系統目錄,可在 DestDir 參數中指定 {sys},並另外包含 32bit 標志。
sign
此標志指示編譯器在存儲它們之前對原始源文件進行數字簽名。如果 [Setup] 區段指令 SignTool 未被設置,則忽略。signonce
此標志指示編譯器在存儲它們之前對原始源文件進行數字簽名,但僅在文件未簽名時才對其進行數字簽名。如果 [Setup] 區段指令 SignTool 未被設置,則忽略。skipifsourcedoesntexist
該標志指示編譯器 -- 或安裝程序,如果 external 標志也被使用 -- 如果源文件不存在,則靜默地跳過該項,而不是顯示一個錯誤消息。solidbreak
當固態壓縮被啟用時,該標志指示編譯器完成當前壓縮流,並在壓縮文件被 Source 匹配前開始一個新的壓縮。這允許安裝程序立即尋求到文件而無需首先解壓縮任何前面的文件。在一個大的、多組件的安裝中,如果你發現太多的時間花費在解壓縮屬於未被選上的組件文件上可以是有用的。sortfilesbyextension
該標志指示編譯器在按路徑名排序前按擴展名進行排序,將所找到的文件進行壓縮。如果也使用固態壓縮,這可能會降低安裝程序的大小。sortfilesbyname
在按路徑名稱排序前,該標志指示編譯器按名稱排序壓縮找到的文件。如果也使用固態壓縮,這有可能減小安裝程序的尺寸。如果 sortfilesbyextension 也被使用,則文件首先按擴展名排序。touch
此標志會導致安裝程序將安裝文件的日期/時間戳設置為由 TouchDate 和 TouchTime [Setup] 區段指令指定的程序。如果與 external 標志結合,此標志沒有任何作用。
uninsnosharedfileprompt
當卸載共享文件時,如果其引用計數為零而不是詢問用戶,則自動刪除文件。若要發揮作用則必須結合 sharedfile 標志。uninsremovereadonly
卸載該文件時,請在嘗試刪除文件之前從文件中移除任何只讀屬性。uninsrestartdelete
當該標志被使用,並且文件在卸載時正在使用時,在系統重新啟動時,卸載程序將隊列文件被刪除,並在卸載過程結束時詢問用戶是否要重新啟動。當卸載外殼擴展之類無法以編程方式停止時,這個標志可以是有用的。注意,需要具有管理權限,此標志才有作用。uninsneveruninstall
永遠不要刪除該文件。此標志在安裝任何情況下都不應刪除很常見的共享文件(如 MFC DLL)時,非常有用。注意,如果該標志結合 sharedfile 標志,則文件將不會在卸載時刪除,但仍然會引用計數適當的遞減。
unsetntfscompression
指示安裝程序禁用 NTFS 壓縮文件(即使它不替換文件)。如果它不能以任何理由(例如,如果由文件系統不支持壓縮)設置壓縮狀態,將不顯示任何錯誤消息。
code
[Files]
Source: default.exe ; DestDir: {app}/default.exe;