2010-09-20 53 views
5

Tôi có một hệ thống với hai ứng dụng web, một dịch vụ web, một dịch vụ Windows và một ứng dụng WPF chạy 24 giờ một ngày trên màn hình cảm ứng. Tất cả chúng đều được kết nối với một cơ sở dữ liệu.Cập nhật tự động

Tôi muốn có thể nâng cấp tất cả các ứng dụng đó bằng cách tải tệp nâng cấp lên cơ sở dữ liệu và đặt ngày và thời gian để nâng cấp xảy ra.

Tôi có một ý tưởng về cách thực hiện việc này.

  1. Ứng dụng có chuỗi chạy để tìm các bản nâng cấp có sẵn.
  2. Khi nâng cấp được tìm thấy, tệp sẽ được tải xuống máy tính của ứng dụng.
  3. Khi tải xuống hoàn tất, các ứng dụng sẽ kích hoạt khởi động lại.
  4. Khi ứng dụng bắt đầu, ứng dụng sẽ tìm tệp nâng cấp trên máy tính cục bộ.
  5. Nếu nâng cấp khả dụng, ứng dụng sẽ tự nâng cấp.

Tôi chưa thực sự chắc chắn cách thực hiện tất cả các bước này, đặc biệt là bước cuối cùng. Nhưng tôi muốn một số ý kiến ​​về điều này. Điều này hoàn toàn sai? Có phải tôi đang trên đường ray bên phải không? Bất kỳ lời khuyên nào về cách làm như thế này hay theo cách khác?

+1

Vâng, cách tiếp cận của bạn hoàn toàn khả thi. Tùy thuộc vào kích thước của tập tin nâng cấp, tôi có lẽ sẽ không lưu nó * trong * cơ sở dữ liệu, nhưng đó chỉ là một nitpick. – Piskvor

+0

Piskvor là đúng, bạn không muốn lưu trữ nó trong cơ sở dữ liệu. Tôi đã đăng một câu trả lời dưới đây cho bạn biết về ClickOnce. – Bronumski

+0

Tôi cũng sẽ xem xét một cách để rollback, trong trường hợp cập nhật không thành công! Đặc biệt là nếu bạn không có quyền truy cập vật lý vào thiết bị. – chriszero

Trả lời

1

Tôi nghĩ rằng bạn đang đi xuống đúng dòng ở đây. Một ứng dụng bỏ phiếu để kiểm tra cơ sở dữ liệu cho sự tồn tại của một bản cập nhật mới theo sau là một kịch bản triển khai xcopy sẽ làm điều đó.

Điều này cũng có thể thực hiện được từ tập lệnh PowerShell, chạy theo lịch biểu, cứ 10 phút một lần. Nó có thể kiểm tra cơ sở dữ liệu, đóng quá trình và dịch vụ, xcopy ứng dụng (từ một nguồn được chia sẻ) và khởi động lại dịch vụ và ứng dụng đã nói.

Tất cả điều này giả định rằng bạn không sử dụng Windows Installer để đóng gói và triển khai ứng dụng của bạn ban đầu. Mặc dù một xcopy để thay thế trực tiếp các tập tin nhị phân sẽ không làm hỏng gói MSI, nhưng nó không được khuyến nghị. Chúng tôi sử dụng AD MSI triển khai tại nơi làm việc và nó là một nỗi đau ở tốt nhất của lần!

MSDN chứa tham chiếu cho triển khai MSI vs XCopy cho các ứng dụng WPF (cũng như các yêu cầu bảo mật).

Đây là mắt xích đầu tiên tôi thấy để truy vấn SQL từ PowerShell: http://elegantcode.com/2008/03/27/discovering-windows-powershell/

Chúc may mắn!

0

Bạn có thực sự muốn chạy bản cập nhật từ cơ sở dữ liệu hoặc đây có phải là giải pháp khả thi không? Bạn đang phát minh lại bánh xe.

Hãy xem triển khai ClickOnce, mọi thứ bạn cần đã được thực hiện cho bạn và tích hợp vào VisualStudio. Nếu bạn sử dụng một cái gì đó đã tồn tại, bạn có lợi ích của tài liệu hiện có, blog hữu ích của những người đã trải qua các điểm đau và cập nhật và sửa lỗi.

ClickOnce Deployment

ClickOnce Deployment in .NET Framework 2.0

