我有一個打包成MSI的產品。當我的客戶在現有版本的頂部安裝我的產品的新版本時,由於自定義的VBS操作而不能很好地工作,如下所述。我的問題是:我可以如何更改我的MSI,以便在頂部安裝將始終完全卸載任何現有的版本?如何卸載以前的版本作爲msi安裝的一部分?
的細節是:
我有多種部署在各種不同的公司版本的產品。每年大約有一次我的客戶會收到我的產品的新版本並部署到他們公司的工作站。負責部署的人員更喜歡他們可以在舊版本的頂部安裝新版本,而不必在他們的安裝包中包含卸載步驟。
msi安裝會創建一些文件並將其寫入[CommonApplicationData] \ MyApp文件夾。在執行過程中,應用程序在[CommonApplicationData] \ MyApp文件夾中創建更多文件。在卸載過程中,我需要刪除所有這些文件。由於它們不是由msi安裝的,因此它們不會自動卸載,所以我創建了一個vbs腳本,用於刪除該文件夾以及其他任何內容。我把要執行的命令在ExecuteDeferred是VBS:
...
RemoveFiles
RemoveFolders
CreateFolders
MoveFiles
InstallFiles
PatchFiles
If REMOVE="ALL" Then
REM line below is my custom script
call VBScript From Installation (MyApp_UninstallCleanup)
End
DuplicateFiles
BindImage
CreateShortcuts
...
到目前爲止好和安裝&卸載時,它工作正常。但是,如果我在現有版本的頂部安裝新版本的產品,則會按以下順序進行安裝: a)安裝新版本,在[CommonApplicationData] \ MyApp文件夾中創建各種文件,並在[程序文件] \ MyApp ...覆蓋舊版本的文件 b)運行我的vbs,刪除[CommonApplicationData] \ MyApp文件夾
我的新MSI中的升級表中列出了舊版本的GUID,並且除了這個自定義腳本之外,升級過程似乎還行。
該產品本身非常小,所以如果安裝程序在安裝新版本之前總是刪除以前的版本,那將會很好。工作站上沒有需要保留的用戶設置,文件大小也不大。因此,爲了簡單起見,我希望卸載以前的版本,而不是僅更新已更改的位。
有沒有一種方法可以改變我的新MSI,以便它會先卸載以前的版本?
值得注意的是,我有許多公司已經安裝了包含自定義vbs的MSI的現有版本。所以該解決方案確實需要能夠應對現有安裝的msi。
我用Wise Installation Express 7.0創建了MSI。
謝謝!!
(交叉貼here)