Chrome 웹 스토어 외부에 호스팅된 확장 프로그램은 Linux 사용자만 설치할 수 있습니다. 이
도움말에서는 개인 서버에서 .crx
파일을 패키징, 호스팅, 업데이트하는 방법을 설명합니다. 만약
Chrome 웹 스토어를 통해서만 확장 프로그램이나 테마를 배포하는 경우 웹 스토어
호스팅 및 업데이트를 참조하세요.
포장
확장 프로그램과 테마는 .crx
파일로 제공됩니다. Chrome 개발자를 통해 업로드하는 경우
Dashboard를 만드는 경우 대시보드는 .crx
파일을 자동으로 만듭니다. 개인
.crx
파일을 로컬로 만들거나 Chrome 웹 스토어에서 다운로드해야 합니다.
Chrome 웹 스토어에서 .crx 다운로드
확장 프로그램이 Chrome 웹 스토어에서 호스팅되는 경우 .crx
파일은
개발자 대시보드 '내 등록정보'에서 확장 프로그램을 찾습니다. '추가 정보'를 클릭하세요.
팝업 창에서 파란색 main.crx
링크를 클릭하여 다운로드합니다.
다운로드한 파일은 개인 서버에서 호스팅할 수 있습니다. 이것은 확장 프로그램의 콘텐츠가 Chrome 웹 스토어에서 서명되기 때문입니다. 이 잠재적 공격과 조작을 탐지하는 데 도움이 됩니다.
로컬에서 .crx 만들기
확장 프로그램 디렉터리는 확장 프로그램 관리 페이지에서 .crx
파일로 변환됩니다. 다음으로 이동
chrome://extensions/
를 클릭하거나 Chrome 메뉴를 클릭하고 '도구 더보기' 위로 마우스를 가져갑니다. +
'확장 프로그램'을 선택합니다.
확장 프로그램 관리 페이지에서 옆에 있는 전환 스위치를 클릭하여 개발자 모드를 사용 설정합니다. 개발자 모드. 그런 다음 확장 프로그램 패키지 버튼을 선택합니다.
확장 프로그램 루트 디렉터리 필드에 확장 프로그램의 폴더 경로를 지정한 후 광고 확장 포장 버튼 최초 패키지인 경우 비공개 키 필드는 무시합니다.
Chrome에서 .crx
파일과 확장 프로그램의 다음 파일이 포함된 .pem
파일, 이렇게 두 개의 파일을 만듭니다.
비공개 키를 생성합니다.
비공개 키를 분실하지 마세요. .pem
파일을 안전한 곳에 보관합니다. 될 것입니다
확장 프로그램을 업데이트해야 합니다.
.crx 패키지 업데이트
manifest.json
에서 버전 번호를 늘려 확장 프로그램의 .crx
파일을 업데이트합니다.
{
...
"version": "1.5",
...
}
}
{
...
"version": "1.6",
...
}
}
확장 프로그램 관리 페이지로 돌아가 광고 확장 패키지 버튼을 클릭합니다. 개인 키의 위치에 관한 정보를 제공합니다.
이 페이지에는 업데이트된 패키지 확장 프로그램의 경로가 제공됩니다.
명령줄을 통해 패키징
chrome.exe
를 호출하여 명령줄에서 확장 프로그램을 패키징합니다. --pack-extension
사용
플래그를 사용하여 확장 프로그램 폴더 위치를 지정하고 --pack-extension-key
플래그를 사용하여
는 확장 프로그램의 비공개 키 파일 위치를 지정합니다.
chrome.exe --pack-extension=C:\myext --pack-extension-key=C:\myext.pem
호스팅
.crx
파일을 호스팅하는 서버는 적절한 HTTP 헤더를 사용하여 사용자가
광고 확장을 클릭합니다.
Chrome은 다음 중 하나에 해당하는 경우 파일을 설치할 수 있는 것으로 간주합니다.
- 파일의 콘텐츠 유형이
application/x-chrome-extension
입니다. - 파일 접미사는
.crx
이며 다음 조건이 모두 참입니다. <ph type="x-smartling-placeholder">- </ph>
- 이 파일은 HTTP 헤더
X-Content-Type-Options: nosniff
로 제공되지 않습니다. - 파일은 다음 콘텐츠 유형 중 하나로 게재됩니다.
- 빈 문자열
- '텍스트/일반'
- "application/octet-stream"
- '알 수 없음/알 수 없음'
- '애플리케이션/알 수 없음'
- '*/*'
- 이 파일은 HTTP 헤더
설치 가능한 파일을 인식하지 못하는 가장 일반적인 이유는 서버에서
헤더 X-Content-Type-Options: nosniff
. 두 번째로 일반적인 이유는 서버가
알 수 없는 콘텐츠 유형: 이전 목록에 없는 콘텐츠 유형입니다. HTTP 헤더 문제를 해결하려면
서버 구성을 변경하거나 다른 서버에서 .crx
파일을 호스팅해 보세요.
업데이트 중
브라우저는 설치된 확장 프로그램에 업데이트 URL이 있는지 몇 시간마다 확인합니다. 각 객체에 대해 해당 URL에 요청하여 업데이트 매니페스트 XML 파일을 찾습니다.
- 업데이트 확인에서 반환되는 콘텐츠는 최신 상태를 명시한 업데이트 매니페스트 XML 문서입니다. 확장 프로그램 버전입니다
업데이트 매니페스트에 설치된 버전보다 최신 버전이 표시된 경우
새 버전이 다운로드 및 설치됩니다. 수동 업데이트와 마찬가지로 새 .crx
파일은 서명되어야 합니다.
현재 설치된 버전과 동일한 개인 키를 사용합니다.
업데이트 URL
Chrome 웹 스토어 외부 서버에서 호스팅되는 확장 프로그램은update_url
manifest.json
파일을 다운로드합니다.
{
"name": "My extension",
...
"update_url": "https://myhost.com/mytestextension/updates.xml",
...
}
매니페스트 업데이트
서버가 반환한 업데이트 매니페스트는 XML 문서여야 합니다.
<?xml version='1.0' encoding='UTF-8'?>
<gupdate xmlns='http://www.google.com/update2/response' protocol='2.0'>
<app appid='aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa'>
<updatecheck codebase='https://myhost.com/mytestextension/mte_v2.crx' version='2.0' />
</app>
</gupdate>
이 XML 형식은 Google의 업데이트 인프라인 Omaha에서 차용한 것입니다. 이
광고 확장 시스템은 <app>
및 <updatecheck>
요소에 다음 속성을 사용합니다.
매니페스트 업데이트:
appid | 확장 프로그램 ID는 패키징에 설명된 대로 공개 키의 해시를 기반으로 생성됩니다. 확장 프로그램의 ID는 확장 프로그램 관리 페이지에 표시됩니다. |
코드베이스 | .crx 파일의 HTTPS URL. |
version | 클라이언트에서 codebase 로 지정된 .crx 파일을 다운로드해야 하는지 결정하는 데 사용합니다. 'version'의 값과 일치해야 합니다. .crx 파일의 manifest.json 파일에 있습니다. |
업데이트 매니페스트 XML 파일에는 여러 개의 <app> 요소
테스트
기본 업데이트 확인 빈도는 몇 시간이지만 Update 확장 프로그램 관리 페이지에서 지금 확장 프로그램 버튼을 클릭하세요.
이렇게 하면 설치된 모든 확장 프로그램에 대한 검사가 시작됩니다.
고급 사용법: 요청 매개변수
기본적인 자동 업데이트 메커니즘은 서버 측 작업을 정적 XML 파일을 Apache와 같은 일반 웹 서버에 설치하고 해당 XML 파일을 새 파일로 업데이트합니다. 확장 프로그램 버전이 출시됩니다.
여러 확장 프로그램을 호스팅하는 개발자는 확장 프로그램 ID를 나타내는 요청 매개변수를 확인할 수 있습니다. 버전 정보를 확인할 수 있습니다 이 매개변수를 포함하면 확장 프로그램이 동일한 URL에 정적 XML 파일 대신 동적 서버 측 코드를 실행합니다.
요청 매개변수의 형식은 다음과 같습니다.
?x=EXTENSION_DATA
여기서 EXTENSION_DATA
는 다음과 같은 형식의 URL 인코딩 문자열입니다.
id=EXTENSION\_ID&v=EXTENSION\_VERSION
예를 들어 두 개의 확장 프로그램이 동일한 업데이트 URL (https://test.com/extension_updates.php
)을 가리킵니다.
- 확장 프로그램 1
<ph type="x-smartling-placeholder">
- </ph>
- ID: 'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa'
- 버전: '1.1'
- 확장 프로그램 2
<ph type="x-smartling-placeholder">
- </ph>
- ID: 'bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb'
- 버전: '0.4'
각 확장 프로그램의 업데이트 요청은 다음과 같습니다.
https://test.com/extension_updates.php?x=id%3Daaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa%26v%3D1.1
및
https://test.com/extension_updates.php?x=id%3Dbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb%26v%3D0.4
고유한 업데이트 URL마다 하나의 요청에 여러 확장 프로그램을 나열할 수 있습니다. 위 예를 들어 사용자가 두 확장 프로그램을 모두 설치한 경우 두 요청이 하나의 단일 요청:
https://test.com/extension_updates.php?x=id%3Daaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa%26v%3D1.1&x=id%3Dbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb%26v%3D0.4
동일한 업데이트 URL을 사용하는 설치된 확장 프로그램의 수가 GET 요청을 실행할 만큼 큰 경우 URL이 너무 길면 (영문 기준 2,000자 이상) 업데이트 확인 시 있습니다.
고급 사용: 최소 브라우저 버전
확장 프로그램 시스템에 더 많은 API가 추가됨에 따라 작동하는 확장 프로그램의 업데이트된 버전이 제공됩니다.
최신 버전의 브라우저에서만 출시될 수 있습니다. Chrome 자체는 자동 업데이트되기는 하지만
대부분의 사용자층이 새 버전으로 업데이트되기까지 며칠이 걸릴 수 있습니다. 받는사람
특정 업데이트 버전 이상의 Chrome 버전에만
'prodversionmin'을 추가하세요. 속성을 업데이트 응답의
<?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>
이렇게 하면 사용자가 Chrome을 실행하는 경우에만 버전 2로 자동 업데이트됩니다. 3.0.193.0 이상