Tự động cập nhật

Chúng tôi muốn các tiện ích và ứng dụng được tự động cập nhật vì một số lý do tương tự như Google Chrome: để kết hợp các bản sửa lỗi và bản sửa lỗi bảo mật, thêm các tính năng mới hoặc các tính năng nâng cao hiệu suất và cải thiện giao diện người dùng.

Nếu xuất bản bằng Trang tổng quan dành cho nhà phát triển Chrome, bạn nên bỏ qua trang này. Những lượt gửi trên Cửa hàng Chrome trực tuyến có vượt qua quy trình xem trước sẽ tự động xuất hiện tại trang thông tin trên Cửa hàng Chrome trực tuyến của tiện ích và được triển khai cho người dùng cuối.

Nếu bạn đang lưu trữ tệp CRX trên máy chủ web và sử dụng chính sách doanh nghiệp để đẩy tệp đó đến thiết bị được quản lý, hãy tiếp tục đọc. Bạn cũng nên đọc Lưu trữĐóng gói.

Trước đây, khi hỗ trợ các tiện ích ngoài cửa hàng, có thể tệp nhị phân gốc và tiện ích được cập nhật ở bước khoá. Tuy nhiên, các tiện ích lưu trữ trên Cửa hàng Chrome trực tuyến được cập nhật thông qua cơ chế cập nhật của Chrome mà nhà phát triển không kiểm soát. Nhà phát triển tiện ích nên thận trọng khi cập nhật các tiện ích có phần phụ thuộc trên tệp nhị phân gốc (ví dụ: các tiện ích cũ sử dụng IBAN).

Tổng quan

  • Tệp kê khai có thể chứa trường "update_url", trỏ đến một vị trí để kiểm tra bản cập nhật.
  • Nội dung trả về trong quá trình kiểm tra bản cập nhật là một tài liệu XML tệp kê khai cập nhật, liệt kê phiên bản mới nhất của một tiện ích.

Vài giờ một lần, trình duyệt sẽ kiểm tra xem có tiện ích hoặc ứng dụng nào đã cài đặt có URL cập nhật hay không. Đối với mỗi URL, trình phân tích cú pháp sẽ gửi yêu cầu đến URL đó để tìm tệp XML kê khai cập nhật. Nếu tệp kê khai cập nhật đề cập đến một phiên bản mới hơn phiên bản đã cài đặt, thì trình duyệt sẽ tải xuống và cài đặt phiên bản mới. Tương tự như với các bản cập nhật thủ công, tệp .crx mới phải được ký bằng cùng một khoá riêng tư như phiên bản hiện được cài đặt.

URL cập nhật

Nếu đang lưu trữ tiện ích hoặc ứng dụng của riêng mình, bạn cần thêm trường "update_url" vào tệp manifest.json như sau:

{
  "name": "My extension",
  ...
  "update_url": "http://myhost.com/mytestextension/updates.xml",
  ...
}

Cập nhật tệp kê khai

Tệp kê khai cập nhật do máy chủ trả về phải là tài liệu XML có dạng như sau (các phần được đánh dấu cho biết những phần bạn nên sửa đổi):

<?xml version='1.0' encoding='UTF-8'?>
<gupdate xmlns='http://www.google.com/update2/response' protocol='2.0'>
  <app appid='aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa'>
    <updatecheck codebase='http://myhost.com/mytestextension/mte_v2.crx' version='2.0' />
  </app>
</gupdate>

Định dạng XML này vay mượn từ định dạng được Omaha, cơ sở hạ tầng cập nhật của Google sử dụng. Hãy xem http://code.google.com/p/omaha/ để biết thêm thông tin chi tiết. Hệ thống tiện ích sử dụng các thuộc tính sau cho các phần tử của tệp kê khai cập nhật:

appid

