inf文件基礎知識

INF文件全稱Information File文件,是Winodws操作系統下用來描述設備或文件等數據信息的文件。INF文件是由標準的ASCII碼組成,您可以用任何一款文字編輯器查看修改其中的內容。一般我們總是認爲INF文件是系統設備的驅動程序,其實這是錯誤的認識,Windows之所以在安裝某些硬件的驅動時提示需要INF文件是因爲INF文件爲該設備提供了一個全面描述硬件參數和相應驅動文件(DLL文件)的信息。就好比我們看着說明書安裝電腦硬件一樣,我們就是Windows系統,說明書就是INF文件。INF文件功能非常強大,幾乎能完成日常操作的所有功能。您可以把它看成是Windows系統底下的超強批初理。要熟練掌握和理解甚至是編寫INF文件需要對其內部結構有相當的認識。下面就讓我們來深入到INF文件中的內部一窺其真面貌吧!

INF文件的組成有節(Sections),鍵(Key)和值(value)三部分。
關鍵節有
[Version]版本描述信息,主要用於版本控制。
[Strings]字符串信息,用於常量定義。
[DestinationDirs]定義系統路徑信息。
[SourceDisksNames]指明源盤信息。
[SourceDisksNames]指明源盤文件名。
[DefaultInstall]開始執行安裝。
其它的節可以自定義,下面用一實例來具體講解。

程序代碼
[Version]
Signature=$Chicago$
Provider=%Author%

[Strings]
Product="添加文件關聯演示"
Version="1.0"
Author="Xunchi"
Copyright="Copyright 2005"
CustomFile="inf" ;修改您需要的文件名後綴
Program="NOTEPAD.EXE" ;修改您需要關聯的應用程序名

[Add.Reg]
HKCR,"."%CustomFile%,"",FLG_ADDREG_TYPE_SZ ,%CustomFile%File
HKCR,%CustomFile%File,"",FLG_ADDREG_TYPE_SZ,安裝信息
HKCR,%CustomFile%"File/shell","",FLG_ADDREG_TYPE_SZ,open
HKCR,%CustomFile%"File/shell/open/command","",FLG_ADDREG_TYPE_SZ,%program% %1

[DefaultInstall]
AddReg=Add.Reg

  在[Version]節中"Signature"項定義了該INF文件需要運行在何種操作系統版本中。有$Windows NT$, $Chicago$, or $Windows 95$三個值供選擇,一般選擇$Chicago$即可。項Provider中定義了該文件的創作來源,%Author%指引用Author項的值。您也可自定其它項來描述該INF文件的版本信息。該INF文件的作用是關聯文件,所以主要是對註冊表的操作,我們來看[Add.Reg]節,共四條語句,格式都是一樣。HKCR表示根HKEY_CLASSES_ROOT,第二個參數是子鍵的路徑名,第三個參數是表明值的類型,最後是值(具體見附表)。以上都是對操作的定義與過程,在節[DefaultInstall]中是開始執行要安裝的流程,AddReg表明是對註冊表進行操作,操作對象是Add.Reg節中的定義。如果您把AddReg換成DelReg則是刪除註冊表中的鍵值。當鼠標單擊該INF文件在彈出的菜單中選擇“安裝”就開始執行您所定義的操作。該示例在系統的INF文件右鍵菜單中增加了查看編輯功能並設置了默認動作,因爲在安裝了不瞭解的INF文件有可能對系統產生不良的影響,這樣雙擊文件就可打開編輯該文件了。

  再看看INF文件在文件操作方面的能力吧。請看下面的一個例子。

程序代碼
[Version]
Signature=$Chicago$
Provider=%Author%
[Strings]
Product="文件複製和安裝演示"
Version="1.0"
Author="Xunchi"
Copyright="Copyright 2005"

[FileList]
ProcessList.exe ;此文件已在當前目錄下,下同。

