Ứng dụng tự cập nhật - triết lý


15

Đây là một câu hỏi triết học.

Đưa ra một ứng dụng máy tính để bàn giả định và mong muốn cung cấp các bản cập nhật tự động (thay vì buộc mọi người truy cập trang web, kiểm tra cập nhật, tải xuống bản cập nhật, cài đặt), cách nào trong hai cách tiếp cận "thực tiễn tốt nhất"?

  1. Giống như iTunes , nó kiểm tra xem có phiên bản mới hay không và nhắc người dùng tải xuống phiên bản mới. Nếu như vậy, nó sẽ download một cài đặt đầy đủ thực thi (trong trường hợp này, một Windows Installer tập (.msi)) mà cài đặt các phiên bản đầy đủ (không chỉ là một bản nâng cấp lên phiên bản trước đó - quá nhiều để quản lý nếu có nhiều phiên bản trên mạng) . Vì vậy, giả sử, đó là phiên bản 10.1.1 - cho dù bạn đang cài đặt mới hay nâng cấp, bạn đều sử dụng cùng một tệp. Sau khi tải xuống, nó hướng dẫn người dùng đóng ứng dụng và tự chạy tệp cài đặt.

  2. Tương tự như phiên bản khác, nó kiểm tra phiên bản mới và nhắc người dùng tải xuống, nhưng thay vì chỉ tải xuống một tệp thực thi và nhắc người dùng chạy nó, nó thực sự chạy nó cho họ - tắt chương trình họ đã mở, lấy bảo mật cần thiết để cài đặt tập tin.

Các vấn đề với # 2: nhiều vấn đề xung quanh việc đóng chương trình, vì chương trình có thể mở các chương trình khác ( OutlookExcel ) hoặc nếu người dùng đang ở giữa một cái gì đó. Ngoài ra xung quanh bảo mật, bạn cần có quyền truy cập quản trị viên cục bộ để cài đặt, nếu bạn không có nó thì sao? Trong các phiên bản sau của Windows, bạn không thể ghi đè bảo mật của người đó.

Các vấn đề với # 1: một số người tin rằng điều này sẽ quá khó, quá nhiều nỗ lực cho người dùng cuối.

Tôi rất muốn đi với số 1 vì nó sẽ tiết kiệm 80-120 giờ cho dự án của tôi, và đơn giản hơn để thực hiện và duy trì. Tuy nhiên, chúng tôi có những người cảm thấy mạnh mẽ về mọi mặt.

Một thực hành tốt nhất cho loại điều này là gì?


Tôi không chắc đó là triết lý, có vẻ như cô ấy đang tìm giải pháp cho tôi.

Vì vậy, không ổn khi đặt câu hỏi Thiết kế / Kiến trúc ở đây?

Câu hỏi của tôi là, tại sao # 2 yêu cầu chương trình tắt và khởi động lại? Nếu đó là một bản cập nhật bảo mật thì điều đó có thể hiểu được, nhưng một người dùng bình thường sẽ đóng và mở lại chương trình ít nhất một lần một ngày nếu không, vậy tại sao không cài đặt nó trong nền, hãy để người dùng chạy chương trình bằng phiên bản cũ hơn trong bộ nhớ và sau đó khi họ khởi động lại, hãy sử dụng phiên bản mới đã được cài đặt. Không phiền phức, không rắc rối.
Mike S

@Mike S: điều đó là không thể trên Windows (không thể ghi đè lên các tệp thực thi đang chạy) và ngay cả trên Linux, đó không phải là một ý tưởng đặc biệt (nếu bạn mở một phiên bản khác, bạn sẽ có một mã chạy mã cũ và một mã chạy mã mới - nếu có bất kỳ IPC nào xảy ra, nó thậm chí còn tệ hơn)
Dean Harding

Từ kinh nghiệm: nếu bạn kiểm tra cập nhật, đừng để chương trình của bạn thực hiện hàng ngày vào lúc nửa đêm hoặc 3 giờ chiều. Điều đó có vẻ hợp lý, nhưng bạn kết thúc DDOS'ing máy chủ của riêng bạn. Chỉ cần thêm tối đa 3600 giây ngẫu nhiên; nó không quá cấp bách
MSalters

Câu trả lời:


20

Cá nhân, tôi thích cách tiếp cận của Google Chrome hơn. Một thư mục cơ sở với trình khởi chạy và thư mục con cho mỗi phiên bản phần mềm được cài đặt. Trình khởi chạy chỉ tìm số phiên bản cao nhất và sử dụng số đó và xóa các phiên bản cũ hơn nếu cần. Một tác vụ cập nhật thường xuyên chạy để tải xuống và tạo các thư mục mới. Khi các phiên bản mới được cài đặt, ứng dụng đang chạy yêu cầu khởi động lại để sử dụng phiên bản mới.


