Skip to main content

Plugin packaging and publishing

Package .frplugin with a static manifest, validate assemblies, capabilities and settings schemas, and publish verifiable artifacts.

Package layout​

MyPlugin-1.0.0.frplugin
├─ manifest.json
├─ settings.schema.json
├─ MyPlugin.dll
└─ private-dependency.dll

Files go directly at the ZIP container root. Do not bundle FolderRewind.Plugin.Abstractions.dll; the Host shares assembly identity3.0.0.0. Private dependencies may be bundled. Use the buildable sample packer, not the old nested ZIP rule.

Manifest​

manifestVersion=3; pluginId is a stable reverse-domain ID; version uses strict SemVer; pluginApi has major/minor. entryAssembly/settingsSchema use canonical relative paths and entryType is fully qualified. Names/localizations, configKinds, requestedHostServices, capabilities, Artifact declarations and observer flags match runtime behavior.

author/homepage/repository are metadata, not official trust/update authority. Use exact camelCase JSON, without old Id/EntryAssembly/MinHostVersion fields.

Static validation​

Checks cover hashes, safe Windows paths, case collisions, links, expanded sizes, compression ratio, declared files, schema, API/architecture and PE entry metadata. Defaults:10000 entries,1 GiB total,256 MiB per entry, ratio100,1 MiB manifest. Install never loads candidate assemblies or executes constructors/lifecycle/install scripts.

Publish​

Build versioned .frplugin and matching SHA-256; publish immutable Release assets and preserve previous versions for review/recovery. Official updates require Catalog bindings to exact URL/hash/API/architecture/manifest; manifests cannot self-declare Official.

Validate disabled-on-install, explicit Enable, settings, cancellation, Disable, update/rollback and interrupted recovery before release. SDK, plugin SemVer and Host versions are independent.