title-override Structure of an Installable Bundle /title-override 이 부분은 에러가 나서 리마킹한 부분임. 나중에 새로 고칠 필요가 있음.
XULRunner 어플리케이션, 확장 기능(extension), 테마(themes) 등은 공통의 디렉토리 구조를 공유합니다. 경우에 따라서는 같은 번들이 독립적인 XULRunner 어플리케이션으로 쓰임과 동시에 설치 가능한 확장 기능으로 사용될 수도 있습니다. 번들의 기본 구조에는 다음과 같은 파일들이 포함될 수 있습니다
/install.rdf Extension/Theme Install Manifest /application.ini Application Launch Manifest /components/* Component and XPT Files (>=1.7) /defaults/preferences/*.js Default Preferences (>=1.7) /plugins/* NPAPI Plugins (>=1.8) /chrome.manifest Chrome Registration Manifest (>=1.8) /chrome/icons/default/* Window Icons (>=1.8)
물론 확장 기능을 구현할 때 이러한 모든 디렉토리가 필요한 것은 아닙니다(그렇게 되지도 않을 것입니다). 테마의 경우에는 보안의 이유로 제한을 받으며, 보통 테마와 JAR 파일을 등록하는 chrome.manifest 만을 제공합니다.
플랫폼 종속적(platform specific)인 하위 디렉토리들
경우에 따라서는 한 개의 확장 기능이나 어플리케이션이 여러 플랫폼을 지원하기 위한 바이너리 구성 요소 또는 플러그인을 포함하여야 할 때가 있습니다. 또는 테마 저작자가 플랫폼 종속적인 JAR 파일들을 플랫폼별로 포함시킬 수도 있습니다. 첫번째 경우에는 extension/app loader 가 플랫폼 종속적인 파일들( Toolkit/Gecko 1.8, Firefox/Thunderbird 1.5 로 시작하는 )만을 위한 하위 디렉토리를 가지게 됩니다. 플랫폼 문자열은 툴킷 빌드 과정에서 정의되는데, 운영체제, 프로세서 아키텍처, 컴파일러 등의 이름들의 조합으로 만들어지며, 그 형식은 다음과 같습니다.
{OS_TARGET}_{TARGET_XPCOM_ABI}
주 확장 디렉토리에서 로드되는 모든 파일들은 (만약 존재한다면) 다음 하위 디렉토리로부터 로드됩니다.
/platform/{platform string}
예를 들어, 리눅스, 매킨토시, 윈도우에서 돌아가는 플러그인을 만들고자 하는 경우, 제작사는 다음과 같은 파일들을 제공하게 됩니다.
/platform/Linux_x86-gcc3/plugins/libMyPlugin.so /platform/WINNT_x86-msvc/plugins/MyPlugin.dll /platform/Darwin_ppc-gcc3/plugins/libMyPlugin.dylib
XPT 파일들은 플랫폼 종속적이 아니기 때문에 모든 관련된 XPT 파일들은 일단 컴포넌트 디렉토리에 저장됩니다.
/components/MyPlugin.xpt
만약 확장 기능이 플랫폼 종속적이지만 바이너리가 아닌 경우에는 ( 스크립트에서 윈도우 레지스트리를 참조하는 경우와 같이 ), 다음과 같이 운영 체제 이름만을 플랫폼 하위 디렉토리로 사용할 수 있습니다.
/platform/WINNT/components/registerDoctype.js
플랫폼 종속적인 JAR 파일들이 사용되는 경우, 각 플랫폼 디렉토리에는 각각의 chrome.manifest
파일이 저장되어 있어야 합니다.
chrome.manifest chrome/mytheme-base.jar platform/Darwin/chrome.manifest platform/Darwin/chrome/mytheme-mac.jar platform/WINNT/chrome.manifest platform/WINNT/chrome/mytheme-win.jar
app/extension loader 는 베이스 디렉토리를 먼저 처리한 후, 적용 가능한 플랫폼 디렉토리를 처리합니다. ( 먼저 /{OS_TARGET}/을 처리하고, /{OS_TARGET}_{TARGET_XPCOM_ABI}/를 처리합니다. ) 만약 여러 개의 디렉토리들에 기본 설정들이 정의되어 있는 경우에는 나중에 로드되는 항목이 먼저 로딩된 항목을 덮어쓰게 됩니다.
어플리케이션 종속적인(Application-specific) 확장 기능 파일들
위에 기술된 확장 기능 파일들 외에, 어플리케이션의 경우 확장 기능으로부터 추가적인 파일을 읽을 수도 있습니다. 예를 들어 Firefox 1.5 나 상위 버전의 경우,
/searchplugins/*.src
로부터 Sherlock 검색 플러그인을 읽을 수도 있습니다. Firefox 2 와 그 상위 버전들은
/searchplugins/*.xml
디렉토리로부터 MozSearch and OpenSearch plugins를,
/dictionaries/*.{aff|dic}
디렉토리로부터 Myspell 사전을 읽을 수도 있습니다.
Toolkit API 에 대한 공식 문서
- 설치 가능한 번들: 설치 가능한 번들(확장 기능, 테마, XULRunner 어플리케이션 등)에 대하여 기술하고 있습니다.
- 확장기능 포장: 확장 기능을 포장하는 방법에 대한 정보를 제공합니다.
- 테마 포장: 테마 기능을 포장하는 방법에 대한 정보를 제공합니다.
- 여러 항목을 포함한 XPI 포장: 여러 항목들이 포함되는 XPI 를 포장하는 방법에 대한 정보를 제공합니다.
- XUL 응용프로그램 포장: XULRunner 응용프로그램을 포장하는 방법에 대한 정보를 제공합니다.
- Chrome 등록: Chrome의 등록하는 방법에 대한 정보를 제공합니다.