青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

C++樂園

C/C++ 交流

  C++博客 :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理 ::
  12 隨筆 :: 18 文章 :: 14 評論 :: 0 Trackbacks

丁健 張萬 江南

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

INF 文件安裝動作的觸發機制

在文件目錄中用鼠標右擊 INF 文件,會顯示不同于其他擴展名文件的 安裝 菜單。 Windows 平臺在計算機中完成初始安裝后,就注冊了 INF 文件的 安裝 動作,此 安裝 動作關聯命令行程序基本形式為 :
RunDll setupx.dll,InstallHinfSection section reboot-mode inf-name
如筆者目前正在使用的 Windows 98 系統注冊表中, HKEY_CLASSES_ROOT\inffile\install\
command
鍵的默認值為( install 即為安裝):
C:\WINDOWS\rundll.exe setupx.dll,InstallHinfSection DefaultInstall 132 %1
其中, rundll 程序以命令行的形式調用 Windows 的動態鏈接庫,其命令格式為:
rundll.exe <DLL
文件名 >,< 入口點 >,< 調用參數 >
setupx.dll
是安裝 API(Setup API) 函數庫,包含了 InstallHinfSection SetupGetInfSections SetupInstallFromInfSection SetupPromptForDisk SetupDiCreateDevRegKey INF 文件內部語法檢查、節名搜索、注冊鍵創建等功能函數。 setupx.dll 與其后的入口點用逗號 (,) 分開,入口點是大小寫敏感的。
Section
INF 文件內初始執行節名,首先執行該節內容,默認情況下名稱為 “DefaultInstall” ,系統用戶一般不宜對此做任何改動,如被改動,則在后續 INF 文件的 Install 節使用相應修改后的名稱。
reboot-mode
是重啟動參數,指示在 INF 文件執行后對系統的設置進行了改變,操作系統是否重新啟動。該參數一般設為 132 4 ,即由安裝程序決定是否必須重啟動,因為某些設置的改變必須在重啟動后才能生效。
inf-name
INF 文件的名稱, “%1” 即為所選中文件本身。

INF 文件內部節 (Section) 的定義

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

節的名稱

節的作用

[Version]

INF 文件頭,提供有效 INF 文件的版本信息

[DefaultInstall]

安裝包含所關聯動作(文件拷貝或刪除,注冊表鍵值更新、子鍵增刪等)在 INF 文件內的節名指針,默認情況下首先執行該節內容

[OtherInstall]

[DefaultInstall] 節遵循相同的語法,但必須顯式的調用,常被用來定義反安裝動作

[DestinationDirs]

指定羅列于一個節內將被拷貝、刪除或重命名的文件在硬盤上的位置

[FileCopy/Delete/RenameSection(s)]

羅列將被拷貝、刪除或重命名的文件

[RegistryUpdateSection(s)]

指定對注冊表鍵值更新、子鍵增刪等動作

[IniFileUpdateSection(s)]

指定對 ini 文件的更新、快捷方式可通過該節進行創建

[SourceDisksNames]

羅列文件所在盤盤名、盤卷標、盤序列號

[SourceDisksFiles]

羅列安裝時使用的源文件及其所在盤

[Strings]

羅列本地化字符串(或稱宏字符串)


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

[Version]

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

[Version]
Signature=“$Chicago$”
LayoutFile=filename.inf

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

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

[Install]

[Install] 節提供了一個 INF 文件安裝過程的總覽,它識別文件內其他包含安裝信息節的詳細動作,是 Windows 內建安裝函數識別安裝過程和內容的真正入口,用戶所有的安裝目的在這里表現。那些與 [Install] 節內容不存在關聯的節的動作將被忽略。

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

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

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

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

CopyFiles

等號右側是拷貝文件羅列節節名,將文件拷貝到 DestinationDirs 節指定的目的地,所有的源文件必須在 SourceDisksFiles 節列出

RenFiles

重命名文件

DelFiles

刪除文件

UpdateInis

安裝過程中更新 INI 初始化文件內容

UpdateIniField

安裝過程中更新 INI 初始化文件值內容

AddReg

增加注冊表鍵或鍵值

DelReg

刪除注冊表鍵或鍵值

Ini2Reg

INI 文件內容更新注冊表

UpdateCfgSys

更新 Config.sys 文件內的設置

UpdateAutoBat

更新 Autoexec.bat 文件內的設置


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

HKCR

HKEY_CLASSES_ROOT 的簡寫

HKCU

HKEY_CURRENT_USER 的簡寫

HKLM

HKEY_LOCAL_MACHINE 的簡寫

HKU

HKEY_USERS 的簡寫

HKR

相對鍵,對于硬件設備驅動程序類安裝的

?