[FileList1]
Wordpad.exe
[DestinationDirs]
FileList=11 ;安裝到Windows的系統目錄
FileList1=10 ;安裝到Windows目錄
[DefaultInstall]
Copyfiles=FileList,FileList1

  相同的節的作用與上一例類似,請注意新出現的節[FileList],這是我自定義的節名,它表示了一個文件組,[FileList1]也類似。在節[DestinationDirs]中需定義每個文件組複製到的目錄(各個常量的意義見附表)。Copyfiles指明瞭需要進行復制的文件組。
  INF文件的操作還包括服務(NT系統)程序的安裝和卸載,INI文件的轉換等。由於這些操作都比較的複雜和繁瑣,且有一定的危險性故下次有機會再向大家進行深入探討。
  最後我們來看一下INF文件的執行機制,這時你也許要問不就是簡單的執行一下“安裝”嗎?知其然不知其所以然知識水平是不會提高的。在“文件夾選項”中的“文件類型”找到INF文件的“安裝”命令看到一串命令。“rundll32.exe setupapi,InstallHinfSection DefaultInst_all 132 %1”它表示了運行Dll文件setupapi.dll中的命令InstallHinfSection並傳遞給它起始節的名字 DefaultInstall。可見起始節是可以自定義的。INF文件的執行也可用在各種支持API調用的編程工具中。至此INF文件的結構和運行機制我們已基本瞭解,現在就讓你的思維開動起來,讓它更好的爲我們工作吧。

註冊表操作的常量定義:
----------------------------------------------------------
常量 根值
HKCR HKEY_CLASSES_ROOT.
HKCU HKEY_CURRENT_USER.
HKLM HKEY_LOCAL_MACHINE.
HKU HKEY_USERS.
-----------------------------------------------------------
FLG_ADDREG_APPEND 在多字符串後添加字符
FLG_ADDREG_TYPE_SZ 字符類型
FLG_ADDREG_TYPE_MULTI_SZ 字符串類型
FLG_ADDREG_TYPE_EXPAND_SZ 擴展字符串類型
FLG_ADDREG_TYPE_BINARY 二進制值
FLG_ADDREG_TYPE_DWORD DWord值
FLG_ADDREG_TYPE_NONE NULL值
----------------------------------------------------------
 
[DestinationDirs]節中所定義的常量路徑
----------------------------------------------------------
01 源目錄(後跟路徑)
10 Windows目錄
11 Windows系統目錄
12 驅動目錄
17 INF文件目錄
18 幫助文件目錄
20 字體目錄
21 根目錄
24 應用程序目錄
25 共享目錄
30 當前根目錄
50 System目錄
51 Spool 目錄
52 Spool 驅動目錄
53 用戶配置目錄
----------------------------------------------------------

[DefaultInstall]節中定義的操作
----------------------------------------------------------
LogConfig Log日誌文件配置
Copyfiles 複製文件
Renfiles 文件改名
Delfiles 刪除文件
UpdateInis 更新Inis
UpdateIniFields 更新Ini字段
AddReg 添加註冊項
DelReg 刪除註冊項
Ini2Reg Ini文件轉換爲Reg文件
----------------------------------------------------------

=================================================================================

INF的功能

1 複製文件、刪除文件、或重新命名文件。
2 新增或刪除註冊表(Registry)中的項目。
3 修改重要的系統設置文件(如 Autoexec.bat、Config.sys、.INI 等)

INF的規則

INF是純文本文件,它是分節的,這點和INI文件類似,每節以"[]"擴起來,每一個節名最長爲255個字符(Windows 2000/XP/2003操作系統中)或28個字符(Windows 98操作系統中)。在節與節之間的內容叫條目,每一個節又是由許多的條目組成的,每一個條目都由=分開,如a="b"。如果每一個條目的等號後有多個值,則每一個值之間用","號分隔開。INF對大小寫不敏感,行註釋語句命令是";",類似VB裏的’。如果一行寫不下,使用"/"來換行。

INF的運行

.INF文件是由Windows的SetupAPI解釋執行的腳本文件,它的運行過程很簡單,是一種線性的執行,線性的意思就是.INF文件的運行過程不存在分支語句,也就是沒有條件語句,一旦開始執行,就是沿着固定的路線運行。它的運行是按照節爲單位來執行的,從某一個[Install]節開始執行,從上到下執行該節中的條目,如果該條目是一個節,那麼就一條條執行子節中的條目,如此遞歸執行。在WINDOW上運行只要右擊這個文件,點擊安裝即可。

