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 tính năng mới hoặc tính năng nâng cao hiệu suất cũng như 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. Cửa hàng Chrome trực tuyến Những lượt gửi qua cửa hàng mà đáp ứng yêu cầu xem trước sẽ tự động được cung cấp trên trang thông tin mặt hàng của tiện ích trên Cửa hàng Chrome trực tuyến 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ày lên máy chủ được quản lý thiết bị, hãy tiếp tục đọc. Bạn cũng nên đọc phần Lưu trữĐóng gói.

Trước đây, khi tiện ích ngoài cửa hàng được hỗ trợ, bạn có thể có tệp nhị phân gốc và tiện ích sẽ được cập nhật trong bước khoá. Tuy nhiên, những tiện ích được lưu trữ trên Cửa hàng Chrome trực tuyến lại đượ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 hãy cẩn thận khi cập nhật các tiện ích có phần phụ thuộc vào tệp nhị phân gốc (ví dụ: tiện ích cũ sử dụng NPAPI).

Tổng quan

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

Cứ 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 đã cài đặt nào có URL cập nhật hay không. Cho mỗi tệp sẽ gửi yêu cầu đến URL đó để tìm tệp XML của tệp kê khai cập nhật. Nếu việc cập nhật tệp kê khai đề cập đến một phiên bản mới hơn phiên bản được cài đặt, trình duyệt sẽ tải xuống và cài đặt phiên bản mới. Giống 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 làm phiên bản hiện được cài đặt.

Cập nhật URL

Nếu đang lưu trữ ứng dụng hoặc tiện ích của riêng mình, bạn cần phải thêm thuộc tính "update_url" cho trường 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 được máy chủ trả về phải là tài liệu XML có dạng như sau (nội dung đượ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 được mượn từ định dạng mà Omaha – cơ sở hạ tầng cập nhật của Google sử dụng. Xem http://code.google.com/p/omaha/ để biết thêm chi tiết. Hệ thống tiện ích sử dụng 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 Đóng gói. Bạn có thể tìm thấy mã 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 bằng cách sử dụng các bước sau:

  • Mở ứng dụng cần xác minh. Bạn có thể thực hiện việc này bằng cách nhấp vào biểu tượng thẻ 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ê và chọn 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. Chiến lược phát hành đĩa đơn 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 trích dẫn.
cơ sở mã

URL đến tệp .crx.

version

Được ứng dụng sử dụng để xác định xem có tải xuống tệp .crx được chỉ định bởi codebase Phiên bản này phải khớp với giá trị của "phiên bản" 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 phần mở rộng bằng cách đưa vào .

Thử nghiệm

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: yêu cầu tham số

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ỉ thả tệp XML tĩnh lên bất kỳ máy chủ web thuần tuý nào như Apache, rồi cập nhật tệp XML đó khi bạn phát hành các phiên bản mới của tiện ích.

Các nhà phát triển cao cấp hơn có thể muốn tận dụng thực tế là chúng tôi thêm các thông 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 cập nhật URL cho tất cả tiện ích của họ, trỏ đến một URL chạy mã động phía máy chủ của một tệp XML tĩnh.

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

?x=_<extension_data>_

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

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

Ví dụ: giả sử bạn có hai tiện ích, cả hai tiện ích đề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: "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
    • Phiên bản: "1.1"
  • Tiện ích 2
    • Mã nhận dạng: "bbbbbbbbbbbbbbbbbbbbbbbbbbbbbb"
    • Phiên bản: "0.4"

Yêu cầu cập nhật từng phần mở rộng riêng lẻ 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. Dành cho đối tượng trên ví dụ: nếu người dùng đã cài đặt cả hai tiện ích, thì 2 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 để đáp ứng một yêu cầu GET URL quá dài (trên 2.000 ký tự) nên quá trình kiểm tra bản cập nhật sẽ đưa ra các yêu cầu GET bổ sung dưới dạng 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 muốn phát hành bản cập nhật phiên bản tiện ích hoặc ứng dụng chỉ hoạt động với các phiên bản mới hơn của trình duyệt. Trong khi Google Chrome đã được cập nhật tự động. Có thể mất vài ngày để phần lớn cơ sở người dùng có được được cập nhật lên bản phát hành mới bất kỳ. Để đảm bảo rằng một bản cập nhật cụ thể sẽ chỉ áp dụng cho Google Chrome có phiên bản bằng hoặc cao hơn một phiên bản cụ thể, thì bạn hãy thêm "prodversionmin" cho 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>

Việc này sẽ đảm bảo rằng người dùng sẽ chỉ tự động cập nhật lên phiên bản 2 khi họ đang sử dụng Google Chrome 3.0.193.0 trở lên.