軟體更新套件的製作方法 - PCZONE 討論區

返回   PCZONE 討論區 > ▲ -- 電 腦 軟 體 討 論 區 > -- Windows 討 論 版


PCZONE 討論區



通知

-- Windows 討 論 版 包括 Windows 95/98/ME、Windows NT/2000/XP/Server 2003 等的疑難雜症解答與經驗分享。

あなたの家に行く
軟體更新套件的製作方法
常見的軟體更新套件類型,如下圖所示:



第一種封裝,可用 IExpress 製作。原始檔案名稱為 WEXTRACT.EXE。
第二種封裝,用於 2000/XP/2003 系統更新。原始檔案名稱為 SFXCAB.EXE。
第三種封裝,搭配 Windows Installer 引擎,進行軟體更新。

欲製作第二種封裝,簡易步驟如下:

(1) 任選一個 Windows 更新,例如 KB2454533,用 HxD 等軟體編輯,取出自解壓模組。
(2) 任選一個 Windows 更新,例如 KB2419632,用 /x 參數解出檔案。
(3) 解出的檔案,用 cabarc 重新壓縮。範例指令:cabarc -m lzx:21 -p -r n test.cab *。
(4) 將自解壓模組和壓縮檔合併,生成自解壓縮檔。範例指令:copy /b cab1.sfx + test.cab test.exe。
(5) 執行預先準備好的命令腳本,使自解壓縮檔成為自解安裝檔。依據預設,執行 update\update.exe。
(6) 執行自解安裝檔,驗證功能是否正常。

參考連結:
(1) IExpress 軟體更新套件的命令列參數
(2) Windows 軟體更新套件的命令列參數
(3) Microsoft 軟體更新套件的命令列參數
(4) Legacy Windows セキュリティ支援サイト (for Win2000 SP4/XP SP2)

上傳的附加檔案
檔案類型: 7z files.7z (1.62 MB, 8 次觀看)
回覆
あなたの家に行く

自解檔修改了數次,測試約 1000 個樣本,雖然無法達到零錯誤,不過已經是自己現有知識的程度,剩下的只能詢問程式碼專家,或是製作補丁的微軟公司。

歸納測試時所發現的問題和心得:

(1) 每個更新套件,其自解壓模組仍有少許相異之處。意思也就是,每個更新套件,都要建立一個適用於該更新套件的自解壓模組。
(2) 壓縮類型可以用 none 和 lzx:21。不支援 mszip 壓縮。
(3) 檔案大小的限制。例如,執行檔 (429056) - 自解壓模組 (38400) = 壓縮檔 (390656)。推測是 (1) 的緣故。
(4) 用微軟 delta 壓縮技術建立的檔案,先用一般的解壓縮軟體展開檔案,接著以 apatch.exe 程式,依據 _sfx_manifest_ 此檔案的描述,手動驗證一次。
(5) 2000/XP/2003 的 _sfx_*._p 修補檔,其魔術數字為 PA19。(Vista/7/2008 的情況,其魔術數字為 PA30。)
(6) 用 mpatch.exe 程式,模擬修補檔製作過程。經過多方嘗試,修補檔還是無法得到和官方一樣的 md5 值。
上傳的附加檔案
檔案類型: 7z files.7z (1.66 MB, 4 次觀看)
回覆
會員
回覆: 軟體更新套件的製作方法
感謝分享 ^_^
回覆
--帳號停用中--
回覆: 軟體更新套件的製作方法
引用:
作者: 琥珀 觀看文章
(5) 2000/XP/2003 的 _sfx_*._p 修補檔,其魔術數字為 PA19。(Vista/7/2008 的情況,其魔術數字為 PA30。
這篇好像跟我發的那篇類似阿

琥珀兄也開始製作了阿?

魔術數字是啥東西呢?

我在想

不知道還有無有人保留 sp2到sp3之間的hotfix

雖說每個hotfix包之間可能有

1.安裝順序不同

2.註冊檔的修正

這兩點要留意

可是最後hotfix都會整合成service pack

把service pack 簡單的歸納後

service pack 做的事情不外是

1.更新檔案

2.更新註冊檔

但是service pack在安裝或整合時

是整個直接安裝到系統內或整合到i386內的

這樣反推hotfix可能會有'安裝順序問題'

我是很存疑的

所以如果有 sp2到sp3之間的hotfix

直接用hotfix內的檔案來替換sp2安裝包內的檔案

再用個這安裝包整合

就可以知道

偽sp3安裝包(在SP2基礎上搭配hotfix) 與 正統的sp3安裝包有多大差別

如果沒差別

就可以使用sp3安裝包製作偽sp4了
回覆
散人
回覆: 軟體更新套件的製作方法
真是超厲害的技術文件討論,佩服佩服.....先收下了,謝謝分享。
回覆
あなたの家に行く

用 16 進制編輯器打開 2k/xp/2k3 的 patch 檔案,可以看到「PA19」字樣。

因為想做一個 Update Rollup 1 for Windows XP Service Pack 3,便要對整個安裝流程、檔案分布結構、如何撰寫或修改,一個一個解決。微軟有一篇文章,「Inside Update.exe - The Package Installer for Windows and Windows Components」,當時找了很久才找到存檔資料。

微軟的專利:
System and method for intra-package delta compression of data
Framework for content representation and delivery

對於 Windows 的修補,為了減少資料的下載量,以及重新啟動的次數,用了以下方法:

更新套件不再使用 exe 形式。更新程式 (update.exe 或 wusa.exe) 直接寄放在系統裡。
因為不使用 exe 形式,自然就不需要自解壓模組。
啟用 delta 壓縮,而非一般的檔案壓縮。
啟用 HotPatching 技術。

以 XP 為例,稍微計算一下:

自解壓模組,約 40K。
更新模組,約 400K。

亦即每多下載一個 exe 檔案,至少就得耗費掉 440K 的空間和頻寬,而 220 個更新就有 96800K。以現今的技術來看,對於一般人確實是不痛不癢的數字,不過對於國際性的網站經營和軟體更新服務來說,能省多少是多少。

當然,patch/diff/delta 的概念,在 unix 時代就有了,不是微軟的獨創。不過,只要是微軟相關的更新,無論喜歡與否,用 apatch (+mspatcha.dll) 和 mpatch (+mspatchc.dll) 準沒錯。
回覆
--帳號停用中--
回覆: 軟體更新套件的製作方法
這個是我嘗試做的PreSP4

http://www.pczone.com.tw/vbb3/thread/3/152486/

看來方法類似(相同?)

這是IE8直接整合更新安裝

http://www.pczone.com.tw/vbb3/thread/25/152361/

只不過為了簽章問題

都還沒有動到update.inf的改寫

ms蠻奇特的

有些更新只更新檔案本身

註冊檔部分卻沒有完全更新

例如 遠端桌面部分

其實從RDP6.1開始的update.inf裡面本來就有加入連接遠端加密驗證電腦的

只是ms推出時把那幾行使用;註解掉了

回覆
主題工具







 XML   RSS 2.0   RSS 
本站使用 vBulletin 合法版權程式
站務信箱 : [email protected]

本論壇所有文章僅代表留言者個人意見,並不代表本站之立場,討論區以「即時留言」方式運作,故無法完全監察所有即時留言,若您發現文章可能有異議,請 email :[email protected] 處理。