Skip to content

Enable Release

Stable

Enabling a release activates the mod in DCS World by creating symlinks from the release's files into the DCS World directories and registering any bundled mission scripts with the mission scripting engine.

PropertyValue
Applies toDaemon
TriggerUser requests that a downloaded release be made active in DCS World
PreconditionsThe release has been added and all download and extract jobs have completed

Inputs

releaseId : String, required. The identifier of the release to enable.

Assertions

AssertionStatus
The release must exist in the Daemon's local storeImplemented
The release must be ready — all download and extract jobs must have completedImplemented
The mods directory must be configured and exist on diskImplemented
The DCS path must be configured for each symlink destination root referenced by the releaseImplemented

Outputs

Result<void, ReleaseToggleError> : On success, returns void. On failure, returns one of the following error types:

ReleaseNotFound : The release does not exist in the Daemon's local store.

ReleaseNotReady : The release has incomplete download or extract jobs.

DropzoneModsDirNotConfigured : The mods directory has not been configured or does not exist on disk.

DcsPathNotConfigured : The DCS path required to resolve symlink destinations has not been configured.

SymlinkCreationFailed : A symlink could not be created on disk. The error includes the identifier of the symlink that failed.

Effects

EffectStatus
Symlinks are created on disk in the DCS World directoriesImplemented
The installed path of each created symlink is recorded in the Daemon's local storeImplemented
The release is marked as enabled in the Daemon's local storeImplemented
Scripts/DropzoneMissionScriptsBeforeSanitize.lua is rebuilt to include before-sanitize mission scripts from this releaseImplemented
Scripts/DropzoneMissionScriptsAfterSanitize.lua is rebuilt to include after-sanitize mission scripts from this releaseImplemented
removeSymlinks.bat is rebuilt to include the newly created symlinksImplemented
On failure, all changes are rolled backImplemented

Behavior

mermaid
flowchart TD
    Start([enable releaseId]) --> Exists{Release exists?}

    Exists -- No --> ErrNotFound([Reject: ReleaseNotFound])
    Exists -- Yes --> Ready{Release ready?}

    Ready -- No --> ErrNotReady([Reject: ReleaseNotReady])
    Ready -- Yes --> Loop[For each symlink definition]

    Loop --> ResolveSrc{Resolve source path<br/>from release directory}

    ResolveSrc -- Mods dir not configured --> ErrModsDir([Reject: DropzoneModsDirNotConfigured])
    ResolveSrc -- OK --> ResolveDest{Resolve destination path<br/>from destRoot}

    ResolveDest -- DCS path not configured --> ErrDcsPath([Reject: DcsPathNotConfigured])
    ResolveDest -- "destRoot = saved games" --> CreateLinkSG[Create symlink in<br/>saved games directory]
    ResolveDest -- "destRoot = DCS install" --> CreateLinkDCS[Create symlink in<br/>DCS installation directory]

    CreateLinkSG --> LinkOk{Symlink created?}
    CreateLinkDCS --> LinkOk

    LinkOk -- No --> FailPartial[Fail: report which symlink<br/>could not be created.<br/>Release NOT marked enabled.<br/>Prior symlinks remain on disk.]
    LinkOk -- Yes --> Record[Record installed path<br/>in local store]

    Record --> More{More symlinks?}
    More -- Yes --> Loop
    More -- No --> MarkEnabled[Mark release as enabled]

    MarkEnabled --> RebuildScripts[Rebuild mission scripting files]
    RebuildScripts --> RebuildBat[Rebuild remove-symlinks script]
    RebuildBat --> Done([Release reaches ENABLED state])

    FailPartial -.-> Rollback[Roll back all changes:<br/>remove created symlinks,<br/>clear installed paths,<br/>rebuild scripts]

    style ErrNotFound fill:#f87171,color:#fff
    style ErrNotReady fill:#f87171,color:#fff
    style ErrModsDir fill:#f87171,color:#fff
    style ErrDcsPath fill:#f87171,color:#fff
    style FailPartial fill:#f87171,color:#fff
    style Rollback fill:#fbbf24,color:#000,stroke-dasharray: 5 5
    style Done fill:#4ade80,color:#000

See Also

  • Disable Release — Spec page for deactivating an enabled release.
  • Add Release — Spec page for downloading a release before it can be enabled.
  • Remove Release — Spec page for fully removing a release from the Daemon.
  • How the Daemon works — Guide covering the symlink mechanism and mission scripting files.