VS C#程序打包覆蓋安裝不能更新的解決方法


最近寫個小程序,打包覆蓋安裝更新時老是不起作用,還是原來的程序。

 

在網上四處查找,productcode和ersion都已經更改,removepreviousversions也設置成true了,可就是不能更新。

 

最后對比了下程序,發現每次覆蓋安裝后安裝路徑下別的文件的最后修改時間都更新了,就是主輸出文件.exe的修改時間一直沒有改變過,又看了下控制面板,程序的版本確實一直在更新,那么問題就出來了,程序不更新的原因就在於主輸出文件一直沒有更新。

 

可是每次更新安裝包的時候都重新生成過,在項目文件中主輸出文件也是一直在更新的。在網上幾經周折,終於找到了原因所在。

 

在項目中的Properties文件夾下有個AssemblyInfo.cs文件,打開,拉到最后,有這么幾行代碼:

 

[csharp]  view plain copy print ?
 
  1. // 程序集的版本信息由下面四個值組成:  
  2. //  
  3. //      主版本  
  4. //      次版本   
  5. //      內部版本號  
  6. //      修訂號  
  7. //  
  8. // 可以指定所有這些值,也可以使用“內部版本號”和“修訂號”的默認值,  
  9. // 方法是按如下所示使用“*”:  
  10. // [assembly: AssemblyVersion("1.0.*")]  
  11. [assembly: AssemblyVersion("1.0.0.0")]  
  12. [assembly: AssemblyFileVersion("1.0.0.0")]  

 


 

最后兩行就是導致主輸出文件一直不更新的罪魁禍首。

 

雖然每次生成,項目內容都更改了,但是生成的主輸出文件的版本一直沒有改變,這就導致了每次覆蓋安裝主輸出文件都不會被修改,因為他們的版本是一致的。

 

so,每次更新前,先修改主輸出文件的版本號,然后再生成項目輸出,然后修改安裝程序版本號、productcode,再復制productcode到卸載程序快捷方式,最后重新生成安裝程序。這樣就可以覆蓋安裝了,安裝后的程序也可以正常更新了。^_^

 

打包過程:

VS 程序打包/安裝包制作 

C# 程序打包 升級方案要點 

VS C#項目打包安裝程序(轉) 

C#WinFrom程序打包/圖解VS2008項目的安裝與部署圖解 


免責聲明!

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



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