Tôi có dịch vụ Windows được viết bằng C# bằng cách sử dụng VS2005.Làm thế nào để thuyết phục một MS200 VS2005 để nâng cấp?
Cài đặt qua trình hướng dẫn gọi msiexec để cài đặt tệp msi cũng được tạo bằng cách sử dụng VS2005.
Tôi gặp sự cố khi tạo tệp msi sẽ nâng cấp từ một phiên bản dịch vụ này sang phiên bản dịch vụ khác. Chương trình hướng dẫn xử lý việc phát hiện phiên bản hiện đang được cài đặt, dừng dịch vụ, đưa ra một dòng lệnh thích hợp cho msiexec và sau đó khởi động lại dịch vụ.
msi hiện tại có thuộc tính phiên bản là 1.1.02, phiên bản mới là 1.1.03. Mã sản phẩm và mã nâng cấp giống hệt nhau.
Gỡ cài đặt 1.1.02 theo cách thủ công thông qua các chương trình thêm/xóa hoạt động tốt, cũng như cài đặt 1.1.03 vào hệ thống "sạch".
Nâng cấp 1.1.02 đến 1.1.03 đi qua các chuyển động nhưng kết quả cuối cùng là 1.1.02 được cài đặt.
Các dòng lệnh mà trình hướng dẫn sử dụng cho nâng cấp là:
msiexec/qb/i "MyProduct.msi" cài đặt lại = "TẤT CẢ" REINSTALLMODE = "vos"
tôi đi đâu vậy? Tôi giả định rằng tôi phải bỏ lỡ điều gì đó khá cơ bản ...
Vị trí dự phòng là thông báo cho khách hàng rằng họ cần gỡ cài đặt thủ công 1.1.02 trước khi chạy trình hướng dẫn cài đặt 1.1.03 nhưng tôi muốn không phải làm vậy.
Edited thêm:
Thay đổi mã sản phẩm (như VS2005 cũng nhắc bạn) thực sự loại bỏ khả năng nâng cấp ở tất cả, vì nó trình cài đặt sẽ không cho phép bạn làm một cài đặt lại nếu đó là mã sản phẩm hasn trước đó chưa được cài đặt.
Sau đó, tất cả điều đó sẽ cho phép bạn thực hiện là cài đặt (và sau đó bạn nhận được thông báo kiểu "dịch vụ đã tồn tại" thông thường).
Đúng - đã thiết lập ok. Cuối cùng đã từ bỏ điều này và sử dụng để làm cho trình hướng dẫn thực hiện việc gỡ cài đặt, sau đó là cài đặt mới nếu phát hiện phiên bản cũ hơn tại chỗ. Dường như làm việc ok và cho phép người dùng cuối nâng cấp mà không cần phải tự fiddle với bất cứ điều gì. –
Ngoài ra, theo như tôi có thể tạo ra, các MSIs được xây dựng bởi Visual Studio rõ ràng khét tiếng vì không cho phép bạn nâng cấp các dịch vụ, vì vậy bằng cách thực hiện công việc trong trình hướng dẫn tôi dường như tránh rơi vào bẫy tiếp theo. –
+1 nhưng để làm cho nó hoàn toàn rõ ràng, điều này đang nói nâng cấp phiên bản tệp của dự án CHÍNH (không phải dự án thiết lập!). –