史萊姆論壇

返回   史萊姆論壇 > 教學文件資料庫 > 應用軟體使用技術文件
忘記密碼?
論壇說明

歡迎您來到『史萊姆論壇』 ^___^

您目前正以訪客的身份瀏覽本論壇,訪客所擁有的權限將受到限制,您可以瀏覽本論壇大部份的版區與文章,但您將無法參與任何討論或是使用私人訊息與其他會員交流。若您希望擁有完整的使用權限,請註冊成為我們的一份子,註冊的程序十分簡單、快速,而且最重要的是--註冊是完全免費的!

請點擊這裡:『註冊成為我們的一份子!』

Google 提供的廣告


 
 
主題工具 顯示模式
舊 2006-07-24, 03:38 PM   #1
psac
榮譽會員
 
psac 的頭像
榮譽勳章
UID - 3662
在線等級: 級別:30 | 在線時長:1048小時 | 升級還需:37小時級別:30 | 在線時長:1048小時 | 升級還需:37小時級別:30 | 在線時長:1048小時 | 升級還需:37小時級別:30 | 在線時長:1048小時 | 升級還需:37小時級別:30 | 在線時長:1048小時 | 升級還需:37小時
註冊日期: 2002-12-07
住址: 木柵市立動物園
文章: 17381
現金: 5253 金幣
資產: 33853 金幣
預設 軟體 - 安裝程序 Repack 攻略 之 MSI 篇

安裝程序 Repack 攻略 之 MSI 篇
本文主要討論使用微軟的開發工具 orca 和 msidb 進行 MSI 安裝包的修改封裝.
下面是我對 MSI 的基本情況的認識,如果只想瞭解怎麼進行 Repack,也可以跳過這一部分。

MSI 概述
MSI 最基本的部分是對安裝程序的一個描述,包含了一個所謂安裝訊息資料庫,涉及到安裝界面、所使用的文件、建立捷逕、INI文件、註冊表、以及版本控制和反安裝訊息等。
對於安裝時所使用到的文件,MSI 可以有 3 種方式來處理:
文件隨同安裝程序以原生態發佈
文件壓縮成 Data.cab 的形式隨安裝程序發佈
文件壓縮成 .cab 文件後注入到 .msi 文件中
顯而易見,一般安裝程序很少以第一種方式發佈,而第二種和第三種比較一般。
對於注入到 .msi 文件中的情況,需要首先用 orca 找出 Media 的描述值,然後用 msidb 將 .cab 從 .msi 中抽取出來,如果直接以 Data.cab 形式發佈就可以省去這一步操作。
如果要增加移除或是取代 .cab 中的文件,需要先用 orca 找出文件對應的描述值(可能就是檔案名本身或是一串HEX編碼抑或兩者的結合),然後將 .cab 文件解包,按照描述值的檔案名來操作文件後再用 cabarc 重新打包回去。
如果 .cab 是從 .msi 抽取的,再用 msidb 重新編入。
顯而易見,一般安裝程序很少以第一種方式發佈,而第二種和第三種比較一般。
對於注入到 .msi 文件中的情況,需要首先用 orca 找出 Media 的描述值,然後用 msidb 將 .cab 從 .msi 中抽取出來,如果直接以 Data.cab 形式發佈就可以省去這一步操作。
如果要增加移除或是取代 .cab 中的文件,需要先用 orca 找出文件對應的描述值(可能就是檔案名本身或是一串HEX編碼抑或兩者的結合),然後將 .cab 文件解包,按照描述值的檔案名來操作文件後再用 cabarc 重新打包回去。
如果 .cab 是從 .msi 抽取的,再用 msidb 重新編入。
本文以修改 RemotelyAnywhere.msi 為例進行操作說明,目標是用 RemotelyAnywhere 修正檔取代安裝包中的原文件,同時將購買的許可傳輸協定整合在安裝包內,達到安裝完畢後直接可以使用的效果:
1. 使用 orca 開啟 RemotelyAnywhere.msi ,選項 TOOLS 表單的 OPTIONS 指令,切換到 DATABASE 面板,勾
選「Generate a unique Package Code each time a database is saved」,然後執行 File 表單的 Save as 指令,把 RemotelyAnywhere.msi 文件另存為 ra.msi 文件。
2. 使用 orca 開啟 ra.msi ,在左側 Tables 中選項 Media ,在右側 Cabinet 列可以看到壓縮包名稱為 #data.cab ,記下,關閉 orca。
3. 使用 msidb 從 ra.msi 中抽取 data.cab:
代碼:
msidb.exe -x data.cab -d ra.msi
4. 將 data.cab 中的文件展開:
代碼:
·建立 files 目錄
md files
·展開文件到 files
expand data.cab -F:* files
·移除 data.cab
5. 將修正檔文件 RemotelyAnywhere.exe 複製到 files 目錄中覆蓋原文件。
6. 將文件重新打包成 data.cab :
代碼:
cabarc.exe -m LZX:21 -r N data.cab "files\*"
7. 將 data.cab 編入 ra.msi 中:
代碼:
msidb.exe -a data.cab -d ra.msi
8. 使用 orca 開啟 ra.msi ,在左側 Tables 中選項 Registry ,在右側工作區點右鍵,選項 Add Row,按以下內容輸入各列:
代碼:
[Registry] REGISTRY_LICENSE
[Root] 2
[Key] Software\RemotelyAnywhere\V5
[Name] License
[檔案類型] -----BEGIN LICENSE-----
PRODUCT RemotelyAnywhere...
[Component] Service_Files
這裡是自己的編撰了一個註冊表項用於安裝時自動輸入許可文件,檔案類型 欄的內容就按你購買的 License 的內容輸入即可。
9. 使用 orca 儲存完成後的 MSI,收工。
PS: 本文中因為只涉及取代文件,所以沒提及增減文件的操作,如果有需要這方面的操作,首先應在操作 cab 包時增減文件,並用 orca 開啟 msi 文件對以下資料表項進行調整:FeatureComponents、File,具體操作在此不贅述,遇到具體案例時可以聯繫我,到時根據實戰再修改此貼。
TIPS: 如果安裝程序是由 Setup.exe Data1.cab 等一系列文件組成的,你還可以使用 InstallShield 的 Pakage For The Web 來將其打包成單個文件,同樣,如果原始安裝程序是 InstallShield 製作的單個文件,不妨試一試用右鍵開啟,WinRAR 可以將其解壓還原出多個文件。
文中提及的工具:CabArc
msidb
orca
資源列表共
__________________
http://bbsimg.qianlong.com/upload/01/08/29/68/1082968_1136014649812.gif
psac 目前離線  
送花文章: 3, 收花文章: 1631 篇, 收花: 3205 次
舊 2006-07-24, 03:38 PM   #2 (permalink)
榮譽會員
 