INF的語法結構

;指定版本和簽名節
[VERSION]
;系統根據Signuture看是不是適合當前版本,如果適合的話就執行,否則不執行,當然強制安裝是可以的
;用於WIN9X
Signature="$CHICAGO$"
;WINNT+
;Signature="$Windows NT$"
;指定安裝文件佈局,該行是可選的,如果沒有提供佈局信息文件,則在INF文件內必須包含[SourceDisksNames]和[SourceDisksFiles]節
LayoutFile=filename.inf
[SourceDisksNames]節
[SourceDisksNames]節羅列源文件所在盤符序列碼、盤描述符、盤卷標號和盤序列號。
[SourceDisksNames]節內語句的語法爲:
disk-ordinal=“disk-description”,disk-label,disk-serial-number
其中disk-ordinal爲必選項,是盤符序列碼,標識一個源盤,具有惟一性,一般可設置爲從1開始遞增的整數,0不是一個有效的盤符序列碼。當存在多個源盤時,盤符序列碼之間不能重複。
disk-description爲必選項,是盤描述符,用雙引號括起的字符串或字符串宏描述盤的內容或目的。安裝引擎將該字符串顯示在對話框內以提示用戶。
disk-label爲源盤的卷標識。
disk-serial-number未使用,但必須被設置爲0。
[SourceDisksFiles]節
[SourceDisksFiles]節指定安裝時使用的源文件和盤符序列碼、盤描述符。 [SourceDisksFiles]節內語句的語法爲:
file-name=disk-number[,subdir] [,file-size]
其中file-name爲必選項,是源盤上文件的名稱。
disk-number是包含file-name指定文件所在源盤的盤符序列碼,該盤符序列碼需在[SourceDisksNames]節中列出,並大於或等於1。
Subdir爲可選項,指定文件所在源盤的子目錄,如省略則源盤爲缺省安裝路徑。
file-size爲可選項,表明文件的大小,以字節爲單位。

[DestinationDirs]
;指定CopyFiles、RenFiles或DelFiles入口的缺省操作目錄
;語法file-list-section=LDID,[Subdir]
;LDID列表如下:
;01 ;current directory
;04 ;backup directory
;10 ;windows directory
;11 ;system dir
;12 ;iosubsys
;13 ;command
;14 ;control panel directory
;15 ;printers directory
;16 ;workgrou dir
;17 ;inf dir
;18 ;help dir
;19 ;administration dir
;20 ;fonts
;21 ;viewers
;22 ;vmm32
;23 ;color dir
;25 ;shared dir
;26 ;winboot
;28 ;host winboot
;30 ;root of boot drive
;31 ;root of host drive of a virtual boot drive
;32 ;old windows dir if exists

;以下例子爲安裝到window/web目錄下
;DefaultDestDir=10,"web"
;[Install]節提供了一個INF文件安裝過程的總覽,它識別文件內其他包含安裝信息節的詳細動作,是Windows內建安裝函數識別安裝過程和內容的真正入口
[Install]
;[Install]節分[DefaultInstall]和[OtherInstall]兩類
;[DefaultInstall]節節名DefaultInstall如前面表格內容所述被顯式地在註冊表中指定。
;該節也是系統獲取INF文件中安裝信息的首要入口,當用戶右擊INF文件選“安裝”時該節內容被執行。
;[OtherInstall]與[DefaultInstall]節遵循相同的語法,但必須被顯式地調用,常被用來定義反安裝動作

;缺省安裝節
[DefaultInstall]
;指明添加註冊表的子節,等號後面的爲自定義節名,例子見[add]節
ADDREG=add

;指明要刪除的註冊表子節,等號後面的爲自定義節名
DELREG=del

;指明要要複製的文件子節,用於安裝,Copyfiles命令可以替換系統正在訪問的文件。這些功能通過普通的del和copy命令都無法實現
CopyFiles=cfile

