dragonflight/services/premiere-plugin/build
Zac Gaetano f874009329 feat(premiere-plugin): ZXP + Windows installer build pipeline
Replaces the manual robocopy / install-windows.ps1 flow with two real
distributable artifacts:

  - dragonflight-premiere-panel-<version>.zxp          (Mac + Win)
  - dragonflight-premiere-panel-<version>-windows-setup.exe (Win)

The Windows installer copies the bundle to %APPDATA%\Adobe\CEP\extensions,
sets PlayerDebugMode=1 for CSXS 8..13, registers an uninstaller, and
offers to remove any legacy com.wilddragon.mam.panel folder so editors
don't end up with duplicate panels.

The .zxp is signed with a self-signed cert generated on first build and
committed to build/cert/ so signature continuity is preserved across
builds (Adobe rejects ZXP upgrades with a different cert fingerprint).

Also migrates the CEP bundle ID from com.wilddragon.mam.panel to
net.wilddragon.dragonflight.panel to match the wild-dragon -> dragonflight
repo rename. Manifest, .debug, CSInterface.js, install docs, and the
growing-files quickstart all updated.

build/ is normally swept by the root .gitignore; added an explicit
negation so the packaging pipeline stays tracked.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-23 16:13:20 -04:00
..
cert feat(premiere-plugin): ZXP + Windows installer build pipeline 2026-05-23 16:13:20 -04:00
.gitignore feat(premiere-plugin): ZXP + Windows installer build pipeline 2026-05-23 16:13:20 -04:00
build-all.ps1 feat(premiere-plugin): ZXP + Windows installer build pipeline 2026-05-23 16:13:20 -04:00
build-installer.ps1 feat(premiere-plugin): ZXP + Windows installer build pipeline 2026-05-23 16:13:20 -04:00
build-zxp.mjs feat(premiere-plugin): ZXP + Windows installer build pipeline 2026-05-23 16:13:20 -04:00
installer.iss feat(premiere-plugin): ZXP + Windows installer build pipeline 2026-05-23 16:13:20 -04:00
package.json feat(premiere-plugin): ZXP + Windows installer build pipeline 2026-05-23 16:13:20 -04:00
README.md feat(premiere-plugin): ZXP + Windows installer build pipeline 2026-05-23 16:13:20 -04:00

Premiere panel installer — build pipeline

Produces two artifacts from services/premiere-plugin/:

File Platform How an editor installs it
dist/dragonflight-premiere-panel-<version>.zxp macOS + Windows Drag into Anastasiy's ZXP Installer
dist/dragonflight-premiere-panel-<version>-windows-setup.exe Windows Double-click, Next → Finish

The version is read from CSXS/manifest.xml's <ExtensionBundleVersion>. To cut a new release: bump that one number, rebuild, attach the two files to a Forgejo release tag.

Prerequisites

Building Requires
.zxp only Node 18+, runs on macOS / Linux / Windows
.exe Windows + Inno Setup 6 on PATH (ISCC.exe)
Both via build-all.ps1 Windows + Node 18+ + Inno Setup 6

Install Inno Setup with winget:

winget install --id JRSoftware.InnoSetup

Build

cd services/premiere-plugin/build
npm install
pwsh -File build-all.ps1

Artifacts land in services/premiere-plugin/build/dist/.

To build just one:

node build-zxp.mjs                          # cross-platform .zxp
pwsh -File build-installer.ps1              # Windows .exe (needs ISCC.exe)

Signing cert (.zxp)

The first node build-zxp.mjs run generates a self-signed cert at cert/dragonflight-selfsigned.p12 + passphrase at cert/cert-passphrase.txt. Commit both files — they need to be stable across builds so Adobe accepts ZXP upgrades in place. If you regenerate the cert, every editor who already installed an older .zxp has to uninstall + reinstall.

The cert is self-signed → editors still need PlayerDebugMode=1. The Windows .exe installer sets this automatically. ZXP installs on macOS need a manual defaults write com.adobe.CSXS.11 PlayerDebugMode 1.

See cert/README.md for cert details + how to regenerate.

What the installers do

Both install the bundle as net.wilddragon.dragonflight.panel. The Windows .exe additionally:

  1. Removes any legacy com.wilddragon.mam.panel folder (with a consent checkbox, default on) — avoids editors seeing two panels in Window → Extensions.
  2. Sets HKCU\Software\Adobe\CSXS.{8..13}\PlayerDebugMode = "1" so unsigned CEP extensions load.
  3. Registers itself in Add/Remove Programs so uninstall reverses both.

Layout

build/
├── README.md                  ← this file
├── package.json               ← devDep: zxp-sign-cmd
├── .gitignore                 ← ignores dist/ + node_modules/
├── build-all.ps1              ← runs both builders
├── build-zxp.mjs              ← Node: generates cert (first run), signs, packages
├── build-installer.ps1        ← wraps ISCC.exe with version + bundle-id flags
├── installer.iss              ← Inno Setup script
└── cert/
    ├── README.md              ← how to regenerate
    ├── dragonflight-selfsigned.p12   ← generated on first build (commit it)
    └── cert-passphrase.txt           ← generated on first build (commit it)