Creating Extension Manager Packages for Creative Suite Apps

Justin | extensions,tips | Sunday, March 1st, 2009

If you’ve opened Extension Manager CS4, you might have noticed there’s a longer list of products available than there have been in previous versions.

Extension Manager CS4

You can now package Illustrator, InDesign, Photoshop, InCopy, and Bridge scripts and SWF panels (yes, most of these apps can have SWF panels now!) as Extension Manager packages. Flash, Fireworks, and Dreamweaver have worked with Extension Manager for years (since they all used to be Macromedia products). Extension Manager comes free with any Adobe CS4 application, so CS4 users will already have it installed. So far, I haven’t noticed Adobe making a big deal about this, but this is a great new capability for Adobe users and developers.

You may have noticed Extension Manager extension (.mxp) files showing up on my blog for Illustrator and InDesign scripts:

There are several advantages to using Extension Manager to install Extendscripts:

  • Easy install: no complicated, cross-platform installation instructions needed
  • Easy uninstall
  • Version control
  • Extensions can also be disabled without uninstalling
  • A central location for extension instructions and credits
  • Built-in license agreement

Packaging an extension can seem daunting, but it’s a fairly simple process to put one together. Especially if you’re already somewhat familiar XML files. There are two main components in packaging an extension:

  • MXI (XML) file
  • source files

The MXI file is just an XML file with information about your extension, its author, (optional) license agreement information, and where to install the necessary files. You can also find complete details on the MXI file format.

Don’t fret if you’re not familiar with XML. It’s a fairly readable text format, similar to HTML. XML differs in that it doesn’t have a restricted set of tags like HTML (tags are what appear between less than “<” and great than “>” brackets– e.g., <body> is an HTML tag).

Lee Brimelow has a great video tutorial on creating a SWF Panel extension in Flash. If you skip ahead to about 19 minutes in, you’ll see an example of an MXI file and how to create the MXP package using Extension Manager. You can also download his sample files from this page as well. This tutorial is what got me started making extensions.

Additionally, these two tutorials also have great step-by-step examples on how to populate an MXI file:

There are also tools that help you put together MXI files like this Flash panel: MXI file creator.

One thing you’ll notice inside an MXI file is the <files> node. This node lists all of the files that will be installed to the user’s computer. The <files> node will contain individual <file> nodes which have a source attribute and a destination attribute.

<files>
<file source="Queasy Tools.swf" destination="$flash/WindowSWF" />
</files>

If your source files are in the same folder as your MXI file, you simply have assign the filenames of those files to your source attributes. The destination attribute is where much of the power of an MXI file is found, because it can contain special, platform-independent keywords. Each application has its own set of keywords. The keywords begin with a dollar sign ($) character ($flash in the example above refers to the Flash Configuration directory). A complete list of keywords for any of the enabled applications can be found in their respective XManConfig.xml file.

Here’s the Illustrator CS4 config from my system (Applications/Adobe Illustrator CS4/Configuration/XManConfig.xml):

<?xml version="1.0" encoding="UTF-8"?>
<Configuration>
<VariableForExMan>
<Data key="UserExtensionFolder">$InstallFolder/Configuration/Extensions</Data>
<Data key="$illustrator">$InstallFolder</Data>
<Data key="$plugin">$InstallFolder/Plug-ins.localized</Data>
<Data key="$scripting">$InstallFolder/Scripting.localized</Data>
<Data key="$presets">$InstallFolder/Presets.localized</Data>
<Data key="DisplayName">Illustrator CS4</Data>
<Data key="ProductName">Illustrator</Data>
<Data key="ProductVersion">14.0</Data>
<Data key="IconPath">Configuration/ai_exman_24x24.png</Data>
<Data key="SupportedInSuite">CS4</Data>
<Data key="DefaultLocale">en_US</Data>
<Data key="EmStorePath">$SharedRibsDataFolder/Adobe/Extension Manager2/Illustrator CS4</Data>
</VariableForExMan>
</Configuration>

One thing that hasn’t quite been perfected in CS4 is that, in some cases, a keyword takes you to a directory which has language/region-specific sub-directories. For example, if I take the $presets keyword from the Illustrator config file above for my destination attribute, in order to install a script in the proper location on my machine, the complete path would look like this:

destination=”$presets/en_us/Scripts”
(these strings are case-insensitive in an MXI file)

The problem here, is that a user who didn’t install the US English version of Illustrator won’t be able to install this version of my extension. So it’s not perfect…yet…but still very useful, and I’m confident that Adobe will resolve this in CS5.

Once you’ve finished creating your MXI file, and you’ve got your scripts and/or SWFs that you want to package, you can create your extension. To create an MXP file, all you have to do is double-click your MXI file and Extension Manager will open, package the extension, and prompt you on where you’d like to save it. Your extension is now ready to distribute.

Get updates from Ajar Productions

Splittext_id_400px

Sign up today and get the InDesign Split Text premium extension for free!

Unsubscribe at any time. Powered by ConvertKit

Related Articles

7 thoughts on “Creating Extension Manager Packages for Creative Suite Apps”

  1. Info on creating MXP extension for Illustrator, InDesign, Photoshop:
    http://tinyurl.com/bbcmmk

  2. forumhound says:

    hi there great post. i have another problem. i have a non-standard install of dreamweaver cs4 with extension manager 2.1 downloaded and installed. but when i try to file/import product and specify the /Dreamweaver/configuration/ folder that contains XMANconfig.xml, I get an error from EM saying: ‘does not provide the display nane tag. Please check your configuration. So, i can’t even begin to use EM on this machine! any tips would be really appreciated!!! thx

    1. Justin says:

      Not sure on that one, forumhound. I would recommend posting that question on the Adobe forums. Maybe someone else has run into this issue as well.

  3. forumhound says:

    thx, fixed the problem with a reinstall the normal way! cheers…

  4. Nice handy post !
    Unfortunately got a bit stuck with the Illustrator scripts path ($presets/en_us/Scripts) where the locale(en_us) thing was not fixed in CS5. Any workarounds/hacks ?

  5. Justin says:

    Thanks, George!

    Supposedly, this was going to be fixed in CS5. If you look at [Applications]/Illustrator CS5/Configuration/XManConfig.xml, it will show you the variables that you can use with Extension Manager. There is a “DefaultLocale” variable, though it has no $ at the front, there’s also a “$scripting” variable that appears to be localized. Give those a try.

    Otherwise, the CSSDK appears to have some localization built in:
    http://cookbooks.adobe.com/post_Localizing_a_Creative_Suite_5_extension-17410.html

Leave a Reply

Your email address will not be published. Required fields are marked *