;指明要要刪除的文件子節,用於反安裝,多個節以逗號隔開,該命令如果發現要刪除的文件被鎖定,就會把文件放到系統刪除隊列中排隊
;等系統重啓動的時候,該文件就自動被刪除了
DelFiles=刪除文件段
;[刪除文件段]
;文件名列表
;例子:
;a.exe
;b.sys
;重命名文件段
;RenFiles=重命名文件段
;[重命名文件段]
;語法:
;[file-list-section]
;new-file-name,old-file-name
;file1,file2 ;修改文件名file1爲file2

;更新INI文件段內容子節
UpdateInis = 更新INI文件段
;[更新INI文件段]
;ini-file, ini-section, [old-ini-entry], [new-ini-entry], [flags]
;ini-file 包含要更改條目的 .ini 文件名
;ini-section 包含要更改條目的節名
;old-ini-entry 可選,常用形式爲 Key=Value
;new-ini-entry 可選,常用形式爲
;Key=Value。flags 是可選操作標記
;例子
;%01%/wincmd.ini, Configuration,,"InstallDir=%01%"
;%01%/wincmd.ini, Configuration,,"Mainmenu=%01%/LANGUAGE/TCExtMenu.mnu"
;更新ini文件值內容
updateinifield =
;ini文件更新註冊表
ini2reg=aa.ini
;更新config.sys內容
updatecfgsys=更新autoexec.bat段
[更新autoexec.bat段]
;更新autoexec.bat內容
updateautobat=更新autoexec.bat段
[更新autoexec.bat段]