psac 的頭像
榮譽勳章
UID - 3662
在線等級: 級別:30 | 在線時長:1048小時 | 升級還需:37小時級別:30 | 在線時長:1048小時 | 升級還需:37小時級別:30 | 在線時長:1048小時 | 升級還需:37小時級別:30 | 在線時長:1048小時 | 升級還需:37小時級別:30 | 在線時長:1048小時 | 升級還需:37小時
註冊日期: 2002-12-07
住址: 木柵市立動物園
文章: 17381
現金: 5253 金幣
資產: 33853 金幣
預設

安裝程序 Repack 攻略 之 CAB 篇

某些情況下我們需要對軟體的安裝程序包進行修改,取代其中的部分文件,也就是所謂 Repack。

本文討論採用.CAB壓縮包的安裝程序的拆解打包,主要是搜集工具,使用方法除了Install Shield的高版本描述稍多外,其他均為圖形介面程序,所以描述相對簡略,也沒有截圖(主要是因為我比較懶*^_^*)。

以下內容均系本人曰常實踐(Repack過的軟體有Symantec Ghost 7.5 中文版、Dr.eye 2005 專業版、智能狂拼III.3 專業版等),草草歸納,不當之處,敬請指正。

CAB 格式分類
·LZCAB 採用LZX編碼壓縮的CAB包,一般見於 Freeware
·MSCAB 微軟格式的CAB包,一般於微軟的程序,Symantec Ghost 7.5 安裝程序也採用此格式。
·ISCAB InstallShield製作的安裝包中使用,特徵是同時存在一個.hdr文件



LZCAB 拆解
·解壓
使用WinRAR即可解壓
·壓縮
使用CabPack打包,Compression Options選項 LZX


MSCAB 拆解
·解壓
使用WinRAR即可解壓
·壓縮
使用CabPack打包,Compression Options選項 MSZIP


ISCAB 拆解
InstallShield 的資料包一般格式為 data1.cab,同時有一個 data1.hdr,用於描述文件分組定義,如果文件較多,還會存在一個 data2.cab ,實際上是分割壓縮包。

ISCAB 6.0 以下的版本可以使用 ZIPSCAN 解壓,也可以使用 WinPack 進行文件的抽取和取代、增加。

高版本的 ISCAB 可使用 InstallShield 中提供的指令行工具進行操作,以InstallShield X為例,安裝InstallShield X後,從安裝目錄下的.\system中抽取以下文件:

程式碼:
ISCAB.exe
ISTools.dll
MediaBuild40.dll
之後可以脫離 InstallShield 執行。

* 為省去安裝 InstallShield 的麻煩,我已將抽取的文件打包為 iscabX.zip 作為附件上傳。

·首先要抽取安裝包結構訊息,使用指令行


ISCAB data1.cab -lx -iCAB.INI


將訊息輸出到 CAB.INI 文件,大致如以下的格式:
程式碼:
[ISCAB Info]
Product=ISCAB
Version=2.0

[Dat Files]
File1="Setup.dll"
...
·如果要從包中移除某些文件或者取代文件(也要先移除,然後再重新加入),應編輯匯出的 CAB.INI 文件,僅保留頭部描述段([ISCAB Info])和要移除的文件描述(注意,文件所在的組描述應保留,如 [Dat Files]),將編輯後的文件另存為 DEL.INI,使用指令行


ISCAB data1.cab -r -iDEL.INI



·如果要向包中增加文件,應將相應文件放置在當前目錄下,同時和 data1.cab 同目錄下的 setup.inx,setup.ini 等文件都必須存在。編輯匯出的 CAB.INI 文件,僅保留頭部描述段([ISCAB Info])和要加入的文件描述(注意,文件所在的組描述應保留,如 [Dat Files]),將編輯後的文件另存為 ADD.INI,使用指令行


ISCAB data1.cab -a -iADD.INI
psac 目前離線  
送花文章: 3, 收花文章: 1631 篇, 收花: 3205 次
 



發表規則
不可以發文
不可以回覆主題
不可以上傳附加檔案
不可以編輯您的文章

論壇啟用 BB 語法
論壇啟用 表情符號
論壇啟用 [IMG] 語法
論壇禁用 HTML 語法
Trackbacks are 禁用
Pingbacks are 禁用
Refbacks are 禁用


所有時間均為台北時間。現在的時間是 01:26 PM


Powered by vBulletin® 版本 3.6.8
版權所有 ©2000 - 2024, Jelsoft Enterprises Ltd.


SEO by vBSEO 3.6.1