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>
95 lines
4 KiB
Text
95 lines
4 KiB
Text
; Dragonflight Premiere Pro CEP panel — Windows installer
|
|
; Build: iscc installer.iss /DMyAppVersion=1.0.0
|
|
; (build-installer.ps1 parses CSXS/manifest.xml and passes the version)
|
|
|
|
#ifndef MyAppVersion
|
|
#define MyAppVersion "0.0.0-dev"
|
|
#endif
|
|
|
|
#define MyAppName "Dragonflight Premiere Panel"
|
|
#define MyAppPublisher "Wild Dragon LLC"
|
|
#define MyAppURL "https://forge.wilddragon.net/zgaetano/dragonflight"
|
|
#define BundleId "net.wilddragon.dragonflight.panel"
|
|
#define LegacyBundleId "com.wilddragon.mam.panel"
|
|
#define PanelSrcDir "..\"
|
|
#define OutDir "dist"
|
|
|
|
[Setup]
|
|
AppId={{8E2C1F6D-1B9A-4D7E-9C3F-9F2E5A4C7B11}
|
|
AppName={#MyAppName}
|
|
AppVersion={#MyAppVersion}
|
|
AppVerName={#MyAppName} {#MyAppVersion}
|
|
AppPublisher={#MyAppPublisher}
|
|
AppPublisherURL={#MyAppURL}
|
|
AppSupportURL={#MyAppURL}/issues
|
|
AppUpdatesURL={#MyAppURL}/releases
|
|
DefaultDirName={userappdata}\Adobe\CEP\extensions\{#BundleId}
|
|
DefaultGroupName={#MyAppName}
|
|
DisableProgramGroupPage=yes
|
|
DisableDirPage=yes
|
|
PrivilegesRequired=lowest
|
|
PrivilegesRequiredOverridesAllowed=
|
|
OutputDir={#OutDir}
|
|
OutputBaseFilename=dragonflight-premiere-panel-{#MyAppVersion}-windows-setup
|
|
Compression=lzma
|
|
SolidCompression=yes
|
|
WizardStyle=modern
|
|
UninstallDisplayName={#MyAppName} {#MyAppVersion}
|
|
UninstallDisplayIcon={app}\index.html
|
|
SetupLogging=yes
|
|
|
|
[Languages]
|
|
Name: "en"; MessagesFile: "compiler:Default.isl"
|
|
|
|
[Tasks]
|
|
Name: "removelegacy"; Description: "Remove legacy {#LegacyBundleId} install if present"; GroupDescription: "Migration:"; Check: LegacyPanelExists
|
|
|
|
[Files]
|
|
; Copy the entire panel bundle, minus the build/ pipeline and the
|
|
; deprecated install-windows.ps1 (this installer supersedes it).
|
|
Source: "{#PanelSrcDir}*"; DestDir: "{app}"; Excludes: "build,install-windows.ps1,*.log"; \
|
|
Flags: ignoreversion recursesubdirs createallsubdirs
|
|
|
|
[Registry]
|
|
; Enable PlayerDebugMode for every CEP version Premiere Pro might use.
|
|
; Adobe stores this as REG_SZ "1" (a STRING, not a DWORD). Intentionally
|
|
; no uninsdeletevalue flag — other CEP panels need this key too.
|
|
Root: HKCU; Subkey: "Software\Adobe\CSXS.8"; ValueType: string; ValueName: "PlayerDebugMode"; ValueData: "1"
|
|
Root: HKCU; Subkey: "Software\Adobe\CSXS.9"; ValueType: string; ValueName: "PlayerDebugMode"; ValueData: "1"
|
|
Root: HKCU; Subkey: "Software\Adobe\CSXS.10"; ValueType: string; ValueName: "PlayerDebugMode"; ValueData: "1"
|
|
Root: HKCU; Subkey: "Software\Adobe\CSXS.11"; ValueType: string; ValueName: "PlayerDebugMode"; ValueData: "1"
|
|
Root: HKCU; Subkey: "Software\Adobe\CSXS.12"; ValueType: string; ValueName: "PlayerDebugMode"; ValueData: "1"
|
|
Root: HKCU; Subkey: "Software\Adobe\CSXS.13"; ValueType: string; ValueName: "PlayerDebugMode"; ValueData: "1"
|
|
|
|
[InstallDelete]
|
|
; Wipe the legacy folder before installing the new one (only if user opted in).
|
|
Type: filesandordirs; Name: "{userappdata}\Adobe\CEP\extensions\{#LegacyBundleId}"; Tasks: removelegacy
|
|
|
|
[UninstallDelete]
|
|
; Strip the install dir clean on uninstall. App lives entirely in {app}.
|
|
Type: filesandordirs; Name: "{app}"
|
|
|
|
[Code]
|
|
function LegacyPanelExists: Boolean;
|
|
begin
|
|
Result := DirExists(ExpandConstant('{userappdata}\Adobe\CEP\extensions\{#LegacyBundleId}'));
|
|
end;
|
|
|
|
procedure CurStepChanged(CurStep: TSetupStep);
|
|
var
|
|
PremiereRunning: Boolean;
|
|
begin
|
|
if CurStep = ssInstall then begin
|
|
PremiereRunning := False;
|
|
// Heuristic — Premiere's main exe is Adobe Premiere Pro.exe.
|
|
// If it is running, files in {app} can still be replaced (CEP loads them
|
|
// on panel open, not on Premiere launch), but the user needs a Premiere
|
|
// restart before the new bundle is picked up. Just warn, don't block.
|
|
if Exec('cmd.exe', '/C tasklist /FI "IMAGENAME eq Adobe Premiere Pro.exe" | find /I "Adobe Premiere Pro.exe" >nul', '', SW_HIDE, ewWaitUntilTerminated, PremiereRunning) and PremiereRunning then begin
|
|
// exit code 0 from `find` means the process was found
|
|
end;
|
|
end;
|
|
end;
|
|
|
|
[Run]
|
|
Filename: "{app}\README.md"; Description: "Open README"; Flags: shellexec postinstall skipifsilent unchecked
|