;定義資源節,像資源文件,調用時使用%REG_SZ%就代表了0x00000000
[Strings]
REG_SZ=0x00000000
REG_BINARY=0x00000001
REG_DWORD=0x00010001
;自定義添加註冊表項的節
[add]
;注意格式:HKEY(根鍵縮寫),Subkey(子鍵),Valuename(鍵值名),Type(鍵值類型),Value(鍵值)
;HKCU -> HKEY_CURRENT_USER
;HKCR -> HKEY_CLASSES_ROOT
;HKLM -> HKEY_LOCAL_MACHINE
;HKU -> HKEY_USERS
;HKU -> HKEY_USERS
;HKCC -> HKEY_CURRENT_CONFIG
;HKDD -> HKEY_DYN_DATA
;解禁註冊表編輯器
HKCU,Software/Microsoft/Windows/CurrentVersion/Policies/System,DisableRegistryTools,1,0
;解禁IE的Internet選項
HKCU,Software/Policies/Microsoft/Internet Explorer/Restrictions,NoBrowserOptions,1,0
;解禁IE的Internet選項裏面的各個具體選項
HKCU,Software/Policies/Microsoft/Internet Explorer/Restrictions,NoBrowserOptions,1,0
HKCU,Software/Policies/Microsoft/Internet Explorer/Control Panel,Settings,1,0
HKCU,Software/Policies/Microsoft/Internet Explorer/Control Panel,HomePage,1,0
HKCU,Software/Policies/Microsoft/Internet Explorer/Control Panel,GeneralTab,1,0
HKCU,Software/Policies/Microsoft/Internet Explorer/Control Panel,Cache,1,0
HKCU,Software/Policies/Microsoft/Internet Explorer/Control Panel,History,1,0
HKCU,Software/Policies/Microsoft/Internet Explorer/Control Panel,Colors,1,0
HKCU,Software/Policies/Microsoft/Internet Explorer/Control Panel,Fonts,1,0
HKCU,Software/Policies/Microsoft/Internet Explorer/Control Panel,Languages,1,0
HKCU,Software/Policies/Microsoft/Internet Explorer/Control Panel,Accessibility,1,0
HKCU,Software/Policies/Microsoft/Internet Explorer/Control Panel,SecurityTab,1,0
HKCU,Software/Policies/Microsoft/Internet Explorer/Control Panel,SecChangeSettings,1,0
HKCU,Software/Policies/Microsoft/Internet Explorer/Control Panel,SecAddSites,1,0
HKCU,Software/Policies/Microsoft/Internet Explorer/Control Panel,ContentTab,1,0
HKCU,Software/Policies/Microsoft/Internet Explorer/Control Panel,Ratings,1,0
HKCU,Software/Policies/Microsoft/Internet Explorer/Control Panel,Certificates,1,0
HKCU,Software/Policies/Microsoft/Internet Explorer/Control Panel,CertifPers,1,0
HKCU,Software/Policies/Microsoft/Internet Explorer/Control Panel,CertifSite,1,0
HKCU,Software/Policies/Microsoft/Internet Explorer/Control Panel,CertifPub,1,0
HKCU,Software/Policies/Microsoft/Internet Explorer/Control Panel,FormSuggest,1,0
HKCU,Software/Policies/Microsoft/Internet Explorer/Control Panel,FormSuggest Passwords,1,0
HKCU,Software/Policies/Microsoft/Internet Explorer/Control Panel,Wallet,1,0
HKCU,Software/Policies/Microsoft/Internet Explorer/Control Panel,Profiles,1,0
HKCU,Software/Policies/Microsoft/Internet Explorer/Control Panel,ConnectionsTab,1,0
HKCU,Software/Policies/Microsoft/Internet Explorer/Control Panel,Connection Wizard,1,0
HKCU,Software/Policies/Microsoft/Internet Explorer/Control Panel,Connwiz Admin Lock,1,0
HKCU,Software/Policies/Microsoft/Internet Explorer/Control Panel,Connection Settings,1,0
HKCU,Software/Policies/Microsoft/Internet Explorer/Control Panel,Proxy,1,0
HKCU,Software/Policies/Microsoft/Internet Explorer/Control Panel,AutoConfig,1,0
HKCU,Software/Policies/Microsoft/Internet Explorer/Control Panel,ProgramsTab,1,0
HKCU,Software/Policies/Microsoft/Internet Explorer/Control Panel,ResetWebSettings,1,0
HKCU,Software/Policies/Microsoft/Internet Explorer/Control Panel,Check_If_Default,1,0
HKCU,Software/Policies/Microsoft/Internet Explorer/Control Panel,AdvancedTab,1,0
HKCU,Software/Policies/Microsoft/Internet Explorer/Control Panel,Advanced,1,0
;解禁下載(可單獨使用)
HKCU,Software/Microsoft/Windows/CurrentVersion/Internet Settings/Zones/3,1803,1,0
;自動修改IE標題欄文字、主頁、搜索頁等等
HKCU,Software/Microsoft/Internet Explorer/Main,Window Title,0,"Internet Explorer"
HKCU,Software/Microsoft/Internet Explorer/Main,Start Page,0,"http://www.zmn120.net

HKCU,Software/Microsoft/Internet Explorer/Main,Search Page,0,"http://www.zmn120.net
HKCU,Software/Microsoft/Internet Explorer/Main,Default_Page_URL,0,"http://www.zmn120.net
HKLM,SOFTWARE/Microsoft/Internet Explorer/Main,Default_Search_URL,0,"http://www.zmn120.net

HKLM,SOFTWARE/Microsoft/Internet Explorer/Main,Search Page,0,"http://www.zmn120.net

HKLM,SOFTWARE/Microsoft/Internet Explorer/Main,Start Page,0,"http://www.zmn120.net
HKLM,SOFTWARE/Microsoft/Internet Explorer/Main,Default_Page_URL,0,http://www.zmn120.net
HKLM,SOFTWARE/Microsoft/Internet Explorer/Main,Default_Page_URL,0,http://www.zmn120.net

[dfile]
;該節定義了將要刪除的文件列表,filename後面的1是一個標誌,指明如果文件當前無法刪除,就等到系統重啓動後刪除。
;格式:filename,,,1
;例子:
a.exe,,,

=================================================================================

安裝信息文件 (.inf) 定義


出處:伊維

基本 .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)] 指定在註冊表中添加或刪除的項目。
[IniFileUpdateSection(s)] 指定 .ini 文件的更新。鏈接將在該節中創建。
[SourceDisksNames] 列出包含文件的磁盤。
[SourceDisksFiles] 列出每個文件所在的特定磁盤。
[Strings] 列出上面所使用的可本地化字符串。

