免费视频淫片aa毛片_日韩高清在线亚洲专区vr_日韩大片免费观看视频播放_亚洲欧美国产精品完整版

打開APP
userphoto
未登錄

開通VIP,暢享免費電子書等14項超值服

開通VIP
!!!!! 編寫INF文件進(jìn)行文件安裝

 編寫INF文件進(jìn)行文件安裝

◆ 丁健 張萬 江南


安裝信息(Setup Information)文件是Windows系統(tǒng)支持的一種安裝信息存放文件,一般以INF作為擴(kuò)展名,因此也叫INF文件。安裝信息INF文件與Windows內(nèi)建的安裝服務(wù)引擎(API函數(shù)庫)緊密協(xié)同工作,基于其嚴(yán)格的編寫語法制作而成的INF文件在拷貝、刪除文件,增、刪注冊表鍵,更改系統(tǒng)設(shè)置等方面都有優(yōu)秀的表現(xiàn),完全可以用來實現(xiàn)應(yīng)用程序文件安裝的目標(biāo),而且價格免費,透明度高,安裝程序小,可完全定制。INF文件是文本文件,可在任何文本編輯器內(nèi)查看、創(chuàng)建、修改,普通用戶使用Windows系統(tǒng)本身提供的記事本、寫字板即可進(jìn)行文件安裝腳本的編寫。

INF文件安裝動作的觸發(fā)機(jī)制


在文件目錄中用鼠標(biāo)右擊INF文件,會顯示不同于其他擴(kuò)展名文件的“安裝”菜單。Windows平臺在計算機(jī)中完成初始安裝后,就注冊了INF文件的“安裝”動作,此“安裝”動作關(guān)聯(lián)命令行程序基本形式為:

RunDll setupx.dll,InstallHinfSection section reboot-mode inf-name

如筆者目前正在使用的Windows 98系統(tǒng)注冊表中,HKEY_CLASSES_ROOT\inffile\install\

command鍵的默認(rèn)值為(install即為安裝):

C:\WINDOWS\rundll.exe setupx.dll,InstallHinfSection DefaultInstall 132 %1

其中,rundll程序以命令行的形式調(diào)用Windows的動態(tài)鏈接庫,其命令格式為:

rundll.exe <DLL文件名>,<入口點>,<調(diào)用參數(shù)>

setupx.dll是安裝API(Setup API)函數(shù)庫,包含了InstallHinfSection、SetupGetInfSections、SetupInstallFromInfSection、SetupPromptForDisk、SetupDiCreateDevRegKey等INF文件內(nèi)部語法檢查、節(jié)名搜索、注冊鍵創(chuàng)建等功能函數(shù)。setupx.dll與其后的入口點用逗號(,)分開,入口點是大小寫敏感的。

Section是INF文件內(nèi)初始執(zhí)行節(jié)名,首先執(zhí)行該節(jié)內(nèi)容,默認(rèn)情況下名稱為“DefaultInstall”,系統(tǒng)用戶一般不宜對此做任何改動,如被改動,則在后續(xù)INF文件的Install節(jié)使用相應(yīng)修改后的名稱。

reboot-mode是重啟動參數(shù),指示在INF文件執(zhí)行后對系統(tǒng)的設(shè)置進(jìn)行了改變,操作系統(tǒng)是否重新啟動。該參數(shù)一般設(shè)為132或4,即由安裝程序決定是否必須重啟動,因為某些設(shè)置的改變必須在重啟動后才能生效。

inf-name是INF文件的名稱,“%1”即為所選中文件本身。

INF文件內(nèi)部節(jié)(Section)的定義

INF文件用特殊的文本文件格式編輯、保存,Windows內(nèi)建的安裝函數(shù)遵循既定的語法從INF文件內(nèi)獲取安裝信息。INF文件和初始化(或稱私有化,Private File)文件相似,采用節(jié)(Section)和入口(Entries)的索引機(jī)制,節(jié)和入口定義了所有操作類型及操作對象。一個INF文件由不同類型的節(jié)組成,每類節(jié)都有其特殊的目的和不同的實現(xiàn)語法,每節(jié)的內(nèi)容均服務(wù)于該節(jié)的目的。除了基本的識別INF格式的“Version”節(jié)外,INF文件中節(jié)的數(shù)目和類型沒有限制,主要取決于具體安裝任務(wù)。一個基本的INF文件,一般包含如下幾節(jié):

