我經常使用cx_freeze來包裝我的Python源與所有的依賴關係,並隨後通過distutilsbdist_msi擴展創建MSI安裝包卸載以前安裝的MSI通過cx_freeze創建bdist_msi
唯一的問題發生在我嘗試重新安裝一個新創建的msi windows安裝程序,無需卸載以前的版本。卸載程序會記錄所有以前卸載的軟件版本,並且會記錄註冊表和卸載程序信息。
是否可以檢測到我的軟件以前安裝的版本,並自動卸載它,而無需安裝新版本?
我知道NSIS,以及如何用它的python綁定來創建安裝程序,我提到的上述問題可以很容易地通過它來解決。不幸的是,在這一刻,我沒有看到任何超出Python提供的東西,即distutils。
** + 1 **好答案。有關修復Windows卸載錯誤的附註:打開路徑C:\ Windows \ assembly,然後按下公共密鑰令牌*列標題*按順序排序。然後查找***您的MSI公共令牌***號碼(* MSI安裝的**不**刪除*)並刪除這些令牌條目。在錯誤的卸載後執行此操作將允許正確的重新安裝/升級,更少的污點註冊表和卸載程序信息。乾杯! * P.S。這是如何解決ATi Catalyst驅動程序和CCC面板更新出錯的問題。* – arttronics
好的答案的確如此。奇怪的是,我也嘗試過使用升級代碼,但對於如何使用它卻一無所知。現在您可以參考MS網站,聲明它應該是一個隨機的GUID。我將在今天早上做的第一件事,並更新它如何展示。 – Abhijit
我看了鏈接並做了這個,但是我不能做安裝,刪除舊的,並安裝新的。這是我的'setup.py' http://codepaste.net/fkzojh,你能解釋更多,我該如何改變產品或包裝ID在舊包裝上安裝不是新的? – alireza