Skip to content

Repository files navigation

Install Coordinator

D daemon with two surfaces: a local lay-user app window and an admin remote-control HTTP API. It is also a installer framework option for DevCentr: the queue plane serializes MSI work while Unity Install Layout (UIL) describes package roles, shell claims, and transaction journals for Ibex and other emitters.

Why

Windows blocks parallel MSI sessions via _MSIExecute. GUI users double-click installers and get error 1618. Install Coordinator collects jobs, explains waits, and runs MSI steps one at a time while allowing disjoint work in parallel when claims permit.

UIL adds a layout contract so installs refresh PATH, shortcuts, and environment—not only copy files—on classic Windows/macOS/Linux/BSD paths today, with a forward mapping to connectome-fs.

Surfaces

  • User (local) — install-coordinator gui opens a framed app window at /ui/user. Plain language, no admin jargon. Localhost only.

  • Admin (remote-capable) — JSON API + /ui/admin for operators. Bind beyond loopback with --remote --auth-token=…; remote clients send Authorization: Bearer <token>.

Commands

install-coordinator daemon          # localhost HTTP on :17420
install-coordinator daemon --remote --auth-token=SECRET   # LAN/admin remote control
install-coordinator submit app.json # thin stub (default)
install-coordinator gui             # local user app window
install-coordinator list active
install-coordinator session --lock-elevation --batch-terms --scope=perMachine
install-coordinator shortcut <id> --desktop
install-coordinator uil validate examples/uil-classic-demo.uil.json
install-coordinator uil plan examples/uil-classic-demo.uil.json --dry-run
install-coordinator uil emit-coordinator examples/uil-classic-demo.uil.json

Environment: INSTALL_COORD_BIND, INSTALL_COORD_AUTH_TOKEN, INSTALL_COORD_REMOTE=1, INSTALL_COORD_HTTP_PORT.

Manifest (queue plane, minimal)

{
  "displayName": "My App",
  "presentation": "thinStub",
  "termsAccepted": true,
  "scope": "perUser",
  "claims": { "msi": true },
  "steps": [
    { "kind": "msiexec", "path": "C:/setup.msi", "args": ["/passive"] }
  ]
}

See examples/thin-stub-msi.job.json for a documented MSI stub sample.

UIL (layout contract)

Ibex and other authors emit *.uil.json manifests (schema: docs/schema/uil-manifest.schema.json). The CLI validates, plans classic path mapping, and prints a transaction journal (dry-run MVP).

{
  "uilVersion": "1.0",
  "package": { "id": "dev-centr.myapp", "name": "My App", "version": "1.0.0" },
  "layout": { "adapter": "classic-paths", "scope": "perUser" },
  "payload": {
    "entries": [{ "source": "staging/bin/myapp", "role": "bin", "relativePath": "myapp" }]
  },
  "claims": [{ "type": "path_entry", "directories": ["${role:bin}"] }]
}

Full reference: Antora pages under docs/modules/ROOT/pages/ (framework.adoc, uil-reference.adoc).

Ibex integration

Author installer projects with ibex-install-builder. Select plugin uil or install-coordinator to emit UIL manifests and coordinator job JSON into dist/. If your Ibex revision predates the plugin, copy the patch from contrib/ibex-uil-option/.

Build

dub build --config=application
dub test --config=library

Library configuration exposes installcoordinator.uil for parse, validate, plan, and journal helpers.

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages