VS自帶的打包工具,實現覆蓋安裝終極總結


吐槽下,這個問題糾結了很長時間,很是心累,百度了好多說的都不完整,也很分散,要么不全,要么闡述的不清楚,所以為了后續兄弟們不入坑,歸納下最全的如下:

1.兩個版本的屬性RemovePreviousVersion和DetectNewerInstalledVersion都設為True;(DetectNewerInstalledVersion這個屬性意思自己百度了下,是指定在目標計算機上安裝時是否檢查有無應用程序的更新版本。 如果此屬性設置為 True,並且在安裝時檢測到了更高的版本號,則結束安裝),其實就是防止安裝了高版本,再安裝低版本問題的


2.兩個版本的ProductCode不能相同,這個不用自己手動修改,下面會說;


3.兩個版本的UpgradeCode必須相同;


4.部署項目屬性中的Version必須大於舊版本; 這個就是打包項目,屬性-Version必須大於上個打包的版本號,同時修改這個的時候,上面的ProductCode會自動修改,所以上面不用手動修改,如果你沒修改這個,安裝包開始是不提示那個已經有版本的錯誤了,但下一步后會提示已經有個最新版本,還是不能覆蓋安裝


5.新版本的程序集版本號要大於舊版本; 這個是我糾結最長時間的,因為好多作者解答中就沒有這個,但這個是最關鍵的,不改這個,你看着安裝包是正常覆蓋安裝了,結果項目生產的那些dll和exe根本就沒覆蓋,還是老的,日了狗了,沒這個前面再好,也是白折騰。這個就是修改每個項目下Properties-AssemblyInfo文件最下面那個版本號,(有兩個,我也沒試是哪個,都改了),改了這個版本號后安裝就會覆蓋老的


6.配置信息Config.Xml文件保留的方法(部署項目中找到Config.Xml文件,然后在屬性中將Permanent屬性設置為True)

注釋:Permanent指定卸載應用程序時是否移除文件,這個我沒設置也可以用

7.關於dll注冊問題,有些dll需要注冊,安裝的時候會提示讓注冊,這時可以dll右鍵屬性--Register,注冊屬性:我們一般只用三種,vsdrfDoNotRegister:從不注冊,vsdrfCOMRelativePath:注冊需要注冊的dll文件,vsdrfCOMSelfReg:注冊ocx組件。

以上就是總結的覆蓋安裝的東西.

注意:

1.個人還遇到了個問題就是,在win10打包的,win7上不能卸載,win7打包的,兩者都可以正常卸載


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM