# 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](https://install.anastasiy.com/) |
| `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](https://jrsoftware.org/isinfo.php) 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
powershell -File build-all.ps1
```

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

To build just one:

```
node build-zxp.mjs                          # cross-platform .zxp
powershell -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)
```