4
+1 để chỉ ra hành vi tốt của Google. Sự tương phản là Adobe Acrobat Reader, người cứ sau 2 ngày lại cài đặt một số bản vá khẩn cấp và làm phiền một người liên tục trong công việc của một người.
Ingo

Tôi thích cách tiếp cận này quá. Nhược điểm là nó chỉ hoạt động đối với các cài đặt cho mỗi người dùng không yêu cầu độ cao. Khi bạn có dấu nhắc độ cao, sẽ không thực sự quan trọng nếu bạn cần thêm một vài lần nhấp để thực hiện cập nhật (nó không im lặng nữa).

@Cosmin nếu bạn không muốn sử dụng% appdata%, bạn có thể sử dụng% ProgramData% để lưu trữ các tệp đã tải xuống. Một cách chính xác hơn về mặt triết học sẽ là lưu trữ kho lưu trữ ở đó, sau đó nâng lên để cài đặt vào lần tiếp theo chương trình được chạy.
Bacon Bits

YÊU câu trả lời này và tôi đang đặt nó vào túi sau của mình (hiện tại, bản tải xuống kiểu "Itunes" đã tìm thấy sự hấp dẫn rộng rãi vì lý do tiết kiệm chi phí.)
Shannon Davis

3

Bạn không nên tạo các mục khởi động không cần thiết để kiểm tra các bản cập nhật như Adobe Flash Player (thật khó để theo dõi tất cả chúng và tôi không thể tìm ra cách để vô hiệu hóa kiểm tra ...) hoặc iTunes. Nó gây khó chịu cho người dùng (chuyên viên máy tính, dù sao). Một lựa chọn tốt hơn sẽ là kiểm tra các bản cập nhật khi khởi động ứng dụng như Firefox .

Một đơn giản không mong muốn "Cài đặt bản cập nhật?" cửa sổ sẽ không gây khó chịu cho người dùng. Hãy để nó cập nhật trong nền trong khi người dùng thực hiện các công việc khác và sau đó tự động khởi động ứng dụng của bạn.

Chỉ cần chắc chắn bao gồm một tùy chọn:

Kiểm tra cập nhật tại:

  • Đăng nhập (nếu bạn muốn làm phiền các chuyên viên máy tính)
  • Khởi động ứng dụng ( trên theo mặc định)
  • Cứ sau vài tuần ( tắt theo mặc định)

Hoặc một cái gì đó tương tự.


Nếu nó đáng để nỗ lực, tôi sẽ nói đi cho nó. Đó là quyết định của bạn.


2

Tôi nghĩ rằng bạn muốn thiết lập "ClickOnce".

http://msdn.microsoft.com/en-us/l Library / 144dbbz4 (v = vs.90) .aspx

ClickOnce là một công nghệ triển khai cho phép bạn tạo các ứng dụng dựa trên Windows tự cập nhật có thể được cài đặt và chạy với sự tương tác tối thiểu của người dùng. Triển khai ClickOnce khắc phục ba vấn đề chính trong triển khai:

Khó khăn trong việc cập nhật ứng dụng. Với việc triển khai Microsoft Windows Installer, bất cứ khi nào một ứng dụng được cập nhật, người dùng phải cài đặt lại toàn bộ ứng dụng; với triển khai ClickOnce, bạn có thể cung cấp cập nhật tự động. Chỉ những phần của ứng dụng đã thay đổi mới được tải xuống và sau đó ứng dụng cập nhật đầy đủ được cài đặt lại từ thư mục song song mới.

Tác động đến máy tính của người dùng. Với việc triển khai Windows Installer, các ứng dụng thường dựa vào các thành phần được chia sẻ, có khả năng xảy ra xung đột phiên bản; với triển khai ClickOnce, mỗi ứng dụng đều khép kín và không thể can thiệp vào các ứng dụng khác.

Quyền bảo mật. Triển khai Windows Installer yêu cầu quyền quản trị và chỉ cho phép cài đặt người dùng hạn chế; Triển khai ClickOnce cho phép người dùng không phải quản trị viên cài đặt và chỉ cấp các quyền Bảo mật truy cập mã cần thiết cho ứng dụng.


Đây không phải là câu hỏi về ưu và nhược điểm của nhấp chuột một lần và MSI (mà nhiều kết luận của bạn không chính xác và / hoặc không đầy đủ) mà là câu hỏi về các thực tiễn tốt nhất cho các giải pháp cập nhật tự động.
Christopher Họa sĩ

Dù sao tôi cũng đánh giá cao thông tin này và tôi sẽ chia sẻ nó với nhà phát triển để xem liệu anh ta có coi đó là một lựa chọn hay không - có lẽ anh ta nghĩ rằng anh ta sẽ phải tự mình phát triển quá trình cập nhật.

