Package meshtasticd for Windows as an MSI (#11289)

* Package meshtasticd for Windows as an MSI

Adds a --service flag connecting meshtasticd to the Service Control
Manager, a WiX MSI installing it as an auto-start LocalSystem service with
config in %ProgramData%\Meshtastic, and a CI step attaching the MSI to
releases.

* Address review comments

Bind workflow expressions to env vars in run: bodies, and build the
service status per call with an atomic checkpoint.

* Fix service stop state and CI lint

Latch the stop under a mutex so a startup report cannot walk the state
back. Ignore the new workflows in semgrep and checkov, as main_matrix
already is.

* Drop the checkov ignore for the winget workflow

Resolve the newest release inside the job instead of taking
workflow_dispatch inputs, so CKV_GHA_7 no longer fires and checkov stays
active on the file.

* Carry the MSI architecture into the winget manifest

Parse it from the asset name instead of defaulting to x64, and fail on a
multi-arch release rather than validating one at random.

* Restore release/.gitignore

* Leave the main matrix alone

Release attachment moves to the matrix rework in #11151. The MSI is still
built and uploaded as a CI artifact.

---------

Co-authored-by: Austin <vidplace7@gmail.com>
This commit is contained in:
Thomas Göttgens
2026-07-31 04:53:52 +00:00
committed by GitHub
co-authored by Austin
parent 02ea5baad4
commit ecd59e3120
10 files changed
+615

No files matched your search

+8
View File
@@ -108,6 +108,9 @@ NRF54L15Bluetooth *nrf54l15Bluetooth = nullptr;
#include "mesh/raspihttp/PiWebServer.h"
#endif
#include "platform/portduino/PortduinoGlue.h"
#ifdef _WIN32
#include "platform/portduino/windows/WindowsService.h"
#endif
#include <cstdlib>
#include <fstream>
#include <iostream>
@@ -1221,6 +1224,11 @@ void setup()
}
}
#endif
#if defined(ARCH_PORTDUINO) && defined(_WIN32)
// The node is up; let the SCM stop waiting on START_PENDING. No-op unless --service.
windowsServiceReportRunning();
#endif
}
#endif