【轉貼】安裝資訊檔 (.inf) 定義





purk
2005-06-25, 03:58 AM
基本 .inf 檔包含以下節(更加複雜的 .inf 檔可能有其他的節)。粗體節名是保留的關鍵字。斜體節名是 .inf 作者任意創建的:
• Version 節
• Install 節
• Copy File 節 (CopyFiles)
• Rename Files 節 (RenFiles)
• Delete Files 節 (DelFiles)
• Update .ini File 節 (UpdateInis)
• Update .ini Fields 節 (UpdateIniFields)
• Add Registry 節 (AddReg)
• Delete Registry 節 (DelReg)
• Add Ini File to Registry 節 (Ini2Reg)
• Update Config.sys 節 (UpdateCfgSys)
• Update Autoexec.bat 節 (UpdateAutoBat)
• DestinationDirs 節
• SourceDisksNames 節
• SourceDisksFiles 節
• Strings 節
• Optional Components 節
[Version]
用於確認 .inf 檔的基本版本資訊。
[DefaultInstall]
默認情況下,會執行 Installation 節。包含指向其他節的指標,該節可用於指定要複製和刪除的檔、註冊表的更新、.inf 檔的更新等。
[OtherInstall]
使用與 [DefaultInstall] 節相同的格式,但是必須明確地調用。有助於定義元件卸載方式。
[DestinationDirs]
指定硬碟上複製、刪除或重命名節檔的位置(例如 \Windows 或 Windows\System)。
[FileCopy/Delete/RenameSection(s)] 列出要複製、刪除或重命名的檔。
[RegistryUpdateSection(s)]
[RegistryUpdateSection(s)] 指定在註冊表中添加或刪除的專案。
[IniFileUpdateSection(s)]
[IniFileUpdateSection(s)] 指定 .ini 檔的更新。鏈結將在該節中創建。
[SourceDisksNames]
列出包含檔的磁片。
[SourceDisksFiles]
列出每個檔所在的特定磁片。
[Strings]
列出上面所使用的可本地化字串。
返回到檔開始處
Version 節
[Version]
Signature="$Chicago$"
LayoutFile=filename.inf
定義所有 Windows .inf 檔的標準頭資訊。注意如果簽名不是 $Chicago$,那麼 Windows 不會把 .inf 檔當作 Windows 所識別的任何設備類型的 .inf 檔接受。
注意簽名字串的識別不會區分大小寫。例如,既可以用 $Chicago$,也可以用 $CHICAGO$。
檔案名 .inf
對包含安裝該元件所需佈局資訊(源盤和檔)的 .inf 檔加以命名。該行是可選的。如果在別處沒有此資訊,則必須在此 .inf 檔中提供 SourceDisksNames 和 SourceDisksFiles 節。
下面顯示的是一個典型的 Version 節示例:
[Version]
Signature="$CHICAGO$"
返回到檔開始處
Install 節
[install-section-name]
Copyfiles = file-list-section[,<file-list-section>]...
Renfiles = file-list-section[,file-list-section]...
Delfiles = file-list-section[,file-list-section]...
UpdateInis = update-ini-section[,update-ini-section]...
UpdateIniFields = update-inifields-section[,update-inifields-section]...
AddReg = add-registry-section[,add-registry-section]...
DelReg = del-registry-section[,del-registry-section]...
Ini2Reg = ini-to-registry-section[,ini-to-registry-section]...
UpdateCfgSys = update-config-section
UpdateAutoBat =update-autoexec-section
標識包含元件安裝資訊 .inf 文件中的其他節。
在 Install 節中,以上語法中所顯示的專案類型並不全是必需的。如果已經使用某一專案類型,則必須在 .inf 檔中指定該節的名稱。(CopyFiles 專案是例外,它可以使用檔案名搭配 "@" 字元來複製單個檔,而不用指定節名。節名必須由可列印字元組成。
在任何 Install 節中,只能使用一種類型的專案。一個專案中可以列出多個節名,但是在每個附加名稱前必須有逗號。
install-section-name
右鍵單擊 .inf 檔選擇“安裝”命令時,命名安裝節 [DefaultInstall] 將導致安裝節的執行。這也是選擇 .inf 檔作為使用 Cabpack 嚮導的安裝選項時會執行的節。
下面顯示的是一個典型的 Install 節示例。它包含 Copyfiles 和 AddReg 專案,這兩個專案可以識別包含檔安裝資訊的節。
[MyApplication]
Copyfiles=MyAppWinFiles, MyAppSysFiles, @SRSutil.exe
AddReg=MyAppRegEntries
請注意,在該示例中,通過將 [MyApplication] 節重命名為 [DefaultInstall],右鍵單擊 .inf 檔並選擇“安裝”命令時,將執行 Install 節。
CopyFiles 專案提供了一個特殊符號,允許直接從複製行複製單個檔。可以通過在檔案名前加上 @ 符號作為首碼來複製單個檔。使用該符號複製檔的目標目錄為 DefaultDestDir,該目錄在 DestinationDirs 節中定義。下面顯示的是如何複製單個檔的示例:
CopyFiles=FileSection1,@myfile.txt,@anotherfile.txt,LastSectionName
返回到檔開始處
Copy Files 節 (CopyFiles)
[CopyFiles-section-name]
destination-file-name[, source-file-name][,temporary-file-name][,flag]
[destination-file-name[,source-file-name][, temporary-file-name]][,flag]
列出要從源盤複製到目標目錄的檔案名。在 .inf 檔的其他節中指定源盤和與每個檔相關的目標目錄。file-list-section 名必須出現在 Install 節的 CopyFiles 項目中。
請注意,可以在 Install 節本身的 CopyFiles 專案中指定複製單個檔,而不必生成 CopyFiles 節。為此,請使用特殊字元 "@" 強制複製單個檔。在 Install 節的參考主題中包含在 CopyFiles 類型的專案中使用 "@" 字元的示例。使用這種方法複製單個檔稍微有點限制,因為在這種情況下原始檔案名和目標檔案名必須相同,並且不能使用暫存檔案。
destination-file-name
目標檔案名。如果沒有給出原始檔案名,那麼它也是原始檔案名。
source-file-name
原始檔案名。檔複製操作的原始檔案名不一定要和目標檔案名完全相同。
temporary-file-name
檔複製操作的暫存檔案名。安裝程式使用暫存檔案名複製原始檔案,下一次作業系統啟動時,它將暫存檔案名重命名為目標檔案名。在將檔複製到已打開或 Windows 正在使用的目標檔時,該功能十分有用。
flag
在安裝過程中用於執行特殊操作的可選參數。通過添加標誌值創建組合標誌,可以使用多個標誌。可以使用以下有效標誌:
1 在 CopyFiles 上:用戶企圖跳過檔時,發出警告。
1 在 DelFiles 上:如果檔正在使用,則在 Wininit.ini 中刪除排隊延遲,否則不能刪除當前使用的檔。
2 關鍵安裝程式:不允許用戶跳過檔。
4 忽略版本檢查及始終複製檔。這將會覆蓋較新的檔。
8 強制重命名。安裝程式將該檔作為正在使用的檔進行處理。只有檔已經存在於用戶的電腦上時才會發生這種情況。
16 如果檔已存在於目標電腦上,則不會複製。
32 抑制版本衝突對話方塊,並且不會覆蓋較新的檔。

下麵是複製三個文件的示例:
[CopyTheseFilesSec]
file11 ; 複製 file11
file21, file22, file23 ; 複製 file22,暫時將它重命名為 file23
file31, file32 ; 將 file32 複製為 file31
該示例中使用的所有原始檔案名都必須在 SourceDisksFiles 節中定義,並且在 SourceDisksFiles 節中出現的邏輯盤號必須已經在 SourceDisksNames 節中定義。或者,可以使用 Layout.inf 檔提供該資訊。
返回到檔開始處
Rename Files 節 (RenFiles)
[rename-files-section-name]
new-file-name, old-file-name
.
.
列出要重命名的檔案名。此節名必須出現在 .inf 文件 Install 節 Renfiles 項目中。
new-file-name
新檔案名。
old-file-name
舊檔案名。
下麵的示例將 file42 重命名為 file41、將 file52 重命名為 file51 以及將 file62 重命名為 file61:
[RenameOldFilesSec]
file41, file42
file51, file52
file61, file62
必須在 SourceDisksFiles 節中定義該示例中使用的所有舊檔案名(file42、file52 和 file62),並且必須已經在 SourceDisksNames 節中定義 SourceDisksFiles 節中顯示的邏輯盤號。
返回到檔開始處
Delete Files 節 (DelFiles)
[ file-list-section]
file-name[,,,flag]
.
.
DelFiles 節列出要刪除的檔案名。file-list-section 名必須出現在 Install 節 Delfiles 項目中。
file-name
標識要刪除的檔。
flag
如果安裝過程中正在使用此檔,可選參數用於強制 Windows 刪除此專案中命名的檔。要指示 Windows 將檔刪除操作進行排隊,直到電腦重新啟動,請將 flag 參數的值設置為 1。如果由於正在使用該檔而不能刪除參數設置為 flag=1 的檔,那麼設備安裝完成後系統將重新啟動。
如果不能與 file-name 參數一起使用值為 1 的 flag 參數,而且在執行 DelFiles 節時正在使用該檔,則不能從電腦上刪除此檔。
以下是刪除三個檔的示例:
[DeleteOldFilesSec]
file1
file2
file3
返回到檔開始處
Update .ini File 節 (UpdateInis)
[ update-ini-section-name]
ini-file, ini-section, [old-ini-entry], [new-ini-entry], [flags]
.
.
在給出的 .inf 檔中替換、刪除或添加全部條目。節名 update-ini-section-name 必須出現在 .inf 文件 Install 節的 UpdateInis 項目中。
ini-file
包含要更改條目的 .ini 檔案名。關於指定 .ini 檔案名的詳細資訊,請參閱以下注釋。
ini-section
包含要更改條目的節名。
old-ini-entry
可選。常用形式為 Key=Value。
new-ini-entry
可選。常用形式為 Key=Value。關鍵字或值都可以指定可替代字串。例如,在參數 new-ini-entry 中指定的關鍵字或值可能為 %String1%,替代 %String1% 的字串定義在 .inf 文件 Strings 節中。
flags
可選操作標記。可以是下列值之一:
0 默認。如果在 .inf 檔條目中有 old-ini-entry 關鍵字,則用 new-ini-entry 替換該條目。注意 old-ini-entry 參數關鍵字與 .inf 檔條目必須匹配;每個條目的值都將忽略。
要無條件地將 new-ini-entry 添加到 .ini 檔中,請將 old-ini-entry 設置為 NULL。要無條件地從 .inf 檔中刪除 old-ini-entry,請將 new-ini-entry 設置為 NULL。
1 如果 .inf 檔條目中有 old-ini-entry 的關鍵字和值,則用 new-ini-entry 替換該條目。請注意 old-ini-entry 參數和 .inf 檔條目的關鍵字和值必須匹配才能進行替換。作為對比,使用操作標誌值為 0,只有關鍵字與它匹配才能進行替換。
2 如果在 .inf 檔中不存在 old-ini-entry 參數關鍵字,那麼在 .ini 檔中不執行任何操作。
如果在 .inf 檔條目中存在 old-ini-entry 參數關鍵字以及 .ini 檔條目中存在 new-ini-entry 參數關鍵字,則會刪除與 new-ini-entry 參數關鍵字匹配的 .inf 檔條目,並且按以下方法操作與 old-ini-entry 參數匹配的 .inf 檔條目:用 new-ini-entry 參數關鍵字替換 .inf 檔條目關鍵字。
如果在 .inf 檔中有 old-ini-entry 參數關鍵字,並且在 .ini 檔中沒有 new-ini-entry 參數關鍵字,那麼將條目添加到由 new-ini-entry 參數關鍵字和舊值組成的 .inf 文件中。
請注意 old-ini-entry 參數和 .ini 檔條目是否匹配取決基於關鍵字本身,而不是關鍵字和值。
3 除 old-ini-entry 參數和 .inf 檔中條目是否匹配取決基於關鍵字和值,而不但是關鍵字外,其他方面與上面列出的標誌參數值 2 一樣。
指定關鍵字和值時可以使用星號 (*) 通配符,系統能正確地解釋此符號。
ini-file 名必須是字串或字串關鍵字。字串關鍵字的形式為 %strkey%,其中 strkey 是在 .inf 文件的 Strings 節中定義的。在任何情況下名稱都必須是有效檔案名。
名稱應包括檔所在檔夾的名稱,但是檔夾名應以邏輯目錄識別碼 (LDID) 指定,而不是實際名稱。在安裝期間安裝程式將用實際名稱替換 LDID。
LDID 的形式為 %ldid%,其中 ldid 是預定義識別字或在 DestinationDirs 節中定義的識別字。請注意替換常數 LDID_BOOT 和 LDID_BOOTHOST 時,路徑中應包括反斜線,例如可以用 C:\ 替換 LDID_BOOT。但是在 .inf 檔中可以使用反斜線,也可以不使用。例如,可以使用 "%30%boot.ini" 和 "%30%\boot.ini" 引用啟動盤根目錄下的 BOOT..ini。
下例說明 .inf 文件的 Update .ini File 節中的單個項目:
%11%\sample.ini, Section1,, Value1=2 ; 添加新項目
%11%\sample.ini, Section2, Value3=*, ; 刪除舊項目
%11%\sample.ini, Section4, Value5=1, Value5=4 ; 替換舊專案
.inf 文件“Update .ini File-type”節中的下列項目組與 SYSTEM.ini中的 Boot 節一起進行操作。強制編入 .inf 檔專案的 flags 參數用於將條目“comm.drv=comm.drv”添加到 Boot 節,除非在 Boot 節存在條目“comm.drv=*vcoscomm.drv”或“comm.drv=*r0dmdcom.drv”,在這種情況下將保留現有的條目,且不將條目“comm.drv=comm.drv”添加到 .ini 文件中。換句話說,執行下面顯示的四個 .inf 檔條目後,將有一個“comm.drv="”條目在 .inf 文件的 Boot 節中:“comm.drv=*vcoscomm.drv”、“comm.drv=*r0dmdcom.drv”或“comm.drv=comm.drv.”。
system.ini, boot, "comm.drv=*vcoscomm.drv","~CommDrvTemp~=*", 3
system.ini, boot, "comm.drv=*r0dmdcom.drv","~CommDrvTemp~=*", 3
system.ini, boot,,"comm.drv=comm.drv"
system.ini, boot, "~CommDrvTemp~=*","comm.drv=*", 3
返回到檔開始處
Update .ini Fields 節 (UpdateIniFields)
[update-inifields-section-name]
ini-file, ini-section, profile-name, [old-field], [new-field],[flags]
.
.
在給定 .ini 條目的值中替換、添加和刪除欄位。與 Update .ini File 節類型不同,此節的類型將替換、添加或刪除 .inf 檔條目中的部分值,而不是全部值。update-inifields-section-name(節名)必須出現在 .inf 文件 Install 節的 UpdateIniFields 項目中。

ini-file
包含要更改條目的 .ini 檔案名。關於指定 .ini 檔案名的詳細資訊,請參閱說明 Update .ini File 節類型的主題。
ini-section
包含要更改條目的 .ini 文件節名。
profile-name
要更改條目的名稱。
old-field
要刪除的“欄位”值。
new-field
要添加原來沒有的欄位值。
flags
指定是否處理 old-field 和 new-field 參數,例如是否能有通配符或在 .inf 檔末尾添加新欄位時使用何種分隔符號。可以是以下這些值中的任意值:
值 意義
0 (預設值)欄位匹配時,逐字處理 "*" 字元,而不將它當作通配符。將新欄位添加到條目中時,使用空格 " " 作為分隔符號。
1 欄位匹配時,將 "*"字元當作通配符處理。將新欄位添加到條目中時,使用空格 " " 作為分隔符號。
2 欄位匹配時,逐字處理 "*" 字元,而不將它當作通配符。將新欄位添加到條目中時,使用逗號 "," 作為分隔符號。
3 欄位匹配時,將 "*" 字元當作通配符處理。將新欄位添加到條目中時,使用逗號 "," 作為分隔符號。
刪除 .ini 檔行中的任何注釋,因為在更改後這些欄位可能不再適用。處理 .inf 檔行的欄位時,使用空格、跳位字元和逗號作為欄位分隔符號。但是在新欄位添加到這一行時,將使用空格作為分隔符號。
返回到檔開始處
Add Registry 節 (AddReg)
[ add-registry-section]
reg-root-string, [subkey], [value-name], [flag], [value]
[reg-root-string, [subkey], [value-name], [flag], [value]]
.
.
將子註冊表子鍵或值名添加到註冊表,可以有選擇地設置它的值。add-registry-section 名必須顯示在 Install 節的 AddReg 類項目中。
reg-root-string
註冊表根名。可以是以下值之一:
HKCR 與 HKEY_CLASSES_ROOT 相同
HKCU 與 HKEY_CURRENT_USER 相同
HKLM 與 HKEY_LOCAL_MACHINE 相同
HKU 與 HKEY_USERS 相同
HKR 意味著從主鍵傳給 GenInstallEx 的相對路徑
subkey
是可選的。標識要設置的子鍵。形式為 key1\key2\key3...。該參數可以表示為可替代字串。例如,可以使用 %Subkey1%,在 .inf 文件的 Strings 的節中定義要替換 %Subkey1% 的字串。
value-name
是可選的。標識子鍵的值名。對於字串類型,如果 value-name 參數為空,那麼在 subkey 參數中指定的子鍵值將設置為 NULL 字串。注意 value-name 參數可以表示為可替代字串。例如,可以使用 %Valname1%,在 .inf 文件的 Strings 節定義替換 %Valname1% 的字串。
flag
是可選的。確定值的類型,以及如果註冊表鍵已經存在,是否需要替換註冊表鍵。
值 意義
0 (默認) 值為 ANSI 字串。如果存在,則替換註冊表鍵。
1 值為十六進位數。如果存在,則替換註冊表鍵。
2 值為 ANSI 字串。如果存在,不替換註冊表鍵。
3 值為十六進位數。如果存在,不替換註冊表主鍵。
value
是可選的。可進行設置。它可以是 ANSI 字串、十六進位符號或 Intel 格式的數位。包含二進位值的任何專案都可以用反斜線 (\) 字元進行擴展,使其可以超出每行 128 位元組的最大限制。也可以給出 %strkey% 形式的字串主鍵。必須在 .inf 文件的 Strings 節中定義 strkey。要在該行中使用字元 %,請使用 %%。
至少需要兩個欄位;但是一個可以是空的。因此使用該形式時至少需要一個逗號。
在 AddReg-type 節的以下示例中,有兩個項目將兩個值名添加到註冊表中。注意 %25% 將擴展為電腦的 Windows 檔夾。
[MyAppRegEntries]
HKLM,Software\MyApp,ProgramName,,"My Application"
HKLM,Software\MyApp,"Program Location",,"%25%\MyApp.exe"
返回到檔的開始處
Delete Registry 節 (DelReg)
[ del-registry-section]
reg-root-string, subkey, [value-name]
[reg-root-string, subkey, [value-name]]
.
.
從註冊表中刪除子鍵或值名。del-registry-section 名必須出現在 Install 節的 DelReg 項目中。
reg-root-string
註冊表根名。可以是以下值之一:
HKCR,與 HKEY_CLASSES_ROOT 相同
HKCU,與 HKEY_CURRENT_USER 相同
HKLM,與 HKEY_LOCAL_MACHINE 相同
HKU,與 HKEY_USERS 相同
HKR,意味著從註冊表鍵傳給 GenInstallEx 的相對路徑
subkey
標識要刪除的子鍵。形式為 key1\key2\key3...。可以將該參數表示為可替代字串。例如可以使用 %Subkey1%,在 .inf 文件的 Strings 節中定義要替代 %Subkey1% 的字串。
value-name
是可選的。標識 subkey 的值名。請注意,可以將 value-name 參數表示為可替代字串。例如,可以使用 %Valname1%,在 .inf 文件的 Strings 節中定義要替換 %Valname1% 的字串。
該節的類型可以包含任何數量的項目。每個項目都從註冊表中刪除一個子鍵或值名。
Ini File to Registry 節 (Ini2Reg)
[ ini-to-registry-section]
ini-file, ini-section, [ini-key], reg-root-string, subkey[,flags]

.
將行或節從 .ini 檔移到註冊表中,在註冊表中給定的主鍵下創建或替換註冊表條目。節名 ini-to-registry-section 必須出現在 .inf 文件 Install 節的 Ini2Reg 項目中。
ini-file
包含要複製註冊表鍵的 .ini 檔案名。關於指定 .ini 檔案名的詳細資訊,請參閱關於 Update .ini File 節的參考主題。
ini-section
包含要複製註冊表鍵 .inf 文件中的節名。
ini-key
要複製到註冊表的 .inf 檔中的註冊表鍵名。如果 ini-key 為空,則將整節轉換為指定的註冊表鍵。
reg-root-string
註冊表根名。可以是以下值之一:
HKCR,與 HKEY_CLASSES_ROOT 相同
HKCU,與 HKEY_CURRENT_USER 相同
HKLM,與 HKEY_LOCAL_MACHINE 相同
HKU,與 HKEY_USERS 相同
HKR,意味著從註冊表鍵傳給 GenInstallEx 的相對路徑
subkey
標識要接收該值的子鍵。形式為key1\key2\key3...。
flags
指示轉換為註冊表後是否刪除 .ini 關鍵字,以及如果註冊表主鍵已存在,是否覆蓋註冊表中的值。可以是以下值之一:
值 意義
0 (預設值)將條目中的資訊移到註冊表後不從 .ini 檔中刪除 .ini 條目。如果子鍵已存在,則不替換當前值。
1 將條目中的資訊移到註冊表中後從 .ini 檔中刪除 .ini 條目。如果註冊表子鍵已存在,則不替換當前值。
2 將條目中的資訊移到註冊表中後不從 .ini 檔中刪除 .ini 條目。如果註冊表子鍵已存在,則用 .ini 文件條目的值替換當前值。
3 將條目中的資訊移到註冊表後從 .ini 檔中刪除 .ini 條目。如果註冊表子鍵已存在,則用 .ini 文件條目的值替換當前值。
例如,假設在 Win.ini 檔中存在以下條目:
[Windows]
CursorBlinkRate=15
如果在 Control Panel\Desktop 下不存在 CursorBlinkRate 子鍵,那麼 Ini File to Registry 節中的下列項目將創建子鍵,並把它的值設置為 15,而且不更改 WIN..ini 中原有的行:
win.ini,Windows,CursorBlinkRate,HKCU,"Control Panel\Desktop"
如果註冊表子鍵已存在,則 .inf 檔專案將註冊表子鍵的值設置為 15,並且不更改 WIN..ini 中原有的行。
Update Config.sys 節 (UpdateCfgSys)
[ update-config-section]
Buffers=legal-dos-buffer-value
DelKey=key
DevAddDev=driver-name,configkeyword[,flag][,param-string]
DevDelete=device-driver-name
DevRename=current-dev-name,new-dev-name
Files=legal-dos-files-value
PrefixPath=ldid[,ldid]
RemKey=key
Stacks=dos-stacks-values
提供命令,添加、刪除或重命名 Config.sys 文件中的命令。節名 update-config-section-name 必須出現在 .inf 文件 Install 節的 UpdateConfigSys 項目中。
並不是前面所列語法中的所有專案類型都是必需的。Update Config.sys 節可以根據需要包含 DevRename、DevDelete、DevAddDev、DelKey 和 RemKey,但是在一節中只能使用專案 Buffers、Files 和 Stacks 一次。處理 Update Config.sys 節時,安裝程式將先處理所有的 DevRenames 專案,然後處理所有的 DevDelete 專案,最後處理所有的 DevAddDev 專案。可在 Update Config.sys 節中使用的每種專案的語法和意義將在顯示在後面的主題中。
Buffers 項目
Buffers=legal-dos-buffer-value
設置檔緩衝區的數目。與 Stacks 專案一樣,安裝程式比較現有值與建議值,然後將檔緩衝區設置為兩者中的較大者。
legal-dos-buffers-value
合法的 MS-DOS 緩衝區值。
DelKey 項目
DelKey=key
在 Config.sys 檔中對帶有指定關鍵字的 Config.sys 命令加以注釋。例如,下麵的 .inf 檔專案:
DelKey=Break
在 Config.sys 文件中對 Break=on 命令加以注釋。
DelKey 項目和 RemKey 項目有相同的效果。在 .inf 檔的節中可以有多個 DelKey 或 RemKey 項目。
key
對 Config.sys 命令的關鍵字加以注釋。
DevAddDev 項目
DevAddDev=driver-name,configkeyword[,flag][,param-string]
將 device 或 install 命令添加到 CONFIG.SYS 文件中。
driver-name
要添加驅動器或可執行檔的名稱。安裝程式將核實檔副檔名,確保副檔名是 .sys 或 .exe。
configkeyword
命令名。可以是設備或安裝程式。
flag
可選的位置標誌。如果是 0,將命令放置在檔結尾處,如果是 1,則放在檔開始處。如果沒有給定標誌,則默認為 0。
param-string
可選的命令參數。對給定的設備驅動程式或可執行檔必須有效。
DevDelete 項目
DevDelete=device-driver-name
從 Config.sys 檔中刪除包含指定檔案名的任何行。
device-driver-name
檔案名或設備驅動程式名。安裝程式在 Config.sys 檔中搜索此名稱,並刪除包含該名稱的任何命令行。因為 MS-DOS 不允許在 Config.sys 檔中省略檔副檔名,所以每個 device-driver-name 都必須明確指定檔副檔名。
下例中,Update Config.sys 節的以下 DevDelete 項目將刪除命令的第 1 行和第 3 行,但不刪除 Config.sys 示例文件的第 2 行:
DevDelete=Filename.sys

;; Config.sys 中的行
Device=Filename.sys ;; 第一行
Install=filename.exe ;; 第二行
Device=Filename.sys /d:b800 /I:3 ;; 第三行
DevRename 項目
DevRename=current-dev-name,new-dev-name
重命名 Config.sys 檔中的設備驅動程式。
current-dev-name
要更改的設備驅動程式或可執行檔的名稱。安裝程式將在 Config.sys 文件中查找 device 或 install 命令右邊的名稱。
new-dev-name
驅動程式或可執行檔的新名稱。
Files 項目
Files=legal-dos-files-value
在 Config.sys 檔中設置可打開檔的最大數目。與 Stacks 專案一樣,安裝程式比較現有值和建議值,然後將可打開的最多文件數設置為兩者中的較大者。
legal-dos-files-value
合法的 MS-DOS 文件值。
PrefixPath 項目
PrefixPath=ldid[,ldid]...
將與給定的 LDID 相關的路徑附加到路徑命令之後。
ldid
可以是任何預定義的 LDID 值或在 .inf 檔中定義的新值。對於所有預定義的 LDID 值的定義,請參閱關於 DestinationDirs 節的參考主題。
RemKey 項目
RemKey=key
可在 Config.sys 檔中使用指定關鍵字對 Config.sys 命令加以注釋。例如,下列 .inf 檔專案中:
RemKey=Break

在 Config.sys 文件中對 Break=on 命令加以注釋。 RemKey 項目和 DelKey 項目具有相同的效果。在 .inf 檔的節中可以有多個 RemKey 或 DelKey 項目。
key
要標記的 Config.sys 命令關鍵字。
Stacks 項目
Stacks=dos-stacks-values
在 Config.sys 檔中設置堆疊的數量和大小。安裝程式會比較現有值與建議值,然後把堆疊設置為兩者中的較大者。例如,如果 Config.sys 檔包含 stacks=9,218,並且 .inf 檔包含 stacks=5,256,那麼安裝程式會把新值設置為 stacks=9,256。
legal-dos-stacks-value
合法的 MS-DOS 堆疊值。
返回到檔開始處
Update Autoexec.bat 節 (UpdateAutoBat)
[ update-autoexec-section]
CmdAdd=command-name[,command-parameters]
CmdDelete=command-name
PrefixPath=ldid[,ldid]
RemOldPath=ldid[,ldid]
TmpDir=ldid[,subdir]
UnSet=env-var-name
提供命令,用於處理 Autoexec.bat 文件中的命令行。update-autoexec-section-name(節名)必須出現在 .inf 文件 Install 節的 UpdateAutoBat 項目中。
Update Autoexec.bat 節並不需要上面所列語法中的所有專案類型。該節可以根據需要包含 CmdAdd、CmdDelete 和 UnSet 專案,但是在 .inf 檔中 PrefixPath、RemOldPath 和 TmpDir 專案只能使用一次。每種專案類型的語法和意義將在本主題之後介紹。
安裝程式將在任何 CmdAdd 專案前處理所有的 CmdDelete 專案。
CmdAdd 項目
CmdAdd =command-name[,"command-parameters"]
將給定的命令以及可選命令參數添加到 Autoexec.bat 文件末尾。
command-name
可執行檔的名稱,可以有副檔名,也可以沒有。如果在 .inf 文件的 SourceDisksFiles 和 DestinationDirs 節中也定義了檔案名,那麼安裝程式在把它寫入到 Autoexec.bat 檔之前會將正確的路徑添加到檔案名中。
command-parameters
用雙引號引起來的字串或象 %String1% 或 %Myparam% 的可替代字串,應在 .inf 文件的 Strings 節定義替代 %String1% 和 %Myparam% 的字串。在把這一行附加到 Autoexec.bat 檔末尾之前,安裝程式會將此字串附加到 command-name 末尾。此命令行的格式取決於給定的可執行檔的命令行要求。
CmdDelete 項目
CmdDelete=command-name
從 Autoexec.bat 檔中刪除包括給定命令名的任何命令行。安裝程式將搜索給定名稱中帶 .exe、.com 和 .bat 副檔名的檔,並刪除所找到的檔。
command-name
無副檔名的可執行檔案名。
PrefixPath 項目
PrefixPath=ldid[,ldid]...
將與給定的 LDID 相關的路徑附加到路徑命令中。
ldid
可以是任何預定義的 LDID 值或在 .inf 檔中定義的新值。關於所有預定義 LDID 值的定義,請參閱 DestinationDirs 節的參考主題。
RemOldPath 項目
RemOldPath=ldid[,ldid]
從命令路徑中刪除與給定 LDID 相關的路徑。例如,如果用戶把新版本的 Windows 安裝到 C:\Newwin,並且舊版本的 Windows 在 C:\Windows 中,則 .inf 檔的下列專案會將 C:\Windows 從路徑環境變數中刪除:
RemOldPath=10

ldid
可以是任何預定義 LDID 值和在 .inf 檔中定義的新值。關於所有預定義 LDID 值的定義,請參閱 DestinationDirs 節的參考主題。
TmpDir 項目
TmpDir=ldid[,subdir]
如果不存在,可以在 LDID 給定的檔夾內創建暫存檔案夾。
ldid
可以是任何預定義 LDID 值或在 .inf 檔中定義的新值。關於所有預定義 LDID 值的定義,請參閱 DestinationDirs 節的參考主題。
subdir
路徑名。如果 ldid\subdir 不存在,則創建此檔夾。
UnSet 項目
UnSet=env-var-name
從 Autoexec.bat 檔中刪除包括給定環境變數名的任何 set 命令。
env-var-name
環境變數名。
返回到檔開始處
DestinationDirs 節
[DestinationDirs]
file-list-section =ldid[, subdir ]
.
.
[DefaultDestDir=ldid[, subdir ]]
DestinationDirs 節定義 file-list 節中指定操作(可以是 CopyFiles、RenFiles 或 DelFiles 節)的目標目錄。由於可以為 .inf 文件中的任何 CopyFiles、RenFiles 或 DelFiles 節指定默認目標檔夾,因此不需要在 DestinationDirs 節中明確命名該檔。
file-list-section
CopyFiles、RenFiles 或 DelFiles 節的名稱。必須在Install 節的 Copyfiles、RenFiles 或 DelFiles 專案中引用該名稱。
ldid
邏輯磁片識別字 (LDID) 可以是以下值之一:
00 Null LDID - 可用於創建新的 LDID
01 Source Drive:\pathname
10 Machine 檔夾(在基於伺服器的安裝時,映射 Windows 檔夾)
11 System 文件夾
12 IOSubsys 文件夾
13 Command 文件夾
17 Inffolder
18 Help 文件夾
20 Fonts
21 Viewers
22 VMM32
23 Color 文件夾
24 包含 Windows 檔夾的驅動器根目錄
25 Windows 文件夾
26 Windows 的約定引導設備 (Winboot)
28 Host Winboot
30 啟動盤的根檔夾
31 虛擬啟動盤的主驅動器根檔夾
subdir
LDID 所命名的檔夾中要成為為目標檔夾中的子檔夾名。
可選 DefaultDestDir 專案為任何 CopyFiles 專案提供默認目標目錄,可以使用直接複製 (@file name) 符號或未在 DestinationDirs 節中指定的任何 CopyFiles、RenFiles 或 DelFiles 節。如果在 DestinationDirs 節中沒有使用 DefaultDestDir,則將默認檔夾設置為 LDID_WIN。
下例將 MoveMiniPort 節的目標檔夾設置為 Windows\Iosybsys,並且將其他節的默認檔夾設置為啟動盤的 Bin 檔夾:
[DestinationDirs]
MoveMiniPort=12 ; MoveMiniPort 節的目標檔夾是
; windows\iosubsys
DefaultDestDirs=30,bin ; 直接複製到 boot:\bin
返回到檔開始處
SourceDisksNames 節
[SourceDisksNames]
disk-ordinal="disk-description",disk-label,disk-serial-number
.
.
標識和命名包含檔複製和重命名操作所使用原始檔案的磁片。
disk-ordinal
標識源盤的唯一號碼。如果有多個源盤,則每個源盤都必須有唯一的序號。
disk-description
說明這張磁片的內容或用途的字串或字串關鍵字。安裝程式向用戶顯示該字串以標識磁片。此說明文字用雙引號引起來。
disk-label
格式化源盤時設置的源盤標籤。
disk-serial-number
如果未使用,則值必須為 0。
下例標識一張源盤。根據字串關鍵字給出磁片說明:
[SourceDisksNames]
55 = %ID1%, Instd1, 0
[Strings]
ID1="我的應用程式安裝盤是 1"
返回到檔開始處
SourceDisksFiles 節
[SourceDisksFiles]
file name=disk-number[,subdir] [,file-size]
.
.
color=#000000 命名安裝期間所使用的原始檔案並標識包含這些檔的源盤。
color=#000000 檔案名
color=#000000 源盤上的檔案名。
disk-number
color=#000000 包含檔的源盤序號。必須在 SourceDisksNames 節中定義序號,而且必須是大於或等於 1 的值(0 是無效的盤號參數值)。
subdir
指定檔所在源盤上子檔夾的可選參數。如果沒有使用該參數,則預設值是源盤上的根文件夾。
file-size 可選參數,以位元組為單位指定檔大小。
color=#000000 以下 SourceDisksFiles 節示例標識序列號為 1 的磁片上的單個原始檔案 SRS01.386:
[SourceDisksFiles]
SRS01.386 = 1
返回到檔開始處
Strings 節
[Strings]
strings-key=value
.
.
定義一個或多個字串關鍵字。字串關鍵字是由可列印字串所表示的名稱。儘管 Strings 節通常是 .inf 檔的最後一節,但是該節中所定義的字串關鍵字可能用於 .inf 檔中使用相應字串的任何地方。安裝程式將把字串關鍵字擴展到給定的字串,並將它用於進一步的處理。必須使用百分號 (%) 將字串關鍵字包圍起來。
strings-key
由字元和數位組成的唯一名稱。
value
由字母、數位或其他可列印字元組成的字串。如果在專案類型中使用需要雙引號的相應字串關鍵字,則應該用雙引號將它引起來。
Strings 節使面向國際市場的字串翻譯工作變得非常簡單,您只需在 .inf 檔的單獨一節中使用 .inf 檔時,放置可在用戶介面中顯示的所有字串。無論何時,都應該使用字串關鍵字。
下例顯示 .inf 示例文件的 Strings 節。
[Strings]
String0=“我的應用程式”
String1=“我的應用程式讀我檔案”
String2=“CX2590 SCSI 適配器”
返回到檔開始處
Optional Components 節
[Optional Components]
install-section-name
[install-section-name]


當用戶單擊“控制面板”中的“添加/刪除程式”圖示、單擊“安裝 Windows”選項卡並單擊“從磁片安裝”按鈕時,螢幕上會出現 Install 節列表。在列表中 Install 節會當作核取方塊顯示。
注意,用滑鼠右鍵單擊 .inf 檔並選擇“安裝”命令執行 .inf 文件時,將忽略 Optional Components 節。以這種方式執行 .inf 檔時,將執行 [DefaultInstall] 節。如果通過 Setupx.dll InstallHinfSection 條目點執行 .inf 文件,也將忽略 Optional Components 節。通過 SETUPX 條目執行 .inf 檔時,將執行在條目參數中指定的 Install 節。
Install 節與以前介紹的格式一樣,可以將下面的關鍵字添加到 Install 節以啟動“從磁片安裝”對話方塊中的介面:
OptionDesc=option-description
Tip=tip-description
InstallDefault=0 | 1 ; 是否在默認情況下安裝此元件。1=Yes, 0=No.
IconIndex=icon-index
Parent=install-section-name
Needs=install-section-name, [install-section-name]
Include=inf-file, [inf-file]
option-description
列表框中當作元件名所使用的字串值。option-description 參數可以是 %String1%,在 .inf 文件的 Strings 節中定義要替代 %String1% 的字串。
tip-description
在列表框中選定元件時,在“說明”框中所顯示的字串值。tip-description 參數最多可為 255 個字元,並且可以是 %String1%,在 .inf 文件的 Strings 節中定義要替代 %String1% 的字串。
icon-index
決定顯示在元件名旁邊的小圖示的數值。有效值為:
0 機器(基礎和顯示)
1 積體電路晶片
2 顯示器
3 網線
4 Windows 標誌
5 滑鼠
6 鍵盤(3 鍵)
7 話筒
8 揚聲器
9 硬碟
10 串口連接器
11 菱形框(預設值)
12 核取方塊
13 未選中的核取方塊
14 印表機
15 網卡
16 形如 0 的圖符 17 與 0 形狀相似,下麵帶共用的手形圖符
18 未知(問號)
19 正在工作的圖符
20 顯示為灰色的核取方塊
21 撥號網路
22 直接電纜連接
23 公事包
24 Exchange
25 部分選中
26 附件組
27 多媒體組
28 快速查看
29 MSN
30 計算器
31 磁片碎片整理程式
32 一般文檔
33 磁片整理程式
34 紙牌
35 超級終端
36 物件套裝軟體
37 畫圖
38 螢幕保護
39 寫字板
40 剪貼板查看程式
41 輔助選項
42 備份
43 點陣圖文檔
44 字元對應表
45 滑鼠指標
46 網路監視器
47 電話撥號器
48 系統監視器
49 幫助手冊
50 地球(區域設置)
51 音頻壓縮
52 CD 播放器
53 媒體播放機
54 聲音方案
55 視頻剪輯
56 視頻壓縮
57 音量控制
58 “樂曲”配音方案
59 “蛙鳴”配音方案
60 “金屬聲”配音方案
61 “幻想空間”配音方案
Parent
在可選元件介面中所顯示的列表框可以包含子層。如果可選元件是子元件,則 Parent= keyword 定義父組件的 Install 節。
Needs
如果元件從屬於其他元件,則這將定義該元件所需要的 Install 節。如果選中該元件,系統將警告用戶該元件需要在 Needs = 行列出。 Install 節中說明的元件。
注意在 Needs= 行列出的 Install 節必須在同一個 .inf 文件中。但是,如果在 Needs= 行上列出其他 .inf 檔的從屬元件,則必須在 Include= 行上指定 .inf 文件。
Include
Include 項目允許您指定 .inf 檔,而安裝程式在載入 .inf 檔時也必須把 .inf 檔調入記憶體,因為這些 .inf 檔包含除 .inf 檔中 Install 節外必須運行的節。Needs 項目指定要在已包括的 .inf 檔中運行的節名。
下例定義兩個可選元件安裝節,每個安裝節使用其他條目來指定介面元素和從屬性:
[Optional Components]
InstallMyToys
InstallGames
[InstallMyToys]
OptionDesc=%Toys_DESC%
Tip=%Toys_TIP%
IconIndex=35 ; 用於對話方塊的電話小圖示
Parent=MailApps
Needs=MSMAIL, MAPI, MicrosoftNetwork
Include=mos.inf, msmail.inf
CopyFiles=MyToysFiles
UpdateInis=MyToysLinks
AddReg=MyToysRegItems
[InstallOtherApps]
OptionDesc=%Other_DESC%
Tip=%Other_TIP%
IconIndex=4 ;用於對話方塊的 Windows 小圖示
CopyFiles=OtherFiles
UpdateInis=OtherLinks
AddReg=OtherRegItems
[Strings]
Toys_DESC=“郵件工具”
Toys_TIP=“用於發送和組織郵件的其他工具”
Other_DESC=“其他有用的工具”
Other_TIP=“電腦、磁片檢查程式和系統監視器

http://msdn.microsoft.com/library/default.asp?url=/library/en-us/install/hh/install/create-inf_f88cf176-2886-45a4-b93a-a12a572ebb16.xml.asp