表中黑體節(jié)名是保留關(guān)鍵字,名稱固定,大小寫不敏感,斜體節(jié)名名稱任意,由INF文件編寫者確定。每節(jié)的標(biāo)題字符均用括號()括起。 限于篇幅本文只對黑體節(jié)名做進(jìn)一步的解釋。

[Version]節(jié)

任何INF文件的第一個小節(jié)均是[Version],又稱為INF文件頭。一般有如下語句:

[Version]

Signature=“$Chicago$”

LayoutFile=filename.inf

其中,Signature的值應(yīng)為“$Chicago$”、“$Windows 95$”或“$Windows NT$”中的一個(不區(qū)分大小寫),否則Windows不接受該文件為INF文件,內(nèi)建的動作也就不會起作用。

filename.inf文件包含安裝組件必需的安裝布局信息(源盤和源文件),該行是可選的,如果沒有提供布局信息文件,則在INF文件內(nèi)必須包含[SourceDisksNames]和[SourceDisksFiles]節(jié)。

[Install]節(jié)

[Install]節(jié)提供了一個INF文件安裝過程的總覽,它識別文件內(nèi)其他包含安裝信息節(jié)的詳細(xì)動作,是Windows內(nèi)建安裝函數(shù)識別安裝過程和內(nèi)容的真正入口,用戶所有的安裝目的在這里表現(xiàn)。那些與[Install]節(jié)內(nèi)容不存在關(guān)聯(lián)的節(jié)的動作將被忽略。

[Install]節(jié)分[DefaultInstall]和[OtherInstall]兩類,它們使用相同的格式。[DefaultInstall]節(jié)節(jié)名“DefaultInstall”如前面表格內(nèi)容所述被顯式地在注冊表中指定,大小寫不敏感。該節(jié)也是系統(tǒng)獲取INF文件中安裝信息的首要入口,當(dāng)用戶右擊INF文件選“安裝”時該節(jié)內(nèi)容被執(zhí)行。[OtherInstall]與[DefaultInstall]節(jié)遵循相同的語法,但必須被顯式地調(diào)用,常被用來定義反安裝動作。它們均可包括以下種類的可選入口:

CopyFiles=[CopyFiles-section-name]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

上面的入口并非都必需,如果需要一個入口,則應(yīng)該在等號右側(cè)指出存在于該INF文件內(nèi)的索引節(jié)名(不用指出節(jié)名的一個特例是CopyFiles入口,可使用“@”字符后跟文件名的形式,效果是直接將文件拷貝到DestinationDirs節(jié)所羅列的硬盤目錄)。節(jié)名需由可打印字符組成,在中文系統(tǒng)平臺中,可使用中文字符作為節(jié)名,這也是體現(xiàn)INF格式安裝本地化的地方,非常直觀。每類入口在一個[Install]節(jié)內(nèi)只能出現(xiàn)一次,第二次及以后出現(xiàn)的同名重復(fù)入口將被忽略。每類入口的等號右側(cè)可羅列多個節(jié)名,節(jié)名之間以逗號分開,以便列舉同一類動作的不同作用對象,如刪除多個注冊表鍵、拷貝文件到多個目錄路徑等。

下表是各類入口的動作含義,具體語法本文不做細(xì)述:

在實際編寫INF文件時,注冊表根鍵通常采用縮寫方式,如下表:

[DestinationDirs]節(jié)

[DestinationDirs]節(jié)指定拷貝、重命名或刪除文件三類動作的目的目錄路徑,拷貝、重命名或刪除操作對象即文件的列表在專門的節(jié)中列出,這些節(jié)名最初在“Install”的CopyFiles、RenFiles或DelFiles入口中明確。

[DestinationDirs]節(jié)內(nèi)語句的語法為:

file-list-section=LDID,[Subdir]

