Bundles

  • 리비전 슬러그: Bundles
  • 리비전 제목: Bundles
  • 리비전 아이디: 198504
  • 제작일시:
  • 만든이: 애들아빠
  • 현재 리비전인가요? 아니오
  • 댓글

리비전 내용

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 사전을 읽을 수도 있습니다.

Official References for Toolkit API

{{wiki.template(':ko/Toolkit_API/Official_References')}}

{{ wiki.languages( { "en": "en/Bundles", "fr": "fr/Bundles" } ) }}

리비전 소스

<p><span class="comment">title-override Structure of an Installable Bundle /title-override 이 부분은 에러가 나서 리마킹한 부분임. 나중에 새로 고칠 필요가 있음.</span>
</p><p><a href="ko/XUL_Application_Packaging">XULRunner 어플리케이션</a>이나, <a href="ko/Extensions">확장 기능(extension)</a>, 그리고 <a href="ko/Themes">테마(themes)</a> 등과 같은 것들은 공통의 디렉토리 구조를 공유합니다. 경우에 따라서는 같은 번들이 독립적인 XULRunner 어플리케이션으로 쓰임과 동시에 설치 가능한 확장 기능으로 사용될 수도 있습니다. 번들의 기본 구조에는 다음과 같은 파일들이 포함될 수 있습니다 
</p>
<pre class="eval">/<a href="ko/Install.rdf">install.rdf</a>                        <i>Extension/Theme Install Manifest</i>
/<a href="ko/XUL_Application_Packaging">application.ini</a>                    <i>Application Launch Manifest</i>
/components/*                       <i>Component and XPT Files</i>      (&gt;=1.7)
<a href="ko/Building_an_Extension#Defaults_Files">/defaults/preferences/*.js</a>          <i>Default Preferences</i>          (&gt;=1.7)
/plugins/*                          <i>NPAPI Plugins</i>                (&gt;=1.8)
/<a href="ko/Chrome.manifest">chrome.manifest</a>                    <i>Chrome Registration Manifest</i> (&gt;=1.8)
/<a href="ko/Window_icons">chrome/icons/default/*</a>             <i>Window Icons</i>                 (&gt;=1.8)
</pre>
<p>물론 확장 기능을 구현할 때 이러한 모든 디렉토리가 필요한 것은 아닙니다(그렇게 되지도 않을 것입니다). 테마의 경우에는 보안의 이유로 제한을 받으며, 보통 테마와 JAR 파일을 등록하는 <a href="ko/Chrome.manifest">chrome.manifest</a> 만을 제공합니다.  
</p><p><br>
</p>
<h3 name=".ED.94.8C.EB.9E.AB.ED.8F.BC_.EC.A2.85.EC.86.8D.EC.A0.81.28platform_specific.29.EC.9D.B8_.ED.95.98.EC.9C.84_.EB.94.94.EB.A0.89.ED.86.A0.EB.A6.AC.EB.93.A4"> 플랫폼 종속적(platform specific)인 하위 디렉토리들 </h3>
<p>경우에 따라서는 한 개의 확장 기능이나 어플리케이션이 여러 플랫폼을 지원하기 위한 바이너리 구성 요소 또는 플러그인을 포함하여야 할 때가 있습니다. 또는 테마 저작자가 플랫폼 종속적인 JAR 파일들을 플랫폼별로 포함시킬 수도 있습니다. 첫번째 경우에는 extension/app loader 가 플랫폼 종속적인 파일들( Toolkit/Gecko 1.8, Firefox/Thunderbird 1.5 로 시작하는 )만을 위한 하위 디렉토리를 가지게 됩니다. 플랫폼 문자열은 툴킷 빌드 과정에서 정의되는데, 운영체제, 프로세서 아키텍처, 컴파일러 등의 이름들의 조합으로 만들어지며, 그 형식은 다음과 같습니다. 
</p>
<pre class="eval"><i>{OS_TARGET}</i>_<i>{<a href="ko/XPCOM_ABI">TARGET_XPCOM_ABI</a>}</i>
</pre>
<p>주 확장 디렉토리에서 로드되는 모든 파일들은 (만약 존재한다면) 다음 하위 디렉토리로부터 로드됩니다.  
</p>
<pre class="eval">/platform/<i>{platform string}</i>
</pre>
<p>예를 들어, 리눅스, 매킨토시, 윈도우에서 돌아가는 플러그인을 만들고자 하는 경우, 제작사는 다음과 같은 파일들을 제공하게 됩니다. 
</p>
<pre class="eval">/platform/Linux_x86-gcc3/plugins/libMyPlugin.so
/platform/WINNT_x86-msvc/plugins/MyPlugin.dll
/platform/Darwin_ppc-gcc3/plugins/libMyPlugin.dylib
</pre>
<p>XPT 파일들은 플랫폼 종속적이 아니기 때문에 모든 관련된 XPT 파일들은 일단 컴포넌트 디렉토리에 저장됩니다.  
</p>
<pre class="eval">/components/MyPlugin.xpt
</pre>
<p>만약 확장 기능이 플랫폼 종속적이지만 바이너리가 아닌 경우에는 ( 스크립트에서 윈도우 레지스트리를 참조하는 경우와 같이 ), 다음과 같이 운영 체제 이름만을 플랫폼 하위 디렉토리로 사용할 수 있습니다. 
</p>
<pre class="eval">/platform/WINNT/components/registerDoctype.js
</pre>
<p>플랫폼 종속적인 JAR 파일들이 사용되는 경우, 각 플랫폼 디렉토리에는 각각의 <code>chrome.manifest</code>파일이 저장되어 있어야 합니다. 
</p>
<pre class="eval">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
</pre>
<p>app/extension loader 는 베이스 디렉토리를 먼저 처리한 후, 적용 가능한 플랫폼 디렉토리를 처리합니다. ( 먼저 /{OS_TARGET}/을 처리하고,  /{OS_TARGET}_{<a href="ko/XPCOM_ABI">TARGET_XPCOM_ABI</a>}/를 처리합니다. ) 만약 여러 개의 디렉토리들에 기본 설정들이 정의되어 있는 경우에는 나중에 로드되는 항목이 먼저 로딩된 항목을 덮어쓰게 됩니다.  
</p>
<h3 name=".EC.96.B4.ED.94.8C.EB.A6.AC.EC.BC.80.EC.9D.B4.EC.85.98_.EC.A2.85.EC.86.8D.EC.A0.81.EC.9D.B8.28Application-specific.29_.ED.99.95.EC.9E.A5_.EA.B8.B0.EB.8A.A5_.ED.8C.8C.EC.9D.BC.EB.93.A4"> 어플리케이션 종속적인(Application-specific) 확장 기능 파일들 </h3>
<p>위에 기술된 확장 기능 파일들 외에, 어플리케이션의 경우 확장 기능으로부터 추가적인 파일을 읽을 수도 있습니다. 예를 들어 <a href="ko/Firefox_1.5">Firefox 1.5</a> 나 상위 버전의 경우, 
</p>
<pre class="eval">/searchplugins/*.src 
</pre>
<p>로부터 Sherlock 검색 플러그인을 읽을 수도 있습니다. 
<a href="ko/Firefox_2">Firefox 2</a> 와 그 상위 버전들은 
</p>
<pre class="eval">/searchplugins/*.xml 
</pre>
<p>디렉토리로부터 <a href="ko/Creating_MozSearch_plugins">MozSearch and OpenSearch plugins</a>를, 
</p>
<pre class="eval">/dictionaries/*.{aff|dic}
</pre>
<p>디렉토리로부터 Myspell 사전을 읽을 수도 있습니다. 
</p>
<h3 name="Official_References_for_Toolkit_API"> Official References for <a href="ko/Toolkit_API">Toolkit API</a> </h3>
<p>{{wiki.template(':ko/Toolkit_API/Official_References')}}
</p>{{ wiki.languages( { "en": "en/Bundles", "fr": "fr/Bundles" } ) }}
Revert to this revision