Version 節
[Version]
Signature="$Chicago$"
LayoutFile=filename.inf
定義所有 Windows .inf 文件的標準頭信息。注意如果簽名不是 $Chicago$,Windows 不會把 .inf 文件當作 Windows 識別的任何設備類型的 .inf 文件接受。

注意簽名字符串的識別不會區分大小寫。例如,既可以用$Chicago$,也可以用$CHICAGO$。

filename.inf
對包含安裝該組件所需佈局信息(源盤和文件)的 .inf 文件加以命名。該行是可選的。如果未在別處給出,SourceDisksNames 和 SourceDisksFiles 節必須在該 .inf 文件中給出。

下面顯示的是一個典型的 Version 節示例:

[Version]
Signature="$CHICAGO$"
Install 節
[install-section-name]
Copyfiles = 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
如果命名 Install 節 [DefaultInstall],當右鍵單擊 .inf 文件,然後單擊“安裝”時,它將運行。這也是選擇 .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


file42、file52 和 file62),必須在 SourceDisksNames 節中定義 SourceDisksFiles 節中顯示的邏輯盤號。

安裝信息文件 (.inf) 定義

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,臨時命名爲 file 23
file31,file32 ;將 file 32 複製到 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]
.
.
在給定的 .ini 文件中,替換、刪除或添加整個項。節名 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 被替換,在路徑中加上反斜線。例如,LDID_BOOT 用 C:/ 替換。但是在 .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

安裝信息文件 (.inf) 定義


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 文件名的詳細信息,請參閱說明 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可以將該參數表示爲可替代字符串。例如可以使用%Subkey1%,在 .inf 文件的 Strings 節中定義要替代 %Subkey1% 的字符串。

value-name
可選。標識 subkey 的值名。對於字符串類型,如果 value-name 參數爲空,那麼在 subkey 參數中指定的子項值將設置爲 NULL 字符串。請注意,可以將 value-name 參數表示爲可替代字符串。例如,可以使用 %Valname1%,在 .inf 文件的 Strings 節定義替換 %Valname1% 的字符串。

flag
可選。確定值的類型,以及如果註冊表項已經存在,是否需要替換註冊表項。

值 意義
0 (默認) 值爲 ANSI 字符串。如果存在,則替換註冊表項。
1 值爲十六進制數。如果存在,則替換註冊表項。
2 值爲 ANSI 字符串。如果存在,不替換註冊表主項。
3 值爲十六進制數。如果存在,不替換註冊表主項。

value-name
可選。設置值。它可以是 ANSI 字符串、十六進制符號或 Intel 格式的數字。包含二進制值的任何項目都可以用反斜線 (/) 符號擴展。也可以給出 %strkey% 形式的字符串主項。必須在 .inf 文件的 Strings 節中定義 strkey。要在該行中使用字符 %,請使用 %%。

至少需要兩個字段;但是一個可以是空的。因此使用該形式時至少需要一個逗號。

在 AddReg-type 節的以下示例中,有兩個項目將兩個值名添加到註冊表中。注意 %25% 將擴展到計算機的 Windows 文件夾中。

[MyAppRegEntries]
HKLM,Software/MyApp,ProgramName,,"My Application"
HKLM,Software/MyApp,"rogram 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
;; lines in Config.sys
Device=Filename.sys ;; line #1
Install=Filename.exe ;; line #2
Device=Filename.sys /d:b800 /I:3 ;; line #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 堆棧值。

安裝信息文件 (.inf) 定義


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-ini-section-name 必須出現在 .inf 文件 Install 節的 UpdateInis 項目中。

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 並在 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 源驅動器:/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/Ilsybsys,將其他節的默認文件夾設爲啓動盤上的 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="My Application Installation Disk 1"

SourceDisksFiles 節
[SourceDisksFiles]
file name=disk-number[,subdir] [,file-size]
.
.
color=#000000 命名安裝過程中使用的源文件,並識別包含文件的源盤。