Chà, Christopher, hãy tiếp tục với MS, đó là trực tiếp từ MSDN. Đó thực sự là một nhận xét hữu ích quá.

Khi nó mã hóa các công nghệ triển khai, nó không bao giờ làm tôi ngạc nhiên khi ai đó đăng lên MSDN bị lỗi. Có rất ít người trong chúng ta thực sự hiểu công cụ này.
Christopher Họa sĩ

2

Cá nhân tôi đã đánh giá cao các ứng dụng làm một cái gì đó tương tự như khung Sparkle . Tôi đoán đó chỉ là một thứ của Mac, nhưng về cơ bản nó làm như sau (ngoài đỉnh đầu của tôi - tôi cho rằng hành vi có thể được điều chỉnh).

  1. Kiểm tra cập nhật (thường là lúc khởi động ứng dụng)
  2. Nếu có một, một cửa sổ riêng biệt được hiển thị với một thay đổi được định dạng độc đáo
  3. Sau đó, người dùng có thể bỏ qua phiên bản đó, cài đặt nó hoặc chọn để được nhắc nhở sau
  4. Nếu anh ta quyết định cài đặt ứng dụng, một thanh tiến trình sẽ được hiển thị bên dưới thay đổi
  5. Sau khi tải xuống, người dùng có thể quyết định thoát khỏi ứng dụng và cài đặt ngay lập tức hoặc cài đặt sau khi thoát khỏi ứng dụng

Xem xét rằng bạn đang nói về .msi, khung cụ thể này không thực sự có thể áp dụng được, nhưng trong trường hợp này tôi muốn đi với một số giải pháp hiện có hơn là phát minh lại bánh xe.


1

Tôi muốn nói rằng bạn thực sự phải biết người dùng của bạn. Nếu họ hiểu biết và có hứng thú mãnh liệt với việc cập nhật, # 1 sẽ hoạt động.

Đừng bao giờ đánh giá thấp sự lười biếng của người dùng vì khi chương trình của họ không hoạt động nữa vì họ không còn được hỗ trợ, bạn sẽ bị ngập trong các cuộc gọi bàn trợ giúp sau này.

Thời gian sẽ đến từ sự phát triển (# 2) hoặc hỗ trợ (# 1).


1

Cái này thì sao?

  • Khi khởi động ứng dụng, hãy kiểm tra phiên bản mới và (tùy chọn sau khi yêu cầu người dùng) tải xuống.
  • Khi quá trình tải xuống hoàn tất, hãy cung cấp một nút cho người dùng cho phép cài đặt lại và khởi động lại ứng dụng (không sử dụng hộp thoại trừ khi cập nhật là quan trọng).
  • Khi tắt ứng dụng, (tùy chọn sau khi yêu cầu người dùng) khởi động trình cài đặt. Trong trường hợp người dùng từ chối thực hiện cài đặt tại thời điểm này (có thể họ đang vội), hãy thực hiện lần sau trước khi ứng dụng bắt đầu.

Bạn không cần làm phiền người dùng, bạn không cần phải đóng bất cứ thứ gì ...


1

Tại sao không phải là một cái gì đó ở giữa?

Nhắc để tải xuống (hoặc thực hiện tùy chọn "tải xuống tự động"), sau khi hoàn tất lời nhắc để cài đặt bản cập nhật đã tải xuống (thực thi .msi). Bằng cách này, bạn phủ nhận nhược điểm của Số 2 (đóng cửa giữa công việc của người dùng) và vẫn giữ được sự thoải mái với chi phí thêm 1 lần nhấp.

Hộp thoại " Đóng và cài đặt cập nhật? " Nên dễ dàng truy cập (nhưng không gây khó chịu) khi người dùng từ chối lúc đầu. Với việc "Khởi chạy <tên chương trình>?" hộp kiểm ở cuối .msi sẽ gần giống như số 2 mà không thực sự có thêm công việc nào

@ bảo mật
Các chương trình trong Windows hiện đại có thể yêu cầu quyền thực hiện các hành động yêu cầu quyền quản trị viên (người dùng được hiển thị lời nhắc trong đó anh ta nhập mật khẩu của quản trị viên và sau đó chọn "có / không" để cấp quyền)


1

Tôi có 124 Hiệu cầm đồ sử dụng ứng dụng máy tính để bàn Quản lý cầm đồ của tôi. Bất cứ khi nào tôi có bản cập nhật mới, tôi đều gửi email cho họ để họ biết về bản cập nhật và thông tin chi tiết về nó. Sau đó, họ có tùy chọn FTP nó bằng cách đăng nhập vào trang web của tôi. Họ cũng có tùy chọn để khôi phục lại bản cập nhật. Trang web của tôi cũng theo dõi từng phiên bản cài đặt hiệu cầm đồ.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.