* updated by Kii Ali, 12-11-2001 Date: Tue, 15 Dec 1998 03:33:32 +0800 From: Issac Chang Organization: My Info Company To: patch-author@cpatch.org Subject: (post) InstallShield 兩三事... Sender: patch-author-request@cpatch.org Resent-Message-Id: Resent-From: patch-author@cpatch.org X-Unsub: To leave, send text 'LEAVE' to ΥΥΥΥΥΥΥΥΥΥΥΥΥも廢言在前もΥΥΥΥΥΥΥΥΥΥΥΥΥ 對於軟體是否能掛上 For MS Windows 9X/NT 的 LOGO,MS 的要求中有一 項是「必須提供完整的安裝/移除介面」。 而目前的安裝製作軟體中,最廣為人知的大概就是 InstallShield 了吧 (註一)。InstallShield 是 InstallShield Software Corporation 這 家公司所製作,有興趣的朋友可以到 http://www.installshield.com 晃 晃。 ΥΥΥΥΥΥΥΥΥΥΥΥΥも檔案清單もΥΥΥΥΥΥΥΥΥΥΥΥΥ 程式開發者/設計師完成軟體的設計之後,接下來便是考慮將軟體散佈出 去了。儘管軟體設計得再好,若沒有一個友善的安裝/移除介面,那麼恐 怕在消費者的心目中也要打個折扣(註二)。 本文的目的並不是介紹如何將軟體用 InstallShield 包裝起來,而是要 介紹經過 InstallShield 包裝的軟體的一些相關概念。 一般來說,若您看到的軟體(未安裝前)有如下的檔案清單,那就可以確 定是用 InstallShield 3 包裝過的。而目前 InstallShield 5.5 也已面 市,經過 InstallShild 5.5 包裝的檔案名稱又有些許不同,不過這不是 本文所要探討的重點。 _SETUP.DLL 安裝程式(Setup.exe)執行時必須的 .DLL 檔 _ISDEL.EXE 此檔的功能是確定安裝暫存檔已正確被刪除 DATA.Z 軟體壓縮檔,您安裝的軟體都被包裝在此檔中(註三) _INST32I.EX_ 安裝程式所需檔案 _SETUP.LIB Setup Library File DISK1.ID 安裝程式所需檔案(磁碟編號檔) SETUP.EXE 安裝程式主執行檔 SETUP.INI 安裝程式所需檔案 SETUP.INS InstallShield 編譯過的安裝描述檔(Script file) SETUP.ISS 進行自動安裝(Silent Installlation)時所需的檔案 SETUP.PKG 包裝清單檔(Packing List) 小弟進行中文化的時候,專門喜歡挑被 InstallShield 包裝過的軟體開 刀(如最近的 McAfee VirusScan 3.16 Delux 與 MicroAngelo 98),在 此願與大家分享一下對 InstallShield 的一些心得。 如果大家有注意的話,DATA.Z 通常是上述檔案清單中最大的一個,因為 軟體的所有檔案全被壓縮在裡面。Setup.exe 負責將被包裝的軟體的檔案 們丟到軟體的預設安裝路徑(通常是 x:\Program Files\ProgramName 目 錄)。除此之外,Setup.exe 並負責將被包裝的軟體所需要的登錄項目寫 入到Windows 的登錄資料庫(Registry)。 Data.z 這檔案如果在安裝有 Winzip 的系統中會具有 Winzip 的圖示, 但是 Winzip 各種版本並無法解開 Data.Z 這種檔案類型,因為這種 .Z 檔的檔案格式並不是一般 Unix 上的 .Z 檔(?)。 要解開 InstallShield 的 .Z 這種壓縮檔格式,必須使用 Icomp.exe 這 支程式。您可以在 InstallShield Express BC++ 5.0 Edition 或者是在 InstallShield Express Delphi Edition 中找到 Icomp.exe。 解開 .Z 檔要做啥?中文化囉...中文化後呢再使用 Icomp.exe 把所有中 文化後的檔案壓回 .Z 檔,其他檔案如 _Setup.dll 與 Setup.exe 再中 文化一下,那就完美了。最後祭出 InstallShield EXE Builder 將那堆 哩哩扣扣的檔案包成一個執行檔,就有臉見人囉! ΥΥΥΥΥΥΥΥΥΥΥΥΥΥも註一もΥΥΥΥΥΥΥΥΥΥΥΥΥΥ 軟體安裝大約有幾項動作要完成: 1.複製軟體檔案到硬碟上。 2.修改登錄資料庫( Registry)。 3.修改檔案(如 Autoexec.bat、Config.sys、Win.ini、System.ini)。 除了使用 InstallShield 來包裝外,大約還有兩種方法: 1. 自行撰寫安裝程式,上述三動作全包辦(如 Symentec 系列軟體)。 2. 撰寫 .inf 檔呼叫 Windows 的 Setup API 完成上述三種動作(如 MS 的 Camcorder、Microsoft Word Viewer 97 與其他 MS 軟體便是使用 .inf 檔進行安裝,至於其包裝方法應是使用標準的 Self Extracting Cabinet File(?)。 ΥΥΥΥΥΥΥΥΥΥΥΥΥΥも註二もΥΥΥΥΥΥΥΥΥΥΥΥΥΥ 有時候反而比較偏愛那些沒有安裝程式的軟體,方便嘛,重灌破窗之後只 要再建一建連結便可以使用,反而比那些要安裝的軟體來得方便。 ΥΥΥΥΥΥΥΥΥΥΥΥΥΥも註三もΥΥΥΥΥΥΥΥΥΥΥΥΥΥ 軟體並不一定被 InstallShield 包裝在名為 Data.z 的檔案中,有時會 叫 _Setup.1 或 _Setup.2 或 _Setup.3 也說不定,不過通常是找檔案大 小最大的那一(幾)個就沒錯了。 ΥΥΥΥΥΥΥΥΥΥΥΥΥΥも無名もΥΥΥΥΥΥΥΥΥΥΥΥΥΥ G:\GTemp\~exb0000 「安裝一半中斷法」會看到的軟體目錄 G:\GTemp\_istmp0.dir 「安裝一半中斷法」會看到的軟體目錄 如果被 InstallShield 包裝的軟體再被 InstallShield EXE Builder 包 裝過,那麼執行安裝程式時,暫存目錄會看到 ~exb0000 裡面有 "檔案清 單" 部分所提到的檔案。 ※「安裝一半中斷法」語出 Kii Ali 「Nero 4005 暴力安裝法」一文。 ΥΥΥΥΥΥΥΥΥΥΥΥΥも廢言在後もΥΥΥΥΥΥΥΥΥΥΥΥΥ 弟是 Issac Chang,對於本文有任何問題的話,歡迎來信討論。 mailto:u2504249@mail2.scu.edu.tw mailto:xyz21960@ms22.hinet.net http://mail2.scu.edu.tw/~u2504249