Tôi có một sản phẩm được đóng gói như một MSI. Khi khách hàng của tôi cài đặt phiên bản mới của sản phẩm của tôi trên đầu phiên bản hiện tại, nó không hoạt động độc đáo vì hành động VBS tùy chỉnh, như được giải thích bên dưới. Câu hỏi của tôi là: làm thế nào tôi có thể thay đổi MSI của tôi để cài đặt trên đầu sẽ luôn luôn làm một gỡ bỏ cài đặt đầy đủ của bất kỳ phiên bản hiện tại trước?Làm cách nào để gỡ cài đặt phiên bản trước đó như một phần của cài đặt msi?
Chi tiết là:
Tôi có một sản phẩm với nhiều phiên bản được triển khai tại nhiều công ty khác nhau. Mỗi năm một lần, mỗi khách hàng của tôi sẽ nhận được một phiên bản sản phẩm mới của tôi và triển khai đến các máy trạm của công ty họ. Những người chịu trách nhiệm triển khai sẽ thích họ có thể cài đặt phiên bản mới trên đầu phiên bản cũ, thay vì phải bao gồm một bước gỡ cài đặt trong gói cài đặt của họ.
Cài đặt msi tạo và ghi một số tệp vào thư mục [CommonApplicationData] \ MyApp. Trong quá trình thực hiện, ứng dụng tạo thêm các tệp trong thư mục [CommonApplicationData] \ MyApp. Trong khi gỡ cài đặt, tôi cần xóa tất cả các tệp này. Vì chúng không được cài đặt bởi msi nên chúng không được tự động gỡ cài đặt, vì vậy tôi đã tạo một tập lệnh vbs để xóa thư mục đó và bất kỳ thư mục nào khác trong đó. Tôi đặt một lệnh để thực hiện điều đó vbs trong ExecuteDeferred:
...
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
...
Cho đến nay rất tốt và nó hoạt động tốt khi cài đặt & gỡ bỏ cài đặt. Tuy nhiên, nếu tôi cài đặt phiên bản mới của sản phẩm trên đầu phiên bản hiện tại, mọi thứ sẽ xảy ra theo thứ tự sau: a) cài đặt phiên bản mới, tạo nhiều tệp khác nhau trong thư mục [CommonApplicationData] \ MyApp và trong [Program Files] \ MyApp ..., ghi đè tệp của phiên bản cũ b) chạy vbs của tôi, xóa thư mục [CommonApplicationData] \ MyApp
Tôi có GUID cho các phiên bản cũ được liệt kê trong bảng Nâng cấp trong MSI mới của tôi và ngoài kịch bản tùy chỉnh này, quá trình nâng cấp dường như hoạt động tốt.
Bản thân sản phẩm khá nhỏ nên sẽ ổn nếu trình cài đặt luôn xóa hoàn toàn các phiên bản trước đó trước khi cài đặt phiên bản mới. Không có cài đặt người dùng nào trên máy trạm cần được giữ lại và kích thước tệp không lớn. Do đó để đơn giản, tôi muốn các phiên bản trước được gỡ cài đặt thay vì được cập nhật chỉ với các bit đã thay đổi.
Có cách nào tôi có thể thay đổi MSI mới của mình để có thể gỡ cài đặt các phiên bản trước không?
Đáng chú ý, tôi có nhiều công ty có phiên bản hiện tại của MSI được cài đặt có chứa các vbs tùy chỉnh. Vì vậy, giải pháp thực sự cần phải là một giải pháp có thể đối phó với các msi đã được cài đặt hiện có.
Tôi đã sử dụng Wise Installation Express 7.0 để tạo MSI.
thanks !!
(cross-posted here)