Archive for October, 2011

Extensions not installing in Mac OS 10.7

All,

recently we run into a bug in Extension Manager CS5 and CS5.5 that prevented extensions from being installed on Mac OS 10.7. The problem had to do with accessing the system root keychain on MacOS. While we are working on making an update to Extension Manager available in the next 2 weeks through Adobe Update Manager (AUM), we are making a fix available today to developers and end users. Attached are two zip files that contain the fix and instructions on how to apply it:
exman50.zip – applies for Extension Manager 5.0 users
exman55.zip – applies for Extension Manager 5.5 users

Note 1: Applying the manual fix is not necessary. You could still wait until the update through AUM is available.
Note 2: The fix we make available is different than the one that will be available through AUM.
Note 3: No update is necessary for CS Extension Builder or the CS SDK.

You can also find the entire thread on the Adobe Forums here.

Thank you for your patience. For any questions, please reply directly to the thread above.


gabriel tavridis
product manager
@gtavridis

CS Extension Builder trial expiration extended to December 1st,2011

I am glad to announce that we have decided to extend the expiration date of the CS Extension Builder fully functional trial by 1 month to December 1st, 2011. If you have not downloaded the trial already, I urge you to do it now!

Check the trial FAQ.

gabriel tavridis
product manager
@gtavridis

Access Fotolia stockphotos without leaving the Creative Suite

I am happy to mention that our partners at Silicon Publishing used CS Extension Builder 1.5 to create an extension that runs within Adobe InDesign, Illustrator and Photoshop (CS5 & CS5.5) and enables Creative Suite users to access the 14 million images available in Fotolia without leaving their applications. Using the Fotolia extension, users can search, preview, download and purchase images from within the Creative Suite.

One of the cool features is the ability to drag-drop any image on your Creative Suite project. Once you decide to purchase the image , it gets replaced with the high-resolution version. And by the way, purchasing can take place from within the extension. That simple… Check this blogpost by Silicon Publishing for more information and a demo you definitely don’t want to miss :).

This is one of the many examples showcasing what can be built using CS Extension Builder and the CS SDK. Feel free to send us examples of extensions you are working on and let us know how we can improve our tools.

gabriel tavridis
product manager
@gtavridis, @csextbuilder

Using InDesign Array Collection Objects in ActionScript

At last week’s Adobe MAX, I got talking to an extremely talented InDesign developer with a complaint; in ExtendScript InDesign exposes array collections of objects in response to certain calls, but the CS SDK doesn’t allow for navigating these.

It’s an interesting point, and one with a little back story. What InDesign actually does is always return an object (e.g., a TextFrame); that object’s properties may then be for a single item, or a number of them (in which case every property you access on that object is actually an array). To the scripting DOM, though, both register as the same type (a TextFrame), and there is no way to know ahead of time what InDesign will return for these.

This is great for a language with weak typing, like ExtendScript, but poses challenges for how to represent that in a strongly typed environment, like ActionScript.

Fortunately, there’s a workaround that allows you to make use of these without having to call out to ExtendScript code; the host object delegate.

This is the core representation of the scripting element that the application returns, and so we can call any API on it that we choose. We lose the type-ahead in ExtensionBuilder, of course, and there’s the potential for runtime errors inherent in any untyped code, but it gives you a mechanism to use InDesign’s more advanced scripting DOM behaviour.

As an example, if you create a document with two text frames, assign the script label ‘test’ to both, and then use the code:


var myText:TextFrame = app.activeDocument.textFrames.item("test");
trace(myText.id);

This will generate a runtime error, because the call to ‘id’ will actually return an Array of Numbers, rather than the expected single Number.

To use the host obect instead, you’d simply change the code to:


var myText:HostObject = app.activeDocument.textFrames.item("test").hostObjectDelegate;
trace(myText.id);

You’ll now get both ids printed. Many properties and functions will work without this, but for times when that fails the HostObject provides an invaluable means of working around that.

Happy Coding!

James

Note: you may also want to set the script preferences version to work around an unrelated issue in InDesign with these functions not working in the 7.0 and 7.5 scripting versions. You can do that by inserting ‘app.scriptPreferences.version = “6.0”;’ ahead of the call (and a revert to 7.0/7.5 afterwards).