[DefaultDestDir=LDID,[Subdir]]

其中file-list-section為必選項,是CopyFiles、RenFiles或DelFiles入口內(nèi)列出的節(jié)名。

LDID(Logical disk identifier)為必選項,是邏輯盤標(biāo)識碼,代表各種系統(tǒng)或?qū)崟r安裝路徑,邏輯盤標(biāo)識碼可看做一種宏字符串,隨系統(tǒng)或?qū)崟r安裝路徑的不同而相應(yīng)改變。邏輯盤標(biāo)識碼機(jī)制確保了安裝的靈活性和正確性,該標(biāo)識碼可為下表所述值之一:

Subdir為可選項,指定LDID目錄下的子目錄名。

DefaultDestDir為可選項,指定CopyFiles、RenFiles或DelFiles入口的缺省操作目錄。

[SourceDisksNames]節(jié)

[SourceDisksNames]節(jié)羅列源文件所在盤符序列碼、盤描述符、盤卷標(biāo)號和盤序列號。

[SourceDisksNames]節(jié)內(nèi)語句的語法為:

disk-ordinal=“disk-description”,disk-label,disk-serial-number

其中disk-ordinal為必選項,是盤符序列碼,標(biāo)識一個源盤,具有惟一性,一般可設(shè)置為從1開始遞增的整數(shù),0不是一個有效的盤符序列碼。當(dāng)存在多個源盤時,盤符序列碼之間不能重復(fù)。

disk-description為必選項,是盤描述符,用雙引號括起的字符串或字符串宏描述盤的內(nèi)容或目的。安裝引擎將該字符串顯示在對話框內(nèi)以提示用戶。

disk-label為源盤的卷標(biāo)識。

disk-serial-number未使用,但必須被設(shè)置為0。

[SourceDisksFiles]節(jié)

[SourceDisksFiles]節(jié)指定安裝時使用的源文件和盤符序列碼、盤描述符。 [SourceDisksFiles]節(jié)內(nèi)語句的語法為:

file-name=disk-number[,subdir] [,file-size]

其中file-name為必選項,是源盤上文件的名稱。

disk-number是包含file-name指定文件所在源盤的盤符序列碼,該盤符序列碼需在[SourceDisksNames]節(jié)中列出,并大于或等于1。

Subdir為可選項,指定文件所在源盤的子目錄,如省略則源盤為缺省安裝路徑。

file-size為可選項,表明文件的大小,以字節(jié)為單位。

[Strings]節(jié)

[Strings]節(jié)定義一個或多個本地化字符串,或稱字符串宏。盡管[Strings]節(jié)一般被放置在INF文件的末尾,字符串宏可在INF文件任何地方使用,安裝引擎解釋、展開字符串宏為給定的長字符串并做進(jìn)一步處理。字符串宏在使用時需用百分號(%)括起。[Strings]節(jié)內(nèi)語句的語法為:

strings-key=value

其中strings-key為由字母或數(shù)字等可打印字符組成的宏名。

Value為被雙引號括起的長字符串,字符串可由字母、數(shù)字或其他可打印字符組成。

一個具體的安裝實例

本文接下來列舉一個名為“Mysetup.inf”的安裝信息文件實例,以便讀者熟悉INF文件語法,領(lǐng)略INF文件的安裝效果。該“Mysetup.inf”文件可完成如下的安裝任務(wù):假設(shè)應(yīng)用程序有“MyApp.exe”、“MyApp.hlp”、“MyApp.dll”等幾個需安裝到應(yīng)用程序主目錄的文件,有“Ass_1.dll”、“Ass_2.dll”等幾個需安裝到Windows\System子目錄的文件,要求將各文件按預(yù)定目錄位置拷貝到位,其中應(yīng)用程序主目錄可在安裝過程中選定,同時,在“開始>程序”下面建立名為“我的程序組”的程序組,在該程序組下建立名為“我的應(yīng)用程序”、“我的應(yīng)用程序幫助”的兩個程序項,分別與“MyApp.exe”和“MyApp.hlp”文件關(guān)聯(lián)。

