2009-11-04 41 views
8

Tôi có một câu hỏi chung cho nhóm. Tôi sắp bắt đầu một dự án lớn cho nhóm của mình, tôi nghi ngờ, chúng tôi sẽ làm như một ứng dụng máy tính để bàn (tôi thường là một anh chàng web trong triển vọng ứng dụng của tôi nhưng tôi mở để thay đổi.)Tự cập nhật ứng dụng

Mối quan tâm lớn của tôi là các ứng dụng máy tính để bàn hiện tại trong công ty đã là một nỗi đau trong keister để duy trì, hoặc nhiều hơn đến điểm, để phân phối khi một sự thay đổi cần phải được thực hiện. Vì vậy, tôi sẽ muốn phát triển một cái gì đó mà nhắc nhở người dùng (nhân viên của chúng tôi) để cập nhật phần mềm nếu nó đã lỗi thời trên máy tính của họ.

Những người đã từng làm điều này trước đây, tôi sẽ đánh giá cao bất kỳ lời khuyên nào về những điều cần tìm kiếm. Ngoài ra tôi sẽ quan tâm đến bất kỳ tài nguyên trực tuyến nào mà bất kỳ ai cũng thấy hữu ích trong việc giải quyết các yêu cầu tương tự.

Cảm ơn.

EDIT: Tôi nhận ra mình đã hút !! Tôi đã quên đề cập đến một số chi tiết quan trọng nhất. Nó sẽ là một ứng dụng Window, được viết bằng .NET framework, nhắm vào Win XP và cao hơn.

+1

Nền tảng? Ngôn ngữ? Khung (s)? –

+0

Xin lỗi. Lỗi của tôi. Vào cuối ngày. = ( Nó sẽ là nền tảng Windows, được viết bằng .NET Framework, nhắm mục tiêu Windows XP trở lên. –

+0

Sau đó, có lẽ tôi nên xóa câu trả lời của mình – GameFreak

Trả lời

13

Nếu bạn muốn tự mình triển khai, nó cũng khá dễ dàng. các cuộc thăm dò ứng dụng của chúng tôi một dịch vụ web để biết thông tin định kỳ với khoảng API sau:

getVersion(Installation ID): returns release version to be installed and hash of all files 
getFileList(Version ID): gets a list of files and file hashes for the release 
getFile(File ID): gets one file 

Ưu điểm: Bằng cách mã hóa logic vào phương pháp getVersion của bạn, bạn có thể đẩy các phiên bản khác nhau để khách hàng khác nhau và nó cũng cho phép bạn để đẩy phiên bản beta để một số lượng hạn chế của khách hàng đầu tiên.

Kiểm tra hàm băm trên tất cả các tệp đã tải xuống của bạn đảm bảo ứng dụng của bạn tải xuống tệp đúng cách. Điều này cũng có thể được sử dụng để sửa chữa các tệp ứng dụng bị hỏng. Khi băm cho bản phát hành khớp với băm cho tất cả các tệp đã tải xuống, đã đến lúc cài đặt.

Để cài đặt, hãy bắt đầu ứng dụng cập nhật và thoát khỏi chương trình chính của bạn. Bản cập nhật sẽ thay thế tất cả các tệp ứng dụng đã thay đổi. Chương trình cập nhật cũng có thể chạy bất kỳ tập lệnh thay đổi SQL hoặc thay đổi sổ đăng ký nào liên quan đến bản phát hành.

Khi kết thúc chương trình cập nhật, hãy khởi động lại ứng dụng chính của bạn và yêu cầu ứng dụng chính cập nhật chương trình cập nhật nếu cần. Chúng cập nhật lẫn nhau, vì vậy bạn có thể đẩy các sửa lỗi tới cả chương trình cập nhật và ứng dụng chính.

Tôi cũng khuyên bạn nên thử nghiệm hạ cấp trước khi đẩy bản phát hành mới cho khách hàng, vì vậy bạn có thể tự động chuyển sang bản phát hành ổn định cũ nếu tìm thấy bất kỳ lỗi nghiêm trọng nào.

2

Bạn chưa quy định những gì ngôn ngữ/nền tảng/khuôn khổ bạn đang sử dụng, nhưng tôi khuyên bạn nên sử dụng một trong đó có chức năng này được xây dựng trong.

Microsoft đã ClickOnce triển khai, và tôi biết Adobe Air does something similar. Đây là một câu hỏi SO nói về việc có auto-update functionality in Java.

2

Bạn không chỉ định hệ điều hành đích nhưng trên OS X một lựa chọn tốt được cho là rất dễ dàng để thêm là Sparkle.

3

Chúng tôi làm gì; khi ứng dụng khởi động hoặc mỗi giờ hoặc lâu hơn, chúng tôi thực hiện yêu cầu GET cho máy chủ web của chúng tôi.

http://www.domain.com/app/versionCheck.php?app=APP_NAME&version=2.1.1.1

Tập lệnh kiểm tra cơ sở dữ liệu và so sánh các phiên bản.Nếu phiên bản khác "UPGRADE" được gửi lại cho tiện ích, "GOOD"

Nếu tiện ích nhận được "UPGRADE", nó sẽ gửi người dùng đến URL được xác định trước để tải xuống phiên bản tiện ích mới nhất.

Tính năng này hoạt động tốt với các tiện ích nhỏ hơn (< 20mb).

Gợi ý

  • Nếu không có kết nối internet để kiểm tra phiên bản, đừng bận tâm nói với họ chỉ là thời gian ra và chờ đợi một đến được đến sẵn. Nếu + 25 thời gian chờ thì hãy thông báo cho người dùng.
  • KISS, bạn không cần có URL nâng cấp trong phản hồi, chỉ cần gửi URL đó đến url được xác định trước.
5

Vì bạn đang sử dụng .NET và Windows ClickOnce sẽ hoạt động tốt cho bạn, như Daniel nói.

Một tùy chọn khác là sử dụng Shadow Copying. Về cơ bản nói cho hội đồng của bạn để thực hiện từ một vị trí khác nhau đến một trong những họ được cài đặt trên. Điều này sẽ cho phép ứng dụng của bạn cập nhật các tệp riêng của nó ngay cả khi các hội đồng được tải. Tôi đã không sử dụng điều này trước khi bản thân mình, nhưng đã thấy nó chứng minh một vài lần.

ClickOnce sẽ là một giải pháp đơn giản và tôi sẽ thực hiện điều đó trừ khi bạn có một số nhu cầu mà nó không đáp ứng. ClickOnce sẽ cho phép bạn xuất bản ứng dụng lên máy chủ web hoặc chia sẻ mạng và cho phép người dùng tự động cập nhật bản sao của họ khi có phiên bản mới. Từ bộ nhớ, nó tự động kiểm tra và nhắc nhở người dùng khi họ cố gắng khởi động ứng dụng.

+1

ClickOnce có phiên bản hộp cát bảo mật riêng. Hãy chắc chắn rằng những gì bạn đang cố gắng làm, ClickOnce cho phép bạn làm điều đó Ngay cả với sự tin tưởng đầy đủ, bạn vẫn có thể không thể làm những việc nhất định. giao thức dành riêng cho ứng dụng của tôi - hoàn toàn là nút hiển thị. – chakrit

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