Methods for Installing Non-Marketplace Plugins

This is an informational post about the various methods available for installing plugins not downloaded from the marketplace. Any of us developing plugins for closed network teams, such as VFX or game production, may find this info helpful. Especially when you need to figure out how to deploy your homemade plugins via scripts and automated processes, while having limited or varying Admin permissions on each system.

CCX == ZIP

Before we get started, I wanted to point out that Plugins are packaged as .ccx files, and this has a fancy appearance and unique filename. However, their function is nearly identical to zip files. ccx files have additional metadata, and probably some other bells and whistles which I don’t understand. But as you see in the installation paths below, its basically just a zip archive!

Method 1: Double-click

You can package a .ccx file from the UXP Developer Tool.

From there, just double click the .ccx file. If creative cloud app is installed, you are signed in, and you have full permissions on the PC, the install will work!

Method 2: Use the UPIA.exe directly

UPIA (Unified Plugin Installer Agent) helper app is the thing that actually unzips the .ccx file into Creative Cloud. You can call it directly. For example, this might be useful if you have a build-deployment script running on your machines, and you are pulling private plugins from a source control depot. However, if you have locked down IT permissions, this may not be possible as it still interfaces with Creative Cloud. Thus your adobe account, inter-app communication, and who knows what else may fail or be denied permission.

First, find your UPIA. Mine is located here:

"C:\Program Files\Common Files\Adobe\Adobe Desktop Common\RemoteComponents\UPI\UnifiedPluginInstallerAgent\UnifiedPluginInstallerAgent.exe"

Then, in command prompt, you can use /help to see all commands. To install, you would use /install like this:

"<PATH_TO_UnifiedPluginInstallerAgent.exe>" /install "<PATH_TO_CCX_FILE>"

Method 3: Unzip CCX File Manually

You can also unzip the ccx file using programs such as 7zip. send it to your Photoshop’s plugin folder.
Mine is located here

C:\Program Files\Adobe\Adobe Photoshop 2023\Plug-ins

You may have trouble unzipping directly into the plug-ins folder. Permission may be denied.
Instead, you just have to unzip it somewhere else, and then drag-and-drop it into the plug-ins folder.

Method 4: Direct Copy

But wait, you might say. Doesn’t that mean you can just copy the plugin directly from your dev folder into the plug-ins folder?

The answer is yes! But it might not work right away. Make sure your dev files, notably the manifest.json, matches the .ccx version exactly. For example, in the ‘host’ property of a manifest V4, you are supposed to have an array of objects, each one representing an app such as Photoshop or Illustrator.
The ccx does edit this property to be a ref to 1 object. Here is an example:

// .ccx manifest - drag and drop compatible
 "host": {
      "app": "PS",
      "minVersion": "23.0.0"
    },

// how the dev-side manifests are usually setup
 "host": [
    {
      "app": "PS",
      "minVersion": "23.0.0"
    }
  ],

For me it was the Photoshop app, but I’d imagine that a ccx is packaged specifically for a single app, and it picks that one from your dev-side host. Setting up my dev-side manifest to be exactly that, and then doing a drag and drop, skipping the package process entirely, works! Obviously the limitation here is that developing a plug-in for use in two apps makes this more complicated, but still achievable with some automation scripts.

Conclusion

This flexibility is extremely appreciated for closed ecosystems, as I’ve mentioned before. It is also good to know for developers who want to control the installation of their plug-ins outside the marketplace.

As always, please correct me if there is something wrong.

3 Likes

I’d like it if the warning messages displayed when installing from .ccx were a little less severe in their tone. I’ve had a few raised eyebrows from non-developers!

ad 3) I think your plugin will be gone after PS Update to the new major version. Also not sure about the temp folder and plugin folders. Where would it be located? And would it be across the PS versions?

1 Like

I would recommend methods

  • 1: Double-click
  • 2: Use the UPIA.exe directly.

I would not recommend methods

  • 3: Unzip CCX File Manually
  • 4: Direct Copy.

Reasons not to use these methods:

  • These files will be overwritten when you update Photoshop
  • They will not carry across when the user installs a new version of Photoshop since they’re in a version-specific folder
  • The folder you listed is for 1st party UXP plugins, not 3rd party, things will not work as expected.

And on the CCX note, yes the host prop is an object in the CCX and an array in the dev panel, because CCX have to be host specific (one for PS, one for ID, etc) while your dev panel can have multiple hosts.

Bolt UXP accounts for this when building your CCX files, also building your CCX in UDT also accounts for this.