BinPatch 本來就可以產生 Windows 介面,只要加上一個參數就行,底下是網友 Jonson 對 BinPatch 所寫的簡單教學:
大家好,我是 Jonson
由於上次公佈的說明,有部份遺漏,故此次補上完整的說明
這一次 BinPatch 說明新增加以下部份指令: ============================================================================= History Patch (又名為 Multiversion Patch) 多重 Patch 說明,以及 -l -m -q -s -v -z 等指令介紹。
-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- BinPatch 3.0g 簡易說明 Written by Johnson Wu E-mail:[email protected] Date: 1999/4/2 作者網站: http://www.kayhayen.com =============================================================================
BinPatch 是一套由德國人 Kay Hayen 所研發的一套檔案 patch 程式,目的是讓使用者 根據兩個新舊版本檔案之間的差異來產生一個小體積的檔案 (簡稱為 patch 檔), 而其 他人只需要利用這個小檔案即可將舊版的檔案轉換為新的版本!
聽起來蠻不錯的,但是也許有人會說:這有何稀奇! 隨便上網抓就有一卡車的軟體能夠 做 patch 檔…
的確,幾個比較有名的軟體例如:RTPatch, WinPatch, MDIFF...等都有相當數量的支持 者,不過既然是介紹 BinPatch,那得替 BinPatch 提出有力的證明才行啊。
因此我作了一份表格讓您比較一下:
┌─────┬───────┬───────┬─────┬──────┐ │ │ BinPatch │ RTPatch │ WinPatch │ MDIFF │ ├─────┼───────┼───────┼─────┼──────┤ │使用簡易性│ 容易 │ 麻煩 │ 適中 │ 容易 │ ├─────┼───────┼───────┼─────┼──────┤ │適用的作業│DOS,Win31/95/ │DOS,Win31/95/ │ Win95/98 │DOS,Win95/98│ │平台 │98/NT,OS/2, │98/NT,OS/2, │ │ │ │ │Linux │Linux 及其它..│ │ │ ├─────┼───────┼───────┼─────┼──────┤ │自動搜尋檔│ 可以 │ 可以 │ 不能 │ 不能 │ │案 │ │ │ │ │ ├─────┼───────┼───────┼─────┼──────┤ │自動搜尋登│ │ │ │ │ │錄檔 │ 可以 │ 可以 │ 不能 │ 不能 │ ├─────┼───────┼───────┼─────┼──────┤ │命令列或是│ │ │ │ │ │GUI 介面 │ 均有 │ 均有 │ 僅有 GUI │ 只有命令列 │ ├─────┼───────┼───────┼─────┼──────┤ │產生的檔案│ │ │ │ │ │大小 │ 小 │ 很大 │ 很大 │ 中等 │ ├─────┼───────┼───────┼─────┼──────┤ │具備有多重│ │ │ │ │ │patch 功能│ 能 │ 能 │ 不能 │ 不能 │ └─────┴───────┴───────┴─────┴──────┘
參考上面的表格之後,您是否對 BinPatch 燃起了一點信心呢?
底下我們示範一組基本的用法:
GenPatch c:\old c:\new patch ---+---- --+--- --+--- --+-- | | | | | | | 要產生的 patch 檔名 | | 新的檔案 | 原始檔案 BinPatch 主程式
以上命令將會比較 c:\old 以及 c:\new 兩個目錄下所有的檔案 (包括子目錄),並且按 照比較的結果產生一個名稱為 patch.utp 的檔案,請注意:副檔名 .utp 是程式自動加 上去的,所以不需要自行添加。
讀到這裡,您可能會感到奇怪為何產生的檔案並非是執行檔(.exe)呢? 因為上面的例子 只是簡單的用法, .utp 格式的 patch 檔因為不能做自動修改檔案的動作,所以必須要 套用 BinPatch 的另一個附加程式 DoPatch.exe,其使用的方法如下:
DoPatch test.utp
請注意:使用 DoPatch 時,使用者必須要指定一個完整的檔名,因此 .utp 也要自行加 入才可以。
那怎麼做才能產生我們要的自動修改檔 (SelF-Applying, 以下簡稱為 SFA) 呢?
介紹您認識第一個參數之前有件非常非常重要的事要告訴您, 在 BinPatch 中所有的參 數都有大小寫的區別,例如: -a 和 -A 是不同的參數,請務必記得喲!
Ok, "-s" 是您一定要記得的參數,它的功能就是產生 SFA 檔。 底下是範例:
GenPatch c:\old c:\new patch -s
由上面的例子我們可以得到 patch.exe 檔。
不過,還有一個問題,原始的檔案被 patch.exe 修改完之後,這些舊檔案會躲到那裡去 呢? 若改檔順利的話,原始檔案一定會存放在該軟體所在的位置中名稱為 "backup" 的 目錄下。例如,在 c:\test 修改檔案,則原始檔案最後將存放在 c:\test\backup 下。 "backup" 這個目錄是 patch 檔案之後 SFA 自己產生的,您可別笨笨的先去給他造一個 喔! :-)
另一個有用的功能稱為 "History Patch" 又稱為 "多重 Patch"。何謂 "多重 Patch"? 我們時常看過許多的軟體在推出新的版本時, 該公司會在網站上提供升級檔讓使用者下 載,例如:升級檔的使用說明會陳述到… "本程式僅供 1.1, 1.2 及 1.5 版的使用者升 級到 2.0 版…",很顯然,這個 patch 檔並不只針對單一的版本升級,而是3個版本的 用戶都適用。
BinPatch 也提供這種強大的功能! 怎麼做呢? 方法很簡單,我們以上面提到的情況來 示範 "多重 Patch" 的用法:
GenPatch c:\v11 c:\v12 c:\v15 c:\v20 upgrade -s ------ ------ ------ ------ 1 2 3 4
第 1、2、3 組目錄存放各個不同版本的檔案, 最後一組(4)放新版的檔案,這樣所 產生的 patch 檔 (upgrade.exe) 就能讓擁有三種不同版本的使用者升級到 2.0 版了!
看到這裡的讀者先恭喜您,已經畢業啦! 基本上,只有 -s 這個參數也已經很夠用了, 因此我將這整個說明劃分為兩部份, 從以下開始後半段是其它參數使用介紹,若是有空 您也可以參考一下。 ───────────────────────────────────────
BinPatch 3.0g 參數使用說明 ==========================
參數名稱 原英文名稱 用途說明 -------- ---------------- --------------------------------------------------- -a All 讓 BinPatch 處理所有的檔案。 加上 -a 可以一併處理隱 藏檔。 -------- ---------------- --------------------------------------------------- -b Backup 指定原始檔案所要存放的目錄。 若不加上此參數則預設的 目錄為 "Backup"。
範例: -b="Backup Directory" -b=OldFiles -------- ---------------- --------------------------------------------------- -c Comment 將 patch 檔加上檔頭註解文字。 在 patch 檔執行時會先 秀出來讓使用者觀看。
範例: -c="註解的上限為 10 x 76 個字元\n可以換行。" [email protected]
註 1: "\n" 是特殊控制符號,可讓註解自動換行。 註 2: "@comment.txt" 指定 comment.txt 檔的內容做為 註解。 -------- ---------------- --------------------------------------------------- -d Delete 在 patch 檔案時,刪除指定的檔案。
範例: -d="a secret file.doc" -d=security.sys -d=file*.hlp -------- ---------------- --------------------------------------------------- -j 無 BinPatch 內建有壓縮系統, 所以製造出來的 patch 檔實 際上都已經壓縮過了, 如果您為了某些理由不願意壓縮, 則可以使用 -j 取消壓縮的功能。 -------- ---------------- --------------------------------------------------- -k Key 這是 BinPatch 非常重要的功能, 此功能又稱為:登錄檔 搜尋(registry searching)。
當我們將製作好的 patch 檔丟給其他人用時,必須要考慮 到使用者在使用上的便利性, 如果能讓使用者不必煩惱要 在那一個目錄下使用, 只要一執行 patch 檔就能為我們完 成所有的事情, 那不是很方便嗎?
通常軟體安裝之後, 都會在登錄檔裡頭留下檔案存放的路 徑。
在此我們假設以登錄編輯器找到一個 key 為: "HKEY_CURRENT_USER\Software\My Program"
假設其 key 的名稱 (key name) 為: "InstDir" 假設其 key 的值 (key value) 為: "C:\Program Files\My Application"
則使用以下命令可讓 patch 檔執行時擷取該 key 的值: -k="HKEY_CURRENT_USER\Software\My Program\InstDir"
則結果會讓 BinPatch 自動切換到: "C:\Program Files\My Program" 目錄下修改檔案。
又假設在 HKEY_CURRENT_USER\Software\My Program" 這個 key 之中含有一個預設值 (default)。則可用下列命 令讓 BinPatch 自動擷取此值: -k="HKEY_CURRENT_USER\Software\My Program\"
眼尖的人會發現多了一個 "\" 符號, 而加上 "\" 意思就 是讀取預設值(default)。 (註:當registry中有空白時, 需加上"") -------- ---------------- --------------------------------------------------- -l Log file 將 BinPatch 產生 patch 檔的過程存到記錄檔(log)中。 假設 patch 檔的名稱為 test.exe 則 log 檔將命名為: test.log。
範例: -l=txt -l=htm -l
註 1: "txt" 是指建立純文字型態的 log 檔。 註 2: "htm" 表示所建立的 log 檔為 html 格式。 註 3: 不指定 log 型態則預設為 txt 檔。 -------- ---------------- --------------------------------------------------- -m Memory 限制 BinPatch 建立 patch 時所需要使用的記憶體。
範例: -m=6 -m=99
註 1: -m=n,n 的值範圍可由 5-100,值越大則 BinPatch 使用的記憶體越少, 但相對的也會減慢建立 patch 檔的速度。 註 2: 預設值為 5。 -------- ---------------- --------------------------------------------------- -q Quiet 建立 patch 檔的過程中僅量不顯示相關的訊息在螢幕上。 -------- ---------------- --------------------------------------------------- -s Self-applying 建立 SFA patch 檔(副檔名為 .exe)。
範例: -s=gui32 -s=gui16 -s
註 1: gui32 表示建立 Windows 95/98/NT 具有視窗操作 介面的 SFA。 註 2: gui16 為建立 Windows 3.1 視窗介面的 SFA。
註 3: 只有 -s 表示建立 DOS 或 Windows 95/98 DOS 型 態的 SFA。
※ 目前並不建議您使用 gui32 或 gui16 模式, 因其視 窗中所顯示的字型還不能調整或設定 (醜醜的),作者 已經承諾將改進這個缺點。 -------- ---------------- --------------------------------------------------- -t Time 在建立 patch 檔的過程中, BinPatch 會將所有被處理的 新檔案的日期記錄在稍後製造的 patch 檔中,而之後當使 用者執行 patch 時, BinPatch 則使用這些記錄一併把被 修改的檔案日期變更到與當初製造者的檔案日期一致。 -t 參數是用來改變 BinPatch 對檔案日期處理的方式。
範例: -t=n (n = now) -t=l (l = latest)
註 1: "n" 表示直接以目前的日期/時間作為修改後的新檔 案日期。 註 2: "l" 以最接近現在日期的檔案為準, 其它檔案的日 期全部與該檔案一致。 -------- ---------------- --------------------------------------------------- -u Unimportant File 顧名思意,就是指定哪些檔案是不重要的。 也就是說修改 檔案時, 若該檔案不存在、版本不符合或者只是一個小小 的文字檔時會導致 BinPatch 跳過這些檔案不予處理。
註:在正常情況下 BinPatch 遇到條件不符的檔案時會停止 修改的動作, 並且中斷程式的執行,所以使用 -u=*.* 或 -u 可以避免這種情形發生。
範例: -u="unimportant files.doc" -u=program.exe -u=*.txt -u=*.* 與 -u 意思相同 -------- ---------------- --------------------------------------------------- -v Version 顯示 BinPatch 的版本相關資訊。 -------- ---------------- --------------------------------------------------- -z 無 將所建立的 patch 檔以指定的壓縮程式予以壓縮。 -z 參數目前支援下列的壓縮程式:
InfoZip、LHA、RAR、GZip、PKZip、ARJ 和 JAR。
不過使用時請另加上 -j 參數來取消 BinPatch 內建的壓縮 功能, 否則造成重覆壓縮反而會使得 patch 檔更大,還有 不管是指定那一種壓縮程式,使用前必須先確定您的電腦中 有這個壓縮程式的存在,而且要放在系統能抓得到的路徑下 才有作用。
範例: -z=RAR -z=ARJ ───────────────────────────────────────
|