完成上述安裝任務(wù)的“Mysetup.inf”文件內(nèi)容如下:

[Version]

signature=“$chicago$”

[AdvSetup]

HKLM,SOFTWARE\Microsoft\Windows

\CurrentVersion\Runonce\Setup,“INF制作安裝程序”,,“RunDll32.exe“%01%”\advpack.dll,LaunchINFSection Mysetup.inf,DefaultInstall2”

[DefaultInstallX]

[DefaultInstall]

AddReg=AdvSetup

[DefaultInstall2]

CopyFiles = 拷貝到用戶指定目錄,拷貝到Windows\System子目錄 ,……

CustomDestination=My-path

UpdateInis = 加exe文件快捷方式,加hlp文件快捷方式,……

[SourceDisksNames]

1=“文件所在目錄”,,0

[SourceDisksFiles]

MyApp.exe.exe=1,,1021

MyApp.dll=1,,1021

MyApp.hlp=1,,1021

Ass_1.dll=1,,1021

Ass_2.dll=1,,1021

[DestinationDirs]

拷貝到用戶指定目錄 = 49000

拷貝到Windows\System子目錄 = 11

[My-path]

49000,49001,49002,49003=index-again,1

[index-again]

“”,“”,“”,,““默認(rèn)安裝到“C:\MyApp”目錄,可選擇””,“%30%\MyApp”

[拷貝到用戶指定目錄]

MyApp.exe

MyApp.dll

MyApp.hlp

[拷貝到Windows\System子目錄]

Ass_1.dll

Ass_2.dll

[加exe文件快捷方式]

setup.ini, progman.groups,, “group1=““我的程序組”””

setup.ini, group1,,“““我的應(yīng)用程序””,““““““%49000%\MyApp.exe””””””,,,,,““MyApp.exe”””

[加hlp文件快捷方式]

setup.ini, progman.groups,, “group1=““我的程序組”””

setup.ini, group1,,“““我的應(yīng)用程序幫助””,““““““%49000%\MyApp.hlp””””””,,,,,““MyApp.hlp”””

讀者會注意到上面的文件內(nèi)許多鍵名使用了中文,這是因為INF格式文件支持中文提示及中文鍵名。這些中文鍵名不僅充當(dāng)功能鍵起索引的作用,還形象化地標(biāo)識了鍵的前后對應(yīng)關(guān)系,增強了文件內(nèi)容的可讀性,有利于后續(xù)更改、維護(hù)。

安裝時,首先確保應(yīng)用程序的所有待安裝文件和“Mysetup.inf” 文件處在同一個目錄下,右擊“Mysetup.inf”文件選“安裝”或按Shift鍵的同時按功能鍵F10。待目錄選擇對話框出現(xiàn),點擊“瀏覽”按鈕或直接在文本編輯框內(nèi)鍵入目錄名稱后,屏幕顯示文件安裝拷貝和更新快捷方式進(jìn)度,最終結(jié)束。

打開資源管理器,就可查看到所有文件均已拷貝到指定目錄位置。點擊“開始>程序”,可以找到“我的程序組”程序組及下屬的“我的應(yīng)用程序”、“我的應(yīng)用程序幫助”程序項,選中程序項均能激活對應(yīng)文件,說明文件安裝及快捷方式關(guān)聯(lián)均告成功。

小 結(jié)

本文介紹的文件安裝方法適合于大眾,讀者可熟悉語法、參考例子、效仿編寫,制作出自己的安裝信息文件。

本站僅提供存儲服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊舉報。
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
詳解 Desktop.ini 配置設(shè)置文件1
搜索用不了
擴(kuò)展使用.INF文件-制作免安裝的綠色軟件
windows PE文件結(jié)構(gòu)及其加載機(jī)制
添加/刪除windows組件中找不到iis安裝項的解決方法
添加刪除里沒有IIS的解決辦法-站長博客
更多類似文章 >>
生活服務(wù)
分享 收藏 導(dǎo)長圖 關(guān)注 下載文章
綁定賬號成功
后續(xù)可登錄賬號暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點擊這里聯(lián)系客服!

聯(lián)系客服