color=#000000 filename
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="My Application"
String1="My Application Readme File"
String2="CX2590 SCSI Adapter"

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=%Tomytoysys_TIP%
IconIndex=35 hone mini-icon for dialogs
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 mini icon for dialogs
CopyFiles=OtherFiles
UpdateInis=OtherLinks
AddReg=OtherRegItems[Strings]
Toys_DESC="Mail Utilities"
Toys_TIP="Additional utilities for sending and organizing mail"
Other_DESC="Other Helpful Utilities"
Other_TIP="Calculator, disk checker and performance monitor"

=================================================================================

INF安裝文件短路徑詳解

Thought this may help people out, I apologise if a similar method has been posted previously, but I couldn't find one in my searches.

Before the cleanup routine is called in runoncex.cmd, add the lines similar to the following:
CODE
REG ADD %KEY%/045 /VE /D "Adding user defined shortcuts" /f
REG ADD %KEY%/045 /V 1 /D "rundll32 setupapi,InstallHinfSection Shortcuts 128 %systemdrive%/Apps/Standalone/shortcuts.inf" /f

Now create a shortcuts.inf file similar to this:
CODE
[Version]
Signature=$CHICAGO$

[Shortcuts]
UpdateInis=AddLink

[AddLink]
;adds shortcut to ERUNT.exe within %ProgramFiles%/Standalone/ERUNT folder to %USERPROFILE%/Start Menu/Programs/Standalone/ERUNT
setup.ini, progman.groups,, "group1=""%16386%/Standalone/ERUNT/"""
setup.ini, group1,,"""ERUNT"",""""""%16422%/Standalone/ERUNT/ERUNT.EXE"""""""

;adds shortcut to README.TXT within %ProgramFiles%/Standalone/ERUNT folder to %USERPROFILE%/Start Menu/Programs/Standalone/ERUNT
setup.ini, progman.groups,, "group2=""%16386%/Standalone/ERUNT/"""
setup.ini, group2,,"""Readme"",""""""%16422%/Standalone/ERUNT/README.TXT"""""""

;adds shortcut to NTREGOPT.EXE within %ProgramFiles%/Standalone/ERUNT folder to %USERPROFILE%/Start Menu/Programs/Standalone/ERUNT
setup.ini, progman.groups,, "group3=""%16386%/Standalone/ERUNT/"""
setup.ini, group3,,"""NTREGOPT"",""""""%16422%/Standalone/ERUNT/NTREGOPT.EXE"""""""

;adds shortcut to Restoration.exe within %ProgramFiles%/Standalone/Restoration folder to %USERPROFILE%/Start Menu/Programs/Standalone/Restoration
setup.ini, progman.groups,, "group4=""%16386%/Standalone/Restoration/"""
setup.ini, group4,,"""Restoration"",""""""%16422%/Standalone/Restoration/Restoration.exe"""""""

;adds shortcut to SyncBack.exe within %ProgramFiles%/Standalone/SyncBack folder to %USERPROFILE%/Start Menu/Programs/Standalone/SyncBack
setup.ini, progman.groups,, "group5=""%16386%/Standalone/SyncBack/"""
setup.ini, group5,,"""SyncBack"",""""""%16422%/Standalone/SyncBack/SyncBack.exe"""""""

;adds shortcut to SYNCBACK.HLP within %ProgramFiles%/Standalone/SyncBack folder to %USERPROFILE%/Start Menu/Programs/Standalone/SyncBack
setup.ini, progman.groups,, "group6=""%16386%/Standalone/SyncBack/"""
setup.ini, group6,,"""SyncBack Help"",""""""%16422%/Standalone/SyncBack/SYNCBACK.HLP"""""""

;adds shortcut to popcorn.exe within %ProgramFiles%/Standalone/PopCorn folder to %USERPROFILE%/Start Menu/Programs/Standalone/PopCorn
setup.ini, progman.groups,, "group7=""%16386%/Standalone/PopCorn/"""
setup.ini, group7,,"""Ultrafunk Popcorn"",""""""%16422%/Standalone/PopCorn/popcorn.exe"""""""

;adds shortcut to popreadme.txt within %ProgramFiles%/Standalone/PopCorn folder to %USERPROFILE%/Start Menu/Programs/Standalone/PopCorn
setup.ini, progman.groups,, "group8=""%16386%/Standalone/PopCorn/"""
setup.ini, group8,,"""Readme"",""""""%16422%/Standalone/PopCorn/popreadme.txt"""""""

;for meanings of %16386% and %16422% see listings below
;
; Common DIRID Listing,
;
; Destination Directories
;
; 01 - SourceDrive:/pathname      (the directory from which the INF file was installed)
; 10 - Windows directory      (%SystemRoot%)
; 11 - System directory       (%SystemRoot%/system32 -NT-, %SystemRoot%/system -Win9x/Me-)
; 12 - Drivers directory      (%SystemRoot%/system32/drivers -NT-, %SystemRoot%/system/IoSubsys -Win9x/Me-)
; 17 - INF file directory      (%SystemRoot%/inf)
; 18 - Help directory       (%SystemRoot%/Help)
; 20 - Fonts directory       (%SystemRoot%/Fonts)
; 24 - Root directory of system disk (%SystemDrive%)
; 25 - Shared directory       (%ALLUSERSPROFILE%/Shared Documents)
; 53 - User profile directory      (%USERPROFILE%)
;
; Shell Special Folders
;
; 16419 %ALLUSERSPROFILE%/Application Data
; 16409 %ALLUSERSPROFILE%/Desktop
; 16430 %ALLUSERSPROFILE%/Documents
; 16437 %ALLUSERSPROFILE%/Documents/My Music
; 16438 %ALLUSERSPROFILE%/Documents/My Pictures
; 16439 %ALLUSERSPROFILE%/Documents/My Videos
; 16415 %ALLUSERSPROFILE%/Favorites
; 16406 %ALLUSERSPROFILE%/Start Menu
; 16407 %ALLUSERSPROFILE%/Start Menu/Programs
; 16431 %ALLUSERSPROFILE%/Start Menu/Programs/Administrative Tools
; 16408 %ALLUSERSPROFILE%/Start Menu/Programs/Startup
; 16429 %ALLUSERSPROFILE%/Templates
; 16410 %USERPROFILE%/Application Data
; 16417 %USERPROFILE%/Cookies
; 16384 %USERPROFILE%/Desktop
; 16400 %USERPROFILE%/Desktop
; 16390 %USERPROFILE%/Favorites
; 16412 %USERPROFILE%/Local Settings/Application Data
; 16443 %USERPROFILE%/Local Settings/Application Data/Microsoft/CD Burning
; 16418 %USERPROFILE%/Local Settings/History
; 16416 %USERPROFILE%/Local Settings/Temporary Internet Files
; 16389 %USERPROFILE%/My Documents
; 16397 %USERPROFILE%/My Documents/My Music
; 16423 %USERPROFILE%/My Documents/My Pictures
; 16398 %USERPROFILE%/My Documents/My Videos
; 16403 %USERPROFILE%/NetHood
; 16411 %USERPROFILE%/PrintHood
; 16392 %USERPROFILE%/Recent
; 16393 %USERPROFILE%/SendTo
; 16395 %USERPROFILE%/Start Menu
; 16386 %USERPROFILE%/Start Menu/Programs
; 16432 %USERPROFILE%/Start Menu/Programs/Administrative Tools
; 16391 %USERPROFILE%/Start Menu/Programs/Startup
; 16405 %USERPROFILE%/Templates
; 16422 %ProgramFiles%
; 16427 %ProgramFiles%/Common Files
; 16440 %SystemRoot%/Resources
; 16441 %SystemRoot%/Resources/0409
;
; e.g.
; For shortcut in users Quick Launch toolbar,
; "%16410%/Microsoft/Internet Explorer/Quick Launch/"

You can remove all the commented lines to make it smaller
In my example the standalone programs,(all freeware), were each within their own folders within a folder called Standalone which in turn resided inside /$OEM$/$Progs and the shortcuts were all created within their own new folders within a new folder named Standalone which in turn resided in %USERPROFILE%/Start Menu/Programs.

Hope this has been of some use to you

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章