2009-07-29 36 views
24

Mỗi khi tôi biên dịch ứng dụng và số phiên bản thay đổi (tôi có số tự động tăng dần), tôi mất cài đặt app.config do người dùng định cấu hình vì chúng được lưu trữ trong thư mục AppData cho một phiên bản cụ thể. Về cơ bản, mọi bản phát hành ứng dụng của tôi đều bắt đầu từ đầu đến khi cài đặt của người dùng đi.Tự động "nâng cấp" cài đặt người dùng từ phiên bản trước của tệp app.config?

Trong khi đây là một ít phiền toái nhẹ trong phát triển, nó đặt ra câu hỏi như tôi tiếp cận triển khai/release - nếu tôi sử dụng app.config để lưu trữ các thiết lập của tôi sử dụng, thiết lập cá nhân của người dùng sẽ được hosed mỗi khi họ cài đặt một bản vá thay đổi số phiên bản ứng dụng của tôi? Nếu vậy, có cách nào dễ dàng để "nâng cấp" cài đặt từ bản phát hành trước không? Tôi biết rằng bằng cách sử dụng HKCU trong registry là một lựa chọn khác, nhưng tôi thích sự dễ dàng của không gian tên My.Settings, và tôi muốn ở lại với app.config.

Another SO question hỏi điều gì đó tương tự, mặc dù câu trả lời dường như không rõ ràng. Sẽ thiết lập MSI của tôi để nó yêu cầu người dùng nâng cấp đủ để bảo vệ các cài đặt cấp người dùng này?

Trả lời

34

Bạn đã xem ApplicationSettingsBase.Upgrade() chưa? Nó cho phép các cài đặt được nâng cấp từ phiên bản trước bằng cách sử dụng cuộc gọi sau:

My.Settings.Upgrade() 
+5

Đó chính xác là hành vi tôi đang tìm kiếm - nó tìm nạp bản sao cài đặt mới nhất và tải chúng. Cũng đáng chú ý là phương pháp ApplicationSettingsBase.GetPreviousVersion, mà bạn có thể sử dụng để tải một thiết lập đơn lẻ từ một phiên bản trước đó. Cảm ơn! – SqlRyan

1

Bạn đã xem xét triển khai ClickOnce chưa? Chủ đề này sau đó được bao gồm in depth. IMO, ClickOnce dễ dàng hơn nhiều cho cả nhà phát triển và người dùng.

+5

ClickOnce là tuyệt vời cho đến khi nó không hoạt động, và sau đó gỡ lỗi nó là gần như không thể. Chúng tôi đã từng sử dụng nó và thay thế bằng chương trình kiểu "trình khởi chạy" của chính chúng tôi vì có quá nhiều thứ có thể bị lỗi ngoài tầm kiểm soát của chúng tôi và không có đủ thông tin đăng nhập để người dùng yên. –

7

Không chắc chắn tại sao nhưng không phải lệnh nâng cấp hoặc phiên bản trước đó có vẻ phù hợp với tôi. Tôi có thể làm gì sai? Tôi có cần gọi lệnh làm mới hay gì đó không. Tôi đang làm điều này trên tải hình thức, nên nó là một sự kiện ứng dụng?

CẬP NHẬT

Tìm thấy hiểu tại sao, có vẻ như nó không hoạt động khi bạn sử dụng một 4 chữ số phiên bản chính. Tôi đã sử dụng năm 2012 làm số phiên bản chính. Tôi đã thay đổi điều đó thành 12 và nó hoạt động như một sự quyến rũ, mặc dù không tuân theo millenium. Tôi vẫn còn 88 năm trước khi tôi bắt đầu lo lắng về điều đó!

Các vấn đề liên quan