關于 ? InstallShield ? Projects: ??
? ??
? InstallShield ? 可以創建三種類型的項目(Project) ??
? 1、InstallScript ? Project ??
? 2、InstallScript ? MSI ? Project ??
? 3、Basic ? MSI ? Project ??
? 前者完全是 ? InstallShield ? 自己的功能實現 ??
? 后兩者基于 ? Windows ? Installer,InstallScript ? MSI ? Project ? 在 ? Windows ? Installer ? 基礎上提供了一些 ? InstallShield ? 自己的擴展功能支持。 ??
? Basic ? MSI ? Project ? 完全基于 ? Windows ? Installer,制作出來的安裝程序完全符合W2K相關標準,因此比較適合在 ? Windows ? 域中使用。 ??
? InstallScript ? MSI ? Project ? 制作出來的安裝程序中可以見到 ? xxx.msi ? 文件。該 ? msi ? 文件離開了 ? InstallShield ? 的 ? engine ? 無法獨立運行。而 ? Basic ? MSI ? Project ? 的 ? msi ? 文件是可以獨立運行的(在域里面就知道好處了) ? :) ??
? ??
? InstallShield ? 做補丁的機制也與 ? MSI ? 補丁有區別。 ??
? ??
? ??
? ??
? 關于版本升級補丁和熱修復補丁: ??
? ??
? 說到做補丁,也有很多不同的方法 ??
? 1、很多如網絡游戲、瑞星等,安裝了某一個版本比如 ? 1.05,之升級動作是通過檢查有否更新的文件——驗證文件數字簽名(比如MD5摘要信息),但升級后的軟件是哪個版本呢? ??
? ??
? 一個軟件的版本實際上是組成該版本的所有特定版本文件的集合。 ??
? ??
? 1的方式可以用Winzip/Winrar等等做一個自解壓文件,或者在線升級程序下載新的文件覆蓋本地文件,甚至可以用補丁制作工具做成exe,在本地執行以二進制方式修改本地文件等等方式來實現。我見過瑞星工程師在域里就是用一個啟動腳本在客戶端運行服務器共享目錄里的批處理復制文件覆蓋本地文件... ??
? ??
? 2、Hotfix ??
? 類似于Windows的hotfix/servicepack這樣的方式的補丁,則是一種非線性的升級方式。與方式1類似,但hotfix方式并不是“升級”——Upgrade,更準確地說應該是“補丁”——patch。也就是說,在版本 ? V1.05 ? 之上有若干補丁,你可以裝這些補丁(微軟的Service ? Pack往往包含了前面發布的相關Hotfix和一些其他的工具)中的某一些。 ??
? ??
? 參考“一個軟件的版本實際上是組成該版本的所有特定版本文件的集合”,可知這個概念不會影響到當前的“版本”這一概念。 ??
? ??
? 這一點,與1相似。不同的是,技術實現上你可以看到每一個hotfix實際上是一個獨立的product ? installation。 ??
? 最典型地:每裝一個 ? hotfix,添加刪除程序中會多一個條目。如果允許的話(比如hotfix之間沒有互相影響),可以單獨刪除某個hotfix。 ??
? ??
? 3、Transform ??
? 從上面看可以知道,Hotfix或者SP并不是將你的軟件升級成新版本(或者僅僅升級Build),那么要把V1.05版本升級到2.0怎么做呢? ??
? InstallShield ? MSI ? Project/Basic ? MSI ? Project ? 的 ? patch ? 實際上就是 ? Windows ? Installer ? 機制中的 ? trasform。 ??
? 制作出來的“升級”補丁,也就是“升級包”。 ??
? ??
? 比如在2.0版的安裝程序中針對1.05做了一個升級補丁 ? Update1.05To2.0.msi/Update1.05To2.0.exe,運行之后,你會發現添加刪除程序中并沒有增加一個新的“產品”項,而原來的 ? 1.05 ? 的項變成了 ? 2.0 ? 的。 ??
? 這才是真正意義上的升級。 ??
? ??
? 因此,可以把3這種方法看作是 ??
? 1.05 ? 版本 ? + ? 1.05-2.0 ? 版本所需要做出的“所有”改變(不僅僅是文件更新、新增/刪除文件,甚至可能有注冊表信息、快捷方式甚至數據庫配置等等的更改)的集合。假如 ? 1.05 ? 的所有 ? hotfix ? 都裝了(或者ServicePack),就相當于 ? 2.0 ? 的話,那么你可以理解為 ? 所有 ? hotfix(sp)加起來就是升級包,呵呵。 ??
? ??
? InstallShield ? 提供的補丁制作功能很不錯,我每發布一個新版本的客戶端,會發布一個新版本的完整安裝程序,然后發布一個個針對指定版本的升級包(也可以在一個升級包中支持對多個版本的升級,但文件可能稍大)。 ??
? ??
? ??
? 補充說明: ??
? 在 ? InstallShield ? 有兩個功能: ??
? Upgrades ??
? Patch ? Design ??
? 前者主要用于制作全新的完整的安裝(升級)包,運行時如果當前計算機上沒有舊版本,則執行完整安裝。如果有,則升級原有安裝。 ??
? 后者主要制作版本升級補丁,比前者小,更有針對性,比較適合在網絡上發布或者用于在線升級。但假如在從一個版本到另外一個版本的升級過程中需要移動某些文件的位置,則一定要用Upgrade方式,而非Patch方式。 ??
? 另外,help中提到 ? Patch ? 方式不能制作 ? InstallScript ? MSI ? Project ? 的 ? Major ? 升級,只能用Upgrade方式。但在實際應用中,我的確用一個 ? Patch ? 將客戶端軟件從 ? 2.5 ? Build ? 74 ? 升級到了 ? 3.0 ? Build ? 76 ? 版本(2.50.0074 ? 到 ? 3.00.0076)
更多文章、技術交流、商務合作、聯系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號聯系: 360901061
您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元