[DestinationDirs]

[DestinationDirs] 節指定拷貝、重命名或刪除文件三類動作的目的目錄路徑,拷貝、重命名或刪除操作對象即文件的列表在專門的節中列出,這些節名最初在 “Install” CopyFiles RenFiles DelFiles 入口中明確。
[DestinationDirs]
節內語句的語法為:
file-list-section=LDID
[Subdir]
[DefaultDestDir=LDID
[Subdir]]
其中 file-list-section 為必選項,是 CopyFiles RenFiles DelFiles 入口內列出的節名。
LDID(Logical disk identifier)
為必選項,是邏輯盤標識碼,代表各種系統或實時安裝路徑,邏輯盤標識碼可看做一種宏字符串,隨系統或實時安裝路徑的不同而相應改變。邏輯盤標識碼機制確保了安裝的靈活性和正確性,該標識碼可為下表所述值之一:
Subdir
為可選項,指定 LDID 目錄下的子目錄名。
DefaultDestDir
為可選項,指定 CopyFiles RenFiles DelFiles 入口的缺省操作目錄。

[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
為可選項,表明文件的大小,以字節為單位。

[Strings]

[Strings] 節定義一個或多個本地化字符串,或稱字符串宏。盡管 [Strings] 節一般被放置在 INF 文件的末尾,字符串宏可在 INF 文件任何地方使用,安裝引擎解釋、展開字符串宏為給定的長字符串并做進一步處理。字符串宏在使用時需用百分號 (%) 括起。 [Strings] 節內語句的語法為:
strings-key=value
其中 strings-key 為由字母或數字等可打印字符組成的宏名。
Value
為被雙引號括起的長字符串,字符串可由字母、數字或其他可打印字符組成。

一個具體的安裝實例

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

[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]
“”
“” “”, ““ 默認安裝到 “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,,“““
我的應用程序 ””,““““““%49000%\MyApp.exe””””””,,,,,““MyApp.exe”””
[
hlp 文件快捷方式 ]
setup.ini, progman.groups,, “group1=““
我的程序組 ”””
setup.ini, group1,,“““
我的應用程序幫助 ””,““““““%49000%\MyApp.hlp””””””,,,,,““MyApp.hlp”””
讀者會注意到上面的文件內許多鍵名使用了中文,這是因為 INF 格式文件支持中文提示及中文鍵名。這些中文鍵名不僅充當功能鍵起索引的作用,還形象化地標識了鍵的前后對應關系,增強了文件內容的可讀性,有利于后續更改、維護。

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

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

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

posted on 2007-01-25 09:08 小不懂^_^ 閱讀(1564) 評論(0)  編輯 收藏 引用

只有注冊用戶登錄后才能發表評論。
網站導航: 博客園   IT新聞   BlogJava   博問   Chat2DB   管理


青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            日韩亚洲成人av在线| 欧美日韩p片| 亚洲男人的天堂在线aⅴ视频| 欧美一区二区三区啪啪| 99国产一区| 久久久www成人免费毛片麻豆| 亚洲午夜国产成人av电影男同| 快播亚洲色图| 久久久久综合| 国产视频在线一区二区| 制服丝袜激情欧洲亚洲| 一区二区三区精品国产| 欧美福利在线观看| 亚洲国产va精品久久久不卡综合| 国产日韩三区| 欧美一区二区三区另类 | 在线观看日韩专区| 亚洲主播在线观看| 亚洲欧美日韩另类| 欧美午夜精品理论片a级按摩| 亚洲国产小视频| 亚洲国产精品成人精品| 久久女同互慰一区二区三区| 久久综合狠狠综合久久综合88| 国产小视频国产精品| 亚洲欧美在线看| 久久久久网址| 亚洲电影视频在线| 噜噜噜在线观看免费视频日韩| 免费亚洲视频| 亚洲毛片在线免费观看| 欧美日本不卡| 在线视频你懂得一区| 亚洲欧美另类国产| 国产欧美日韩视频一区二区| 性色一区二区三区| 蜜桃伊人久久| 日韩亚洲不卡在线| 国产精品久久久一区麻豆最新章节 | 欧美精品一区二| 亚洲精品国产精品乱码不99| av成人免费在线| 欧美系列亚洲系列| 午夜精品久久久久99热蜜桃导演| 久久av资源网| 亚洲高清视频一区二区| 欧美乱人伦中文字幕在线| 99精品久久久| 久久婷婷人人澡人人喊人人爽| 在线免费日韩片| 欧美日韩专区在线| 欧美一区二区三区久久精品茉莉花 | 亚洲国产成人精品视频| 在线亚洲伦理| 国产一区二区三区日韩欧美| 免费视频一区二区三区在线观看| 999在线观看精品免费不卡网站| 午夜天堂精品久久久久| 在线不卡视频| 国产精品chinese| 久久欧美中文字幕| 亚洲夜间福利| 欧美国产精品劲爆| 亚洲欧美日本伦理| 91久久久久| 国产亚洲一区二区在线观看 | 久久影视精品| 夜夜嗨网站十八久久| 久色婷婷小香蕉久久| 亚洲最新在线视频| 国内精品久久久久影院色| 欧美激情一区二区在线 | 亚洲男人第一网站| 亚洲激情在线激情| 国产亚洲精品bt天堂精选| 欧美福利一区| 久久精品国产99国产精品澳门| 日韩视频―中文字幕| 欧美国产精品久久| 久久久久国产精品厨房| 午夜精品久久久| 一本色道久久88综合日韩精品| 永久久久久久| 国产婷婷色一区二区三区| 欧美四级剧情无删版影片| 欧美成人午夜| 久久久久久夜精品精品免费| 亚洲综合国产激情另类一区| 亚洲欧洲一区二区三区久久| 久久资源在线| 久久久久国产一区二区| 欧美一级日韩一级| 亚洲一区二区在| 一区二区三区久久精品| 亚洲精品欧美精品| 91久久国产综合久久| 在线日韩中文字幕| 国内精品**久久毛片app| 国产女人精品视频| 国产欧美91| 国产乱码精品| 国产精品亚洲综合久久| 国产精品日韩一区| 国产精品女主播一区二区三区| 欧美精品一区二区三区在线看午夜| 噜噜噜躁狠狠躁狠狠精品视频| 久久精品99无色码中文字幕| 久久精品国产亚洲aⅴ| 欧美在线999| 久久久久久尹人网香蕉| 农村妇女精品| 欧美精品尤物在线| 欧美日韩精品免费观看视一区二区 | 香蕉免费一区二区三区在线观看 | 欧美怡红院视频一区二区三区| 亚洲免费一在线| 午夜老司机精品| 久久九九久精品国产免费直播| 久久精品水蜜桃av综合天堂| 久久黄金**| 免费短视频成人日韩| 欧美激情在线有限公司| 亚洲麻豆视频| 亚洲欧美中文日韩v在线观看| 久久黄色小说| 欧美成人午夜激情在线| 欧美三区不卡| 国产亚洲欧美一区| 亚洲福利免费| 亚洲在线成人| 久久久www成人免费精品| 欧美成人精品影院| 亚洲精品欧美日韩专区| 亚洲一区精品电影| 久久亚洲国产成人| 欧美精品激情blacked18| 国产精品日韩一区二区| 精品二区视频| 在线一区二区三区四区五区| 欧美一区亚洲一区| 亚洲成在人线av| 亚洲天堂av高清| 免费一级欧美片在线播放| 欧美三级网址| 亚洲二区视频在线| 亚洲欧美国产va在线影院| 久久久国产一区二区三区| 欧美激情性爽国产精品17p| 亚洲午夜黄色| 嫩草影视亚洲| 国产婷婷97碰碰久久人人蜜臀| 亚洲美女在线国产| 久久精品99国产精品日本| 亚洲欧洲日本专区| 久久久久久久999精品视频| 欧美日韩久久久久久| 激情丁香综合| 亚洲午夜女主播在线直播| 免费观看成人www动漫视频| 一本色道久久88综合日韩精品| 久久精选视频| 国产乱码精品一区二区三区忘忧草| 亚洲国产视频一区| 久久久99免费视频| 亚洲特级毛片| 欧美日韩福利在线观看| 亚洲国产岛国毛片在线| 欧美一区二区三区视频在线| 亚洲人成网站777色婷婷| 久久久久一区二区| 国产午夜精品美女毛片视频| 亚洲无限av看| 91久久国产综合久久| 老司机一区二区三区| 狠狠v欧美v日韩v亚洲ⅴ| 午夜在线电影亚洲一区| 99视频在线观看一区三区| 欧美国产日韩一区二区在线观看 | 国产日韩一级二级三级| 亚洲一区二区av电影| 最新中文字幕亚洲| 欧美国产另类| 亚洲精品在线观看免费| 欧美xx视频| 美女图片一区二区| 亚洲国产精品第一区二区| 久久人人精品| 久久视频精品在线| 精品999在线播放| 乱码第一页成人| 久久婷婷蜜乳一本欲蜜臀| 亚洲第一狼人社区| 欧美成人激情视频| 免费欧美日韩国产三级电影| 亚洲福利视频二区| 欧美黄色影院| 欧美人牲a欧美精品| 亚洲视屏一区| 小处雏高清一区二区三区| 国产亚洲观看|