2009-06-17 32 views
6

This question mô tả vấn đề của tôi một cách chính xác, ngoại trừ tôi đang sử dụng một phần cấu hình tùy chỉnh trong app.config với ConfigurationManager, vì vậy giải pháp được trình bày có không áp dụng ...Làm thế nào để duy trì app.config thông qua các cập nhật ClickOnce bằng cách sử dụng ConfigurationManager?

Về cơ bản, vấn đề của tôi là khi ClickOnce cập nhật các ứng dụng, nó cài đặt vào một thư mục khác với app.config mới, do đó xóa mọi thay đổi được thực hiện. Ứng dụng của tôi sử dụng app.config để duy trì cài đặt ứng dụng, vì vậy điều này rất xấu ... bản cập nhật được hợp nhất sẽ tuyệt vời (tương tự với những gì đạt được trong câu hỏi khác), nhưng mọi thứ tự động sẽ tốt vào thời điểm này.

Hoặc tôi chỉ nên sử dụng vị trí đã đặt cho tệp app.config của mình thay vì cố gắng sử dụng vị trí mặc định?

Trả lời

2

ClickOnce nên duy trì cài đặt người dùng giữa các cập nhật nhưng tôi đã bị lỗi này một lần hoặc hai lần vì lý do không rõ (và có kết quả xấu). Tôi chưa thử cài đặt cấu hình tùy chỉnh nhưng tôi đã mất niềm tin vào khả năng của ClickOnce để không ghi đè cài đặt.

Cách tiếp cận tôi định sử dụng là xử lý các cập nhật ClickOnce theo cách thủ công thay vì cho phép ứng dụng. để kiểm tra các bản cập nhật và nhắc người dùng cài đặt. Tôi cũng đã có một vài người dùng không chấp nhận cập nhật và đó là một nỗi đau để phục hồi. Bằng cách xử lý thủ công bản cập nhật, tôi hy vọng có thể đọc cài đặt người dùng vào bộ nhớ trước khi cập nhật, sau đó viết lại chúng sau khi quá trình cập nhật hoàn tất. Có một sự kiện ApplicationUpdated sẽ phục vụ mục đích này.

Có lẽ phương pháp này cũng có thể phù hợp với bạn.

Biên soạn để thêm tài liệu tham khảo:

Googling cho ApplicationDeployment cũng nên giúp đỡ.

+0

Nơi ở này là sự kiện Ứng dụng được cập nhật này? Tôi không thể tìm thấy nó trong trình duyệt đối tượng ... Ngoài ra, điều này đã không giúp vấn đề (mặc dù, nó là một tính năng tốt đẹp, tôi không bao giờ thích các hộp thoại ClickOnce), các bản cập nhật vẫn cài đặt vào một thư mục mới, vì vậy cũ app.config bị mất –

+0

lại: liên kết thứ hai của bạn về ApplicationSettingsBase, tôi kế thừa từ ConfigurationSection, vì vậy đây không phải là một lựa chọn cho tôi là nó? –

+0

Hãy xem lớp Deployment.Application.ApplicationDeployment. Tôi nghĩ rằng tôi đã xem xét mã mẫu khi tôi đề cập đến sự kiện ApplicationUpdated. Tôi nhận ra app.config cũ bị mất, ý tưởng của tôi là đọc trong cài đặt người dùng từ cấu hình hiện tại, cập nhật, sau đó ghi cài đặt người dùng vào cấu hình mới. –

1

Nếu có thể, hãy sử dụng Cài đặt.settings (được tìm thấy trong Thuộc tính trong dự án của bạn) để lưu trữ cấu hình khách hàng của bạn.

ClickOnce sẽ tự động hợp nhất cài đặt người dùng của bạn và bạn sẽ không phải lo lắng về bất kỳ điều gì. Hãy xem một số nội dung như thế này để biết thêm hướng dẫn: http://www.dotnetperls.com/settings-visual-studio

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