Same manifest/ID with multiple hosts

I’m building a panel that targets both Photoshop and InDesign, so my manifest host definition looks like this:

  "host": [
    {
      "app": "PS",
      "minVersion": "25.3.1"
    },
    {
      "app": "ID",
      "minVersion": "19.1.0"
    }
  ],
)

This works fine in UXP developer tools, I can select the manifest file and both Photoshop and InDesign can be launched/debugged simultaneously. I can also package separate .ccx files, they are appended _PS and _ID automatically.

But when I distribute the .ccx files, only one of them can be installed at a time.

Double clicking and installing My.Addon_PS.ccx, I can then launch Photoshop and use the addon.

Double clicking and installing My.Addon_ID.ccx I can launch InDesign and use the addon. But If I open Photoshop now, the previously installed addon is now gone.

I use a single manifest file/code base targeting both PS and ID. Do I need to make separate manifest.json files, with unique IDs for PS and ID, in order to have them both available simultaneously?

If so, what’s the point of being able to define multiple host definitions in the manifest file?

IIRC, yes. If I’m not mistaken, you would also need to change you host to:

  "host": {
      "app": "PS",
      "minVersion": "25.3.1"
    },

Probably same for ID (not sure), but definitely for PS

Yeah, if I split the project into two separate manifest files it makes sense to remove the dual host definition.

Any idea why it’s possible to define multiple hosts like this though? I’m pretty sure I got this from an official Adobe example.

If each host addon still needs a unique ID to function, being able to declare multiple host definitions for the same ID seems a bit strange. I was hoping for this to work since the project and packaging would be a bit easier with a single manifest file (similar to how CEP plugins could target multiple hosts)

There was the same question somewhere here in the forum. I don’t think we got a proper answer to why it is like it is. At least I don’t recall. If there was an answer, probably didn’t explain much :slight_smile: