[VS2005]安裝時移除舊版程式


這個主題在線上手冊是有討論的,這邊做一點整理與補充。
 
要能自動移除先前安裝的舊版程式,必須將 RemovePreviousVersions 屬性設為 True ,線上手冊的說明請參見:
 
其次,新版版號必須比舊版高,不需要遞增,但是一定要更高版,這個要求在上面說明沒提到,只說到
安裝程式會檢查 UpgradeCode 和 ProductCode 屬性,以決定是否應移除舊版本。兩個版本的 UpgradeCode 必須相同,但 ProductCode 必須不同。
操作上根本不要去動 ProductCode 跟 UpgradeCode ,只要改封裝專案的版號,即會自動詢問是否要更新 ProductCode ,這時同意更新即可。
 
操作上就這麼簡單,新版安裝時,就會自動移除舊版程式。
 
更進一步
若在新增或移除程式清單中 (Add/Remove Programs) 看到兩個以上的安裝程式,觀看支援資訊時,發現是每個版本舊版都在怎麼辦? 
 
這種狀況通常是你的版本編號小於 1.0 版,比如說測試版從 0.x 開始編起。這在 VS2005 中只能把版號從 1.0 以上開始編起,若仍想讓版號小於 1.0 時,只好再把微軟提供編修 MSI 檔的公用程式:orca.exe 祭出來:
 
使用 orca.exe 開啟你的專案產生的 setup.msi 後,左邊的 Tables 選更新表格 (Upgrade table) ,把 VersionMin 這欄變更為 0.0.0.0 存檔即可。
 
這個原因是因為 VS2005 預設屬性 (Attributes=256) 是要參考 VersionMin 版號,所以靠這邊調整即可,更多關於 Attributes 屬性的說明請參閱線上手冊:
 
當然記得修改的 Setup.msi 版號要比目前已安裝的版號都大。修改完後重新安裝,就會把新增移除程式清單內的舊版都移除掉,比如說本例有兩個舊版在新增移除程式清單,安裝第三版時就會都移除掉。
Categories: 封裝部署, 技術分享 | 3 則迴響

文章分頁導航

3 thoughts on “[VS2005]安裝時移除舊版程式

  1. Bauann

    哇 ~ 璉大整理的真詳細 ~ 之前也有遇到這問題,不過沒有深入去研究 ~
    我把璉大相關文章的連結放到小弟的blog上 ~ 跟璉大說一聲 ~

  2. 谢谢大大.
    我也转过去了.

  3. 子璉

    可是這個大頭照是比爾耶~

發表留言

在 WordPress.com 建立免費網站或網誌.