How to successfully package and install self developed plugins?


I’m trying to write my first Adobe Photoshop UXP Plugin.

I have a basic vanilla js script I’m happy with in development mode and
I’d like to package it as a .ccx file to share internally for further testing.

I’ve tried packaging and installing locally, however I have received an error:

Coudln’t install plugin, please try again
Error code -4. Help Center

I found info on error codes:

-4 Manifest Parse failure

I did try the recommendation:

Quit the Creative Cloud desktop app and the installed app. Then, relaunch the Creative Cloud desktop app and try installing the extension or plugin again.

This did not work. I do not have an Enterprise account, however based on the packaging-your-plugin page I should be able to package and share a working .ccx file, right ?

Is there a way to validate the manifest json and get detailed info on how to get past error -4 ? I get the same error with the vanilla-js-sample.

What’s the recommended, working method of exporting a .ccx package for internal testing ?

Thank you so much for your time,

First topic when searching for “error -4”

This might be helpful as well:

Thanks you for the input @Karmalakas.

I did try swapping the host from an object inside an array to the object itself and I’ve also reduced minVersion from 23.0.0 to 22.0.0 (as recommended in Kerri’s post).

Unfortunately nothing changed: Creative Cloud Desktop still shows the same -4 error.

@Zob Thank you for the info Zoey.

I did try every single option.

I got a bit worried when the UnifiedPluginInstallerAgent option failed:
Failed to install, status = -267!

The last option on that list (manually unzipping the .ccx contents into a folder then moving it to Photoshop’s Plugin’s folder) did work!

That is a good enough workaround to start testing on multiple machines.

Can you post full manifest.json content here? I wonder if my validator would find an issue.

Here is a version with the plugin name, entrypoint id and label retracted:

  "id": "Test-9ltm8i",
  "name": "Hello World Exporter",
  "version": "0.0.1",
  "main": "index.js",
  "host": {
      "app": "PS",
      "minVersion": "22.0.0"
  "manifestVersion": 4,
  "entrypoints": [
      "type": "command",
      "id": "exportCustomData",
      "label": {
        "default": "Export Custom Data"
  "icons": [
      "width": 48,
      "height": 48,
      "path": "icons/plugin-icon.png",
      "scale": [
      "theme": [
      "species": [

Many thanks for offering to validate.

Never saw all as an option :thinking: Also in the example species is shown as generic with no available options listed, so not sure about this one :confused:

Anyway, first thing I’d try removing all from themes :thinking:

both options should be valid