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 giống như chính Google Chrome: để tích 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ải thiện hiệu suất và cải thiện giao diện người dùng.
Nếu phát hành 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 nội dung gửi lên Cửa hàng Chrome trực tuyến đã vượt qua quy trình xem trước sẽ tự động được cung cấp trên trang thông tin của mục 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 các chính sách doanh nghiệp để đẩy tệp đó đến các thiết bị được quản lý, hãy tiếp tục đọc. Bạn cũng nên đọc phần Lưu trữ và Đóng gói.
Trước đây, khi các tiện ích bên ngoài cửa hàng được hỗ trợ, bạn có thể cập nhật tệp nhị phân và tiện ích theo bước khoá. Tuy nhiên, các tiện ích được lưu trữ trên Cửa hàng Chrome trực tuyến sẽ được cập nhật bằng 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 cẩn thận khi cập nhật các tiện ích có phần phụ thuộc trên tệp nhị phân (ví dụ: các tiện ích cũ sử dụng NPAPI).
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 mà quy trình kiểm tra bản cập nhật trả về là một tài liệu XML tệp kê khai bản cập nhật liệt kê phiên bản mới nhất của một tiện ích.
Mỗi vài giờ, 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 cập nhật sẽ gửi một yêu cầu đến URL đó để tìm tệp XML tệp 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, trình duyệt sẽ tải xuống và cài đặt phiên bản mới. Cũng như với 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ư với phiên bản đã cài đặt.
Cập nhật URL
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 mà máy chủ trả về phải là một tài liệu XML có dạng như sau (các phần được làm nổi bật 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. Hãy xem http://code.google.com/p/omaha/ để biết thêm chi tiết. Hệ thống tiện ích sử dụng các thuộc tính sau cho phần tử <app>
và <updatecheck>
của tệp kê khai bản cập nhật:
- appid
Mã nhận dạng tiện ích hoặc ứ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 mã nhận dạng của một tiện ích hoặc Ứng dụng Chrome bằng cách truy cập vào trang Tiện ích (chrome://extensions).
Tuy nhiên, các ứng dụng được lưu trữ sẽ không được liệt kê trên trang Tiện ích. Bạn có thể tìm mã nhận dạng của bất kỳ ứng dụng nào bằng cách làm theo các bước sau:
- Mở ứng dụng. Bạn có thể làm việc này bằng cách nhấp vào biểu tượng ứng dụng trên trang Thẻ mới.
- Mở bảng điều khiển JavaScript. Bạn có thể làm việc này bằng cách nhấp vào biểu tượng cờ lê rồi chọn Tools > Console JavaScript (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 hiển thị mã nhận dạng của ứng dụng dưới dạng một chuỗi được trích dẫn.
- cơ sở mã
URL đến tệp
.crx
.- version
Được ứng dụng khách sử dụng để xác định xem ứng dụng khách có nên tải tệp
.crx
docodebase
chỉ định xuống hay không. Giá trị này phải khớp với giá trị của "version" (phiên bản) trong tệpmanifest.json
của tệp.crx
.
Tệp XML tệp kê khai bản cập nhật có thể chứa thông tin về nhiều tiện ích bằng cách đưa vào nhiều phần tử <app>
.
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 phần mở rộng ngay trên trang Phần mở rộng.
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ảm thiểu công việc phía máy chủ. Bạn chỉ cần thêm một tệp XML tĩnh vào bất kỳ máy chủ web nào như Apache và cập nhật tệp XML đó khi phát hành các phiên bản tiện ích mới.
Các nhà phát triển nâng cao hơn có thể 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 mã nhận dạng và phiên bản tiện ích. Sau đó, họ có thể sử dụng cùng một URL cập nhật cho tất cả các tiện ích, trỏ đến một URL chạy mã phía máy chủ động thay vì 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 được mã hoá URL theo định dạng:
_id=<id>_&v=_<version>_
Ví dụ: giả sử bạn có hai tiện ích, cả hai đều trỏ đến cùng một URL cập nhật (http://test.com/extension_updates.php
):
- Phần mở rộng 1
- Mã nhận dạng: "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
- Phiên bản: "1.1"
- Phần mở rộng 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 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. Ví dụ: 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 khiến URL yêu cầu GET quá dài (trên 2000 ký tự), thì tính năng kiểm tra bản cập nhật sẽ đưa ra 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 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 một tiện ích hoặc ứng dụng 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 tự động cập nhật, nhưng có thể mất vài ngày thì phần lớn cơ sở người dùng mới cập nhật lên một bản phát hành mới bất kỳ. Để đảm bảo rằng một bản cập nhật nhất định chỉ áp dụng cho các phiên bản Google Chrome ngang 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ử <app>
trong tệp kê khai bản 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 sẽ đả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.