Tiện ích hoặc mã ứng dụng, được tạo dựa trên hàm băm của khoá công khai, như mô tả trong phần Đóng gói. Bạn có thể tìm thấy mã nhận dạng của tiện ích hoặc ứng dụng Chrome bằng cách truy cập trang Tiện ích (chrome://extensions).

Tuy nhiên, ứng dụng được lưu trữ không được liệt kê trên trang Tiện ích. Bạn có thể tìm thấy mã nhận dạng của bất kỳ ứng dụng nào theo các bước sau:

  • Mở ứng dụng. Bạn có thể thực hiện việc này bằng cách nhấp vào biểu tượng của ứng dụng trên trang Thẻ mới.
  • Mở bảng điều khiển JavaScript. Bạn có thể thực hiện việc này bằng cách nhấp vào biểu tượng cờ lê rồi chọn Tools > JavaScript Console (Công cụ > Bảng điều khiển JavaScript).
  • Nhập biểu thức sau vào bảng điều khiển JavaScript: chrome.app.getDetails().id. Bảng điều khiển cho thấy mã nhận dạng của ứng dụng dưới dạng một chuỗi được đặt trong dấu ngoặc kép.
cơ sở mã

URL đến tệp .crx.

version

Ứng dụng dùng để xác định xem có tải xuống tệp .crx do codebase chỉ định hay không. Giá trị này phải khớp với giá trị "version" trong tệp manifest.json của tệp .crx.

Tệp XML của tệp kê khai cập nhật có thể chứa thông tin về nhiều tiện ích bằng cách bao gồm nhiều phần tử.

Kiểm thử

Tần suất kiểm tra bản cập nhật mặc định là vài giờ, nhưng bạn có thể buộc cập nhật bằng cách sử dụng nút Cập nhật tiện ích ngay trên trang Tiện ích.

Cách sử dụng nâng cao: tham số yêu cầu

Cơ chế tự động cập nhật cơ bản được thiết kế để giúp phía máy chủ hoạt động dễ dàng như chỉ cần thả tệp XML tĩnh vào bất kỳ máy chủ web đơn giản nào như Apache, đồng thời cập nhật tệp XML đó khi bạn phát hành phiên bản tiện ích mới.

Các nhà phát triển cao cấp hơn nên tận dụng việc chúng tôi thêm các tham số vào yêu cầu tệp kê khai cập nhật để cho biết phiên bản và mã tiện ích. Sau đó, họ có thể sử dụng cùng một URL cập nhật cho tất cả tiện ích, trỏ đến một URL đang chạy mã phía máy chủ động thay vì một tệp XML tĩnh.

Định dạng của các tham số yêu cầu là:

?x=_<extension_data>_

Trong đó _<extension_data>_ là một chuỗi URL được mã hoá có định dạng:

_id=<id>_&v=_<version>_

Ví dụ: giả sử bạn có hai phần mở rộng, cả hai đều trỏ đến cùng một URL cập nhật (http://test.com/extension_updates.php):

  • Tiện ích 1
    • Mã nhận dạng: "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
    • Phiên bản: "1.1"
  • Tiện ích 2
    • Mã nhận dạng: "bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb"
    • Phiên bản: "0.4"

Yêu cầu cập nhật từng tiện ích sẽ là:

  • http://test.com/extension_updates.php?x=id%3Daaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa%26v%3D1.1
  • http://test.com/extension_updates.php?x=id%3Dbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb%26v%3D0.4

Bạn có thể liệt kê nhiều tiện ích trong một yêu cầu cho mỗi URL cập nhật riêng biệt. Trong ví dụ trên, nếu người dùng đã cài đặt cả hai tiện ích, thì hai yêu cầu này sẽ được hợp nhất thành một yêu cầu duy nhất:

http://test.com/extension_updates.php?x=id%3Daaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa%26v%3D1.1&x=id%3Dbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb%26v%3D0.4

Nếu số lượng tiện ích đã cài đặt sử dụng cùng một URL cập nhật đủ lớn đến mức URL yêu cầu GET quá dài (hơn 2000 ký tự trở lên), thì quá trình kiểm tra bản cập nhật sẽ đưa ra thêm các yêu cầu GET bổ sung nếu cần.

Cách sử dụng nâng cao: phiên bản trình duyệt tối thiểu

Khi chúng tôi thêm nhiều API hơn vào hệ thống tiện ích, có thể bạn sẽ muốn phát hành phiên bản cập nhật của tiện ích hoặc ứng dụng sẽ chỉ hoạt động với các phiên bản trình duyệt mới hơn. Mặc dù bản thân Google Chrome được cập nhật tự động, nhưng có thể mất vài ngày trước khi phần lớn cơ sở người dùng cập nhật lên bản phát hành mới bất kỳ. Để đảm bảo một bản cập nhật nhất định chỉ áp dụng cho các phiên bản Google Chrome bằng hoặc cao hơn một phiên bản cụ thể, bạn hãy thêm thuộc tính "prodversionmin" vào phần tử trong tệp kê khai cập nhật. Ví dụ:

<?xml version='1.0' encoding='UTF-8'?>
<gupdate xmlns='http://www.google.com/update2/response' protocol='2.0'>
  <app appid='aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa'>
    <updatecheck codebase='http://myhost.com/mytestextension/mte_v2.crx' version='2.0' prodversionmin='3.0.193.0'/>
  </app>
</gupdate>

Điều này đảm bảo rằng người dùng chỉ tự động cập nhật lên phiên bản 2 nếu họ đang chạy Google Chrome 3.0.193.0 trở lên.