Làm thế nào bạn muốn sử dụng ClickOnce phụ thuộc vào những gì bạn muốn để có được ra khỏi nó.Ngoài hộp, bạn có thể dễ dàng tạo một triển khai kiểm tra nâng cấp mỗi khi bạn chạy ứng dụng nhưng bạn cũng có thể có một chút mã để ứng dụng kiểm tra các bản cập nhật trong khi nó đang chạy.

Trình phá hủy ứng dụng Updater mà Dominic Zukiewicz đã đề cập là con trỏ trước đến ClickOnce.

CHỈNH SỬA

ClickOnce cung cấp kịch bản quay lại trên cả Máy chủ và Máy khách. Khách hàng có thể quay lại phiên bản trước bằng cách sử dụng hộp thoại thêm chương trình loại bỏ bình thường và bạn có thể dễ dàng xuất bản lại phiên bản trước đó.

+0

Âm thanh tốt. Nhưng một số điều tôi nghĩ không hoạt động trong kịch bản của tôi. Tai ương nó hoạt động cho tất cả các loại ứng dụng của chúng tôi (web, WPF, dịch vụ)? Yêu cầu truy cập internet cho tất cả các ứng dụng? Không thể chọn cài đặt hệ thống nào để nâng cấp? Tôi có thể sai về một cái gì đó ở đây. –

+0

Xin lỗi tôi đã bỏ lỡ "Tôi muốn có thể nâng cấp tất cả các ứng dụng đó". Câu trả lời ngắn gọn là không, bạn sẽ sử dụng ClickOnce cho một ứng dụng khách. Nếu bạn muốn nâng cấp tất cả các ứng dụng giống như cách bạn có thể muốn suy nghĩ lại về chiến lược triển khai của mình, hiếm khi có một kích thước phù hợp với tất cả các giải pháp. Những gì tôi có thể nói là từ kinh nghiệm khi triển khai đến một người dùng cuối ClickOnce là một công cụ triển khai rất tốt, nơi tất cả các kinks đã được làm việc và cung cấp một trải nghiệm người dùng rất tốt. – Bronumski

+0

Tôi sẽ xem xét thêm một số thông tin khác. Bất cứ điều gì tốt hơn những gì chúng ta làm hôm nay - VPN và máy tính để bàn từ xa đến tất cả các máy chủ chúng ta cần và cung cấp cho khách hàng nơi chúng tôi không có quyền truy cập VPN. –

1

Bạn sẽ gặp khó khăn khi thực hiện việc này với ClickOnce. ClickOnce sẽ chỉ làm việc cho ứng dụng WPF của bạn, nó không thể làm bất cứ điều gì với các dịch vụ hoặc ứng dụng web. Bạn có thể viết một ứng dụng "Updater" được triển khai ClickOnce được triển khai riêng biệt mà công việc của họ là cập nhật các ứng dụng khác, nhưng điều đó vẫn có vẻ hơi khó chịu.

Nghe có vẻ ngu ngốc, nhưng tôi bắt đầu với điều đơn giản nhất mà tôi có thể nghĩ đến. Cách sử dụng Dropbox để đẩy tệp cập nhật của bạn; sau đó một tập lệnh AutoHotKey chạy khi khởi động, hãy xem thư mục Dropbox để biết các bản cập nhật mới và chạy chúng?

Âm thanh hokey, nhưng đó là điều bạn có thể chứng minh sau một hoặc hai giờ.

0

Bạn có thể tạo một Dịch vụ Windows khác thực hiện cập nhật hàng ngày. Dịch vụ sẽ xem xét một thư mục cụ thể nếu có bất kỳ cập nhật nào được xử lý. Ví dụ, nó có thể tìm kiếm một tệp xml cho nó biết phiên bản mới của ứng dụng và các tệp cần cập nhật là gì. Nó sẽ tắt các ứng dụng/dịch vụ, sao lưu các tập tin cần cập nhật, khởi động ứng dụng/dịch vụ, và dọn dẹp các tập tin sao lưu giữ ít nhất ba tập tin sao lưu. Dịch vụ nên theo dõi phiên bản mới nhất và hiện tại được cài đặt để khi nó đọc tệp xml, nó có thể kiểm tra xem đó có phải là bản cập nhật mới hay không hoặc bạn có thể xóa tệp xml khi hoàn thành.

0

Làm thế nào về Google Omaha? Đây là một công cụ nguồn mở, hiện đang được sử dụng để đẩy các bản cập nhật của Google Chrome và Google Earth. Omaha cũng có thể xử lý cài đặt ứng dụng. Bạn có thể tìm thấy tổng quan về thiết kế cấp cao here.

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