InDesign MY-NOTEBOOK

Friday, July 23, 2010

InDesign CS5 用 Extension Package (hello.zxp) の作成

CS5 から拡張機能(Extension)を Flex を使って実装できるようになりました。
また作成した拡張機能をパッケージしてひとつの zxp ファイルにして配布可能になりました。
ユーザは単に zxpファイルを入手してダブルクリックするだけで拡張機能をインストールできます。

拡張機能の詳しい内容は Adobe Creative Suie 5 SDK をご覧ください。

通常、拡張機能を作成したりその配布パッケージを作成するのは Adobe Creative Suite 5 Extension Builder を使用するようです。
開発・デバッグ・配布がこのツール内で作業できるので、とても楽(なよう)です。

ただし、 Adobe Creative Suite 5 Extension Builder は、 Adobe Solution Partner Program や Adobe Enterprise Developer Program 契約していないと入手・使用ができないようです。

このエントリでは、 Adobe Creative Suite 5 Extension Builder を使用しないで、配布用パッケージを作成する手順についてのメモです。

事前準備

以下を準備しておきます。

CS SDK

  • CreativeSuiteSDK の入手
  • 適当なディレクトリに展開して配置
  • 付属する Flex SDK の bin にパスを通す
    • /path/to/CreativeSuiteSDK/CS Flex SDK 3.4.0/bin
  • 環境変数 CS\_SDK\_HOME を設定

パッケージと署名ツール

配布用パッケージの作成には ucf.jar が必要です。

ucf.jar は Packaging and Signing Toolkit から入手できます。

  • ucf.jar の入手

Step1 Extension用 AIR アプリの開発

main.mxml を開発しておきます。

Step2 manifest.xml を準備

<?xml version="1.0" encoding="UTF-8"?>
<ExtensionManifest Version="2.0" ExtensionBundleId="jp.osima.hello" ExtensionBundleVersion="1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
	<ExtensionList>
		<Extension Id="jp.osima.hello.extension" Version="1.0" />
	</ExtensionList>
	<ExecutionEnvironment>
		<HostList>
			<Host Name="IDSN" Version="7" />
		</HostList>
		<LocaleList>
			<Locale Code="All" />
		</LocaleList>
		<RequiredRuntimeList>
			<RequiredRuntime Name="CSXS" Version="2.0" />
		</RequiredRuntimeList>
	</ExecutionEnvironment>
	<DispatchInfoList>
		<Extension Id="jp.osima.hello.extension">
			<DispatchInfo >
				<Resources>
					<SwfPath>./main.swf</SwfPath>
					<!--
					<ScriptPath>./foo.jsx</ScriptPath>
					-->
				</Resources>
				<Lifecycle>
					<AutoVisible>true</AutoVisible>
				</Lifecycle>
				<UI>
					<Type>Panel</Type>
					<Menu>Hello</Menu>
					<Geometry>
						<Size>
							<Height>200</Height>
							<Width>200</Width>
						</Size>
					</Geometry>
				</UI>
			</DispatchInfo>
		</Extension>
	</DispatchInfoList>
</ExtensionManifest>


Step3 main.mxml をコンパイルして main.swf を生成


$ mxmlc \
    --show-actionscript-warnings=true --strict=true \
    +configname=air \
    -include-libraries \
      $CS_SDK_HOME/libs/CSXSLibrary-2.0-sdk-3.4-public.swc \
      $CS_SDK_HOME/libs/csawlib.swc \
    -external-library-path \
      $CS_SDK_HOME/libs/apedelta.swc \
    -output main.swf
    -- main.mxml

Step4 パッケージ作成のための workspace ディレクトリを作成

CS5 Extension(ここではmain.swf)をパッケージするには、workspace ディレクトリ内に関連ファイルを次のように配置する必要があります。

  • workspace/
    • main.swf
    • CSXS/
      • manifest.xml

Step5 署名の作成

test.pfx というファイル名でパスワード hogehoge にて署名を作成。


$ adt -certificate -cn wakumaker 1024-RSA test.pfx hogehoge

Step6 Extension パッケージを作成


$ java -jar ucf.jar -package -storetype PKCS12 -keystore test.pfx -storepass hogehoge \
    hello.zxp -C workspace .

成功すれば hello.zxp が生成されるので、ダブルクリックして拡張機能がインストールできるか確認します。