Skip to content

Adding Manifests

Software packages are defined as TOML manifests in the astro-up-manifests repository.

Steps

  1. Fork the manifests repo
  2. Create manifests/<package-id>.toml (e.g., nina-app.toml)
  3. Add a package icon to assets/icons/<package-id>.png (128x128 PNG, transparent background)
  4. Submit a pull request

Complete Example

toml
id = "nina-app"
name = "N.I.N.A."
slug = "nina"
type = "application"
category = "capture"
publisher = "N.I.N.A. Team"
homepage = "https://nighttime-imaging.eu"
description = "Nighttime Imaging 'N' Astronomy — advanced capture sequencer."
license = "MPL-2.0"
aliases = ["NINA", "Nighttime Imaging"]
tags = ["capture", "sequencer", "imaging"]

[install]
method = "inno_setup"
scope = "user"
elevation = "required"
zip_wrapped = false
upgrade_behavior = "install"
timeout = "10m"

[install.switches]
silent = ["/VERYSILENT", "/NORESTART", "/SUPPRESSMSGBOXES"]
interactive = ["/NORESTART"]
log = "/LOG=$TEMP\\nina-install.log"

[install.known_exit_codes]
"1" = "package_in_use"
"5" = "cancelled_by_user"
"3010" = "reboot_required"

[detection]
method = "registry"
registry_key = "HKLM\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\NINA 2_is1"
registry_value = "DisplayVersion"

[detection.fallback]
method = "pe_file"
file_path = "$PROGRAMFILES\\NINA\\NINA.exe"
version_regex = "^(\\d+\\.\\d+\\.\\d+)"

[checkver]
provider = "github"
github = "nightwatch-astro/nina"
asset_pattern = "NINA-.*-setup\\.exe$"

[checkver.autoupdate]
url = "https://github.com/nightwatch-astro/nina/releases/download/v$version/NINA-$version-setup.exe"

[dependencies]
requires = [{ id = "dotnet-desktop-runtime", min_version = "8.0" }]
optional = ["ascom-platform"]

[hardware]
vid_pid = []
device_class = "Camera"

Field Reference

Top-level

FieldRequiredDescription
idyesPackage ID (vendor-product convention, lowercase, hyphens only)
nameyesDisplay name
slugyesURL-friendly short name
typeyesapplication, driver, runtime, database, usb_driver, resource
categoryyescapture, guiding, platesolving, equipment, focusing, planetarium, viewers, prerequisites, usb, driver
publishernoDeveloper or organization
homepagenoOfficial project URL
descriptionnoShort description
licensenoSPDX license identifier
aliasesnoAlternative names (used in search)
tagsnoSearchable tags

[install]

FieldTypeDescription
methodstringexe, msi, inno_setup, nsis, wix, burn, zip, portable, download_only
scopestringmachine, user, either
elevationstringrequired (UAC via astro-up), prohibited (no elevation), self (installer handles UAC)
zip_wrappedboolDownload is a zip containing the actual installer
zip_inner_pathstringSubfolder inside zip where installer lives (e.g., "x64")
upgrade_behaviorstringinstall (over-install), uninstall_previous, deny
timeoutdurationInstaller timeout override (default 10m, range 10s--3600s)
switches.silentstring[]Silent install arguments
switches.interactivestring[]Interactive install arguments
switches.logstringLog file path template
switches.install_dirstringInstall location argument
known_exit_codesmapExit code to meaning: package_in_use, reboot_required, cancelled_by_user, already_installed, missing_dependency, disk_full
success_codesint[]Non-zero exit codes that mean success

[detection]

FieldTypeDescription
methodstringregistry, pe_file, wmi, wmi_apps, driver_store, ascom_profile, file_exists, config_file, ledger
registry_keystringFull registry key path
registry_valuestringRegistry value name (e.g., DisplayVersion)
file_pathstringPath to executable or config file
version_regexstringRegex to extract version from detected string
product_codestringMSI product GUID
upgrade_codestringMSI upgrade GUID
inf_providerstringDriver INF provider name (for driver_store)
device_classstringDriver device class
inf_namestringDriver INF filename
fallbackobjectAnother [detection] config tried if primary fails

[checkver] / [dependencies] / [hardware]

See the complete example above. Detection configs are optional -- the lifecycle testing workflow discovers them automatically by installing on a Windows runner and probing for detection signatures.

Tips

  • Use vendor-product naming: zwo-asi-camera-driver, ascom-platform
  • Every package needs an icon at assets/icons/<package-id>.png
  • Test locally: astro-up install my-package --dry-run
  • Detection configs are validated by CI lifecycle tests

Licensed under Apache-2.0