複製鏈接
請複製以下鏈接發送給好友

txtsetup.sif

鎖定
Txtsetup.sif 是一個安裝信息文件 (sif), 主要用於 Windows 的文本安裝模式(就如其名). 而且, 它還可能會被其它的一些東西使用, 例如, Windows PE 啓動時也會用到它 (Windows PE 用到了文本安裝模式的末尾和 GUI 安裝模式的開始部分). 文本模式完成後, 這個文件就沒什麼用了; 它不會被複制到 Windows 安裝文件中 (GUI 安裝模式用到的安裝文件). 因為 Windows 不會用到它, 所以, 像是系統文件保護 (SFC) 這樣的功能就不會影響到它. 它也沒有數字簽名, 因此可以隨意修改它而不會出現問題。
外文名
txtsetup.sif
應用領域
用於 Windows 的文本安裝模式
可以利用 txtsetup.sif 向你的安裝文件中添加第三方驅動, 修改安裝Windows 的最小系統需求, 添加或刪除註冊表預設, 以及更多。
製作自己的安裝光盤,這個文件就必須仔細研究一下,有用的地方不少。txtsetup.sif是製作安裝光盤中極為重要的一個文件,裏面記錄了安裝文件所在位置以及安裝時文件拷貝的目標文件夾,實際作用其實就是把指定的文件按要求拷貝到預設好的位置上最可能用到的是以下幾段:
[SourceDisksNames.x86]——用代碼表示源文件的位置
[WinntDirectories]——用代碼表示文件拷貝的目標文件夾,其根目錄為 %WinDir%,即安裝指定的Windows文件夾
[SourceDisksFiles]——根據前面設定的代碼表示文件拷貝的具體細節
下面3段為集成 SATA、SCSI 等驅動時所用:
[HardwareIdsDatabase] —— 硬件標識
[SCSI.Load] —— SCSI驅動加載
[SCSI] —— SCSI設備説明
[HiveInfs.Fresh] —— 全新安裝時根據指定的 inf 文件中的字段添加註冊表信息
[HiveInfs.Upgrade] —— 升級安裝時根據指定的 inf 文件中的字段添加註冊表信息
若想把 txtsetup.sif 中的某行移除掉,那麼應該在此行前添加一個分號(;)或是把這行整個的刪掉,通常,把 txtsetup.sif 中的某行刪掉之後,那麼還需要把 dosnet.inf 中的對應行刪掉。如果想添加一行,那就比較複雜了,下面是 txtsetup.sif 的某個示例行:
locsecw.chm = 1,,,,,,,21,0,0,defrag.chm
locsecw.chm 是 Windows 安裝文件中的某個文件。
1 代表着它是個初始(RTM)XP 文件,通常你會看到 1 或 100,1 的定義來自於[SourceDisksNames.x86],表示源文件為原版本且在光盤上i386文件夾,100表示源文件為SP補丁中較新版本的文件,100 代表它是個SPx 文件(SP1,SP2..SPx);
21 代表着它的複製目的地,其相對於 %windir% 文件夾,在這裏,21 是讓安裝程序把 locsecw.chm 複製到 %windir%help。具體哪些值代表哪些目錄可以在 [WinntDirectories] 中找到。一般情況下,[WinntDirectories] 中定義的目錄都是相對於 %windir% 文件夾的子目錄,這就意味着你把文件添加到 txtsetup.sif 中,那麼它就會被複制到 %windir% 文件夾中(可能在其子文件夾中)。
第一個0為升級代碼位,含義為:(升級時)
0-總拷貝文件
1-安裝文件夾中有該文件才拷貝
2-安裝文件夾中有該文件時不拷貝;
3-不拷貝文件
第二個0為新安裝代碼位,含義同上(全新安裝時)另外據説此代碼若不為0,其前面需多加2個逗號
defrag.chm表示將目標文件改名為此,因此,這一行表明,不管是升級還是全新安裝都將源文件locsecw.chm拷貝到%WinDir%\help文件夾下並改名為defrag.chm,就如在示例中所看到的一樣,可以在行的末尾重命名要複製的文件。Microsoft 用它來區分 Windows XP Home 和 Pro 版。Home 的文件帶有P, Pro 的文件帶有 W。W 可能是代表着工作站(WorkStation) 的意思,P 可能是代表着個人版(Personal) 的意思,Windows XP Home 最初就叫做 Whistler Personal。
示例;
cmconW.chm = 1,,,,,,,21,0,0,cmconcepts.chm - xp pro txtsetup.sif
cmconP.chm = 1,,,,,,,21,0,0,cmconcepts.chm - xp home txtsetup.sif
就如所見的一樣,XP Home 和 XP Pro 的文件並不相同,但是最後複製到系統中的文件名稱都一樣。同時請注意,txtsetup.sif 支持長文件名
現在來看看另一行:
autofmt.exe = 1,,,,,,_x,2,0,0,,1,2
“_x”代表着這個安裝盤上的這個文件沒有經過壓縮,如果沒有這個,那麼安裝程序會認為這個文件已被壓縮過了。這個對於保證安全性和可靠性很重要。每個 XP 文件都被列在了“layout.inf”中,包括這個文件的大小(按字節計算),很明顯,一個文件的壓縮前和壓縮後的大小是不會相同的。如果“txtsetup.sif”告訴安裝程序“某個文件未被壓縮”,那麼安裝程序就會在“layout.inf”中查找它的文件大小以確保這個文件未經修改或是損壞。如果文件大小與“layout.inf”中記錄的不同,那麼 XP 安裝程序就會報錯並停止安裝。這個能夠保證安裝程序的安全性,以確定文件是否被修改過。它還能驗證文件是否已被損壞,如果文件已被損壞,那麼稍後安裝時就可能會出現問題。如果以“_x”為關鍵字在“txtsetup.sif”進行搜索,那麼就能找到所有未經壓縮的 Windows 安裝文件。
有個很重要的事情就是,txtsetup.sif 並沒有告訴安裝程序應當從哪裏獲取安裝文件。它唯一的功能就是把按照正確的文件名把文件複製到正確的目錄中。
舉例説明:
比如説,把 tweakui 集成到 Windows 安裝文件中,但是不想使用無人值守的方式。那麼利用 txtsetup.sif 可以很輕鬆地做到這點。
第一步:下載 Tweak UI:下載後,用 WinRAR 把 tweakui.exe 提取出來,或是先安裝這個程序再把windows\system32 中的tweakui.exe 複製出來;
第二步:把 tweakui.exe 複製到 XP 安裝文件所在的文件夾中,把 XP 安裝盤上的文件複製到硬盤上,然後把 tweakui.exe 放到 i386 文件夾中;
第三步:修改 txtsetup.sif 和 dosnet.inf,把以下行添加到 dosnet.inf 中:
d1,tweakui.exe
把以下行添加到txtsetup.sif 中:
tweakui.exe = 1,,,,,,,2,0,0
現在運行安裝程序,dosnet.inf 會把 tweakui.exe 複製到 C:\$WIN_NT$.~LSi386 中,接着重啓之後,就會進入文本安裝模式了,而 txtsetup.sif 會把 C:\$WIN_NT$.~LSi386 中的 tweakui.exe 複製到 C:\Windows\System32 中,當整個安裝進程完成之後,若要運行 tweakui.exe,那麼只需轉到 “開始”>”運行”>輸入:tweakui,點擊確定就行了。那為什麼不在新添加的行中使用“_x”呢?這是因為 tweakui.exe 不是 XP 的初始安裝文件,XP 不需要檢查它(因為它未在 layout.inf 中進行定義).
[B]利用“Txtsetup.sif”和“xpinstall”集成安裝打補丁[/B]
補丁以及xpinstall等相關文件準備好,放在同一文件夾下,並配置好“xpinstall.xml”(用xpinstall來安裝補丁比較美觀)。用WinRAR將這些文件做成自解壓壓縮文件“xp_patch.exe”,並在自解壓選項的模式中指定解包臨時文件夾和全部隱藏,以及指定“xpinstall”為解壓後運行的程序,用“makecab”壓縮該文件,並把文件拷貝到i386文件夾中
在 [SourceDisksFiles] 中添加:
xp_patch.exe = 1,,,,,,,1,0,0
在“winnt.sif”中的 [GuiRunOnce] 添加:
Command0="%WinDir%\xp_patch.exe"
硬盤安裝時,安裝程序會先利用“dosnet.inf”中的定義把文件複製到“C:\$WIN_NT$.~LS”中。然後,安裝程序才會利用 Txtsetup.sif 把這個文件夾中的文件複製到對應的文件夾中。因為只能利用“txtsetup.sif”把文件複製到“%windir%”文件夾下,所以它的用途有限,主要是用它來添加註冊表預設和驅動。
[B]用“txtsetup.sif”來添加自定義的註冊表條目[/B]
每次文本安裝模式即將結束時,安裝程序就會利用“txtsetup.sif”中的某些定義來創建註冊表(文件複製結束時)。如果是全新安裝的話,安裝程序就會按照“txtsetup.sif”的 [HiveInfs.Fresh] 區段中的定義來生成註冊表。可以使用這個區段來添加自己的註冊表條目。如果已經把註冊表的設置保存為一個“.reg”文件的話,那麼需要用“.inf”文件導入這些設置。將“.reg”文件重命名為“settings.reg”並將其置入 i386 文件夾中,將以下內容複製到一個新文件中並另存為 settings.inf,然後將其保存到 i386 文件夾中。
[Version]
Signature = "$Windows NT$"
DriverVer=07/01/2001,5.1.2600.1106
[update]
HKLM,"Software\Microsoft\Windows\CurrentVersion\RunOnce",
"MyUpdate",0x00020002,"%systemroot%\regedit.exe /s %systemroot%\system32\settings.reg"
[B]添加 inf 條目[/B]
如果已經有了一個“.inf”文件,那麼將其複製到 i386 文件夾中並將其重命名為“settings.inf”,並確保這個“.inf”文件中有個名為 [update] 區段,只有這個區段下的設置會被使用。
可以用 makecab.exe 把 settings.inf 壓縮成 settings.in_,但這只是可選的,添加方法是打開 txtsetup.sif 並轉到[HiveInfs.Fresh],按以下添加一行:
[HiveInfs.Fresh]
AddReg = hivedef.inf,AddReg
AddReg = hivesys.inf,AddReg
AddReg = hivesft.inf,AddReg
AddReg = hivecls.inf,AddReg
AddReg = hiveusd.inf,AddReg
AddReg = dmreg.inf,DM.AddReg
AddReg = settings.inf,update
再把以下 2 行添加到“txtsetup.sif”的 [SourceDisksFiles] 段下,如果要使用一個 .reg 文件,那麼就要添加第二行,不需要的只需添加第一行:
settings.inf =1,,,,,,_x,3,,3
settings.reg =100,,,,,,,2,0,0
把以下 2 行添加到“dosnet.inf”的 [Files] 段下,如果要使用一個“.reg”文件,那麼就要添加第二行,不需要的只需添加第一行:
d1,settings.inf
d1,settings.reg
現在開始安裝 XP,當文本安裝模式結束時就會導入註冊表設置了,不需要使用無人值守安裝方式。
[B]疑難解答[/B]
文本模式安裝程序所用的解釋引擎不同於 SetupAPI,因此,處理相關的“inf”文件時要小心點以免設置無效。當編輯用於文本安裝模式下用的“inf”文件時,應當遵循以下方針:
1 - 避免 strings. 就是那些在 [strings] 下定義的字符串,聽説在文本安裝模式下無法使用字符串;
2 - 總是使用引號,請儘可能地用引號括住設置;
3 - 避免縮寫,在一般的 inf 中可以使用 0x1 或 0x1002. 而在文本安裝模式下,以上值不起作用.;
4 - 避免不必要的空格,這個可能不是強制性的,但最好這麼做;
5 - 無法確定能用文本安裝模式 .inf 做什麼事情? 那麼請參考 hivesys.inf,hivesft.inf。
以下是 5 個不同的“.inf”設置,1 是正確的,而其它的則無法工作且文本模式安裝程序會報錯:
1 - HKLM,"SOFTWARE\Microsoft\Windows NT\CurrentVersion\Hotfix\KB826939","Installed",0x00010001,1
2 - HKLM,SOFTWARE\Microsoft\Windows NT\CurrentVersion\Hotfix\KB826939,"Installed",0x00010001,1
3 - HKLM,"SOFTWARE\Microsoft\Windows NT\CurrentVersion\Hotfix\KB826939","Installed",0x10001,1
4 - HKLM,"SOFTWARE\Microsoft\Windows NT\CurrentVersion\Hotfix\KB826939","Installed"",0x00010001,1
5 - HKLM,"SOFTWARE\Microsoft\Windows NT\CurrentVersion\Hotfix\KB826939",Installed,0x00010001,1
1 –此行沒有任何錯誤,注意第二段和第三段都用引號括住了,必須用引號將其括住;
2 –此行無法工作,因為第二段沒用引號括住;
3 - 此行無法工作,因為 0x00010001 被搞成了 0x10001,在正常情況下沒有問題,但是在文本安裝模式下,安裝程序就無法理解它的含義了,有所懷疑的話,請不要使用任何縮寫;
4 - 此行無法工作,因為 Installed 後有兩個引號;
5 - 此行無法工作,因為 Installed 沒有被引號括住。