Skip navigation
Currently Being Moderated

Various problems using extension manager with command line

May 12, 2011 12:35 PM

Hello all,

 

We are installing our plugins  to CS4/5/5.1 version of Adobe Photoshop as part of our installer and  allow the users to select specific versions of Photoshop to install the  panel for. There are a few old problems that I wanted to rant about for  quite some while and now with a whole bunch of problems that the 5.1  update introduced I feel I just have to voice them. I will limit it to  PC only as it seems to be the most troubled platform

 

#1 As we cannot install our plugin only by using the  Extension Manager (simply because it cannot handle all we've to do upon  the installation) we have to run commands from within the our installer,  non-interactively, of course.

The interface to command line installation is xmancommand.exe (or "Extension manager (Version). exe" - not sure whether it makes any difference. ). Now the first question is how to find this executable on   the target machine, from an installer. Users may specify different  locations to install the Creative Suite and it certainly does NOT have  to  be  C:\Program Files\...(or %PRGRAMFILES% in general). ATM we are using an odd place in the registry  to to find the path to the most recent Extension Manager but first its  sometimes overwritten by another installation and in any case it  only shows ONE version of the extension manager which of course cannot  handle other versions (see #2)

 

#2 Why the most recent version of  Adobe Extension Manager (5.5) cannot install the extension for 5.0?  Well, install it actually does, however its disabled for CS5 and it  seems that the only way to enable it on this platform is to find  previous (CS5) extension manager and to enable it. Oh, actually no - it  doesn't work! The only way that I found here working is to find CS5  extension manager first, install the extension there and then use CS5.5  extension manager to enable it. Why do I need both utilities to manage  my extensions?!

 

#3 The program is severely lacking in  documentation AND it doesn't produce reasonable output messages, so  determining what it can actually support is a puzzle. For example, why  "Dreamweaver CS5" is a correct product name and "Photoshop CS5" is not (don't different teams talk to each other)? Ok, lets forget the consistency, but how do I make the utility output the list of all products it supports, in their  magic token form that it will actually be understood if passed in in the  command line? By trial and error? This menthod btw is also extremely painful: nany times when  specifying wrong parameters the program doesn't provide any output and just shrugs "whatever, go figure it yourself"...

 

#4 Why the only way to enable/disable an extension in Photoshop  seems to be using magic "productfamily" keyword that is not even listed  on Adobe's help page for command line options (here:  http://help.adobe.com/en_US/extensionmanager/cs/using/WSB4845EDD-14E5- 476a-B749-FF328830D14F.html).?  E.g. "xmancommand.exe" -suppress -remove  product=Photoshop  extension=OurExtension" will ALWAYS fail with a lovely "'Photoshop is  not supported by Extension Manager CS5.5." error; I've tried "PhotoshopCS5", "Photoshop CS5", "PhotoshopCS5.1"  "Photoshop CS5.1", "Photoshop-12" (mentioned in examples section in  http://help.adobe.com/en_US/extensionmanager/cs/using/packaging_extens ion.pdf )  and a whole bunch of other permutations - none  seem to work (see #3). Magic "productfamily=Photoshop" does work. But  then it only aims the current version ("CS5.1") and I need it to work  for CS5 (I'm not even mentioning CS4...."). Would there be any suggestions?

 

Really, the question is, how do we, third-party developers, are  supposed to interact with the command-line utility without knowing where  it is, what product names is capable to work with and without being  able to target specific platforms (i86 vs x64 anyone  (http://forums.adobe.com/thread/672537)? CS5 vs CS5.1 (above)?). I don't  know what your test cases are for the command line tool (if any!), but this is simply insane, folks, simply  insane.

 
Replies
  • Currently Being Moderated
    May 12, 2011 8:46 PM   in reply to Ilya Varaev

    I am sorry for the poor documentation of Extension Manager which causes you so much trouble.

    1. You can use BridgeTalk API to ask specific version of Extension Manager to do something. There is sample in packaging_extension.pdf about this. You don't need to know the installation path of Extension Manager. One thing to note is that the value of bt.target is version specific, i.e. "exman-5.0", "exman-5.5" send this message to different version of Extension Manager, so you can change this value to install/enable/disable/remove extensions using different version of Extension Manager. More detailed documentation of BridgeTalk can be found by clicking "Help" menu then clicking "Javascript Tools Guide CS5" in "Adobe ExtendScript Toolkit CS5".

    2. Specific version of Extension Manager only manage extensions for corresponding version of product. You should use Extension Manager CS5 to install extensions for Photoshop CS5. The reason that the extension you installed for Photoshop CS5.1 using Extension Manager CS5.5 is displayed for Photoshop CS5 in Extension Manager CS5 is that two versions of Photoshop specified the same directory for Extension Manager to manage extensions. This is a defect and will cause some problems if multiple versions of Photoshop co-existed in one machine. But "to find  previous (CS5) extension manager and to enable it" should work for you, I guess you use command line to enable it and specify wrong product name (see #3) so that it doesn't work.

    3. When using command line, you should specify "product" attribute with the name displayed at the left panel of Extension Manager. So "Photoshop CS5 32" is correct. Remember to enclose it with double quote because of existence of space character.

    4. As above mentioned, use display name of Photoshop, and call proper version of Extension Manager by BridgeTalk.

     
    |
    Mark as:
  • Currently Being Moderated
    Mar 29, 2012 8:45 PM   in reply to Ilya Varaev

    You can run script in batch mode without ExtendScript Tookit UI. Save the code which you normally input in the source window of ExtendScript Toolkit to a jsx file (plain text file with ".jsx" extension). Then run command as follows:

    "C:\Program Files (x86)\Adobe\Adobe Utilities - CS5.5\ExtendScript Toolkit CS5.5\ExtendScript Toolkit.exe" –cmd yourscript.jsx

    The installation location of "ExtendScript Toolkit.exe" is fixed, no matter where users install Creative Suite.

     

    But I suggest you use another way.

    1. Save the following code to a jsx file (e.g. diag.jsx):

    resultFile = new File("D:/result.log");

    resultFile.open("w");

    resultFile.write(BridgeTalk.__diagnostics__);

    resultFile.close();

    2. In batch file, write something like:

    if exists "C:\Program Files (x86)\Adobe\Adobe Utilities - CS5.5\ExtendScript Toolkit CS5.5\ExtendScript Toolkit.exe"

        "C:\Program Files (x86)\Adobe\Adobe Utilities - CS5.5\ExtendScript Toolkit CS5.5\ExtendScript Toolkit.exe" -cmd diag.jsx

    else if exists "C:\Program Files (x86)\Adobe\Adobe Utilities - CS5\ExtendScript Toolkit CS5\ExtendScript Toolkit.exe"

        "C:\Program Files (x86)\Adobe\Adobe Utilities - CS5\ExtendScript Toolkit CS5\ExtendScript Toolkit.exe" -cmd diag.jsx

    3. Write script to extract full path of all installed versions of Extension Manager executable from "D:\result.log". No matter which version of ESTK is called to run this jsx file, all versions of Extension Manager will be listed.

    4. Use CLI to run your command. Such as "D:\Adobe\Adobe Extension Manager CS5.5\Adobe Extension Manager CS5.5.exe" -suppress -install ...

     

    If your command requires administrative previlege, please make sure you open "Command Prompt" as administrator (Windows) or use sudo in Terminal(Mac). Otherwise the command in suppress mode will fail silently.

     
    |
    Mark as:
  • Currently Being Moderated
    Apr 3, 2012 8:17 AM   in reply to Ilya Varaev

    ESTK is an optional component of Photoshop, Illustrator standalone installer and Creative Suite installer. It is checked at default. So most of users will have ESTK installed. But of course some of users are likely to uncheck it. The path should be the same on localized systems. I will double check it when I go to work the day after tomorrow.

     

    Another way to find the installation directory of Extension Manager is to read pdb database. It is a SQLite database and is created after Adobe products are installed.

    The database location is:

    windows x86:

    %HOMEDRIVE%\Program Files\Common Files\Adobe\caps\pdb.db

    windows x64:

    %HOMEDRIVE%\Program Files (x86)\Common Files\Adobe\caps\pdb.db

    Mac:

    /Library/Application Support/Adobe/caps/pdb.db

     

    SQL statements to find install info:

    ---------------------------------------------------------------------- ----------

    select payloadId from payloads where productName='Adobe Extension Manager CS5.5';

    The query result is somthing like {347D0632-0D1B-4815-A308-AE039EDD6802}

    Then run the following sql:

    select * from payload_data where payloadId='{347D0632-0D1B-4815-A308-AE039EDD6802}';

     

    After that you can use command line to call Extension Manager.

     
    |
    Mark as:

More Like This

  • Retrieving data ...

Bookmarked By (1)

Answers + Points = Status

  • 10 points awarded for Correct Answers
  • 5 points awarded for Helpful Answers
  • 10,000+ points
  • 1,001-10,000 points
  • 501-1,000 points
  • 5-500 points