Releases · corolin/winsvc-wrapper · GitHub
Skip to content

Releases: corolin/winsvc-wrapper

v0.1.3.1

Choose a tag to compare

@github-actions github-actions released this 24 Sep 02:41
test(scm): assert DACL rights by membership; drop ConvertTo-SecureString

- Windows normalizes SDDL on read-back: the delegated RPWPLC came back
  as LCRPWP (bits reordered) and GA expanded to the concrete service
  rights, so substring assertions can never match. Parse the ACE
  (type;flags;rights;o;i;sid) and assert rights membership; a plain
  unit test pins the parser against the verbatim read-back string.
- Build the throwaway-account SecureString via [SecureString]::new() +
  AppendChar instead of ConvertTo-SecureString: its module
  (Microsoft.PowerShell.Security) fails to auto-load on some machines
  (CouldNotAutoloadMatchingModule) while LocalAccounts loads fine;
  ::new()/AppendChar are CLR/language features with no cmdlet
  dependency.

v0.1.3

Choose a tag to compare

@github-actions github-actions released this 24 Sep 00:06

Warning

This release is broken — use v0.1.3.1 instead.
allow_start_stop (and DACL-only security_descriptor) installs fail with error 87; fixed in v0.1.3.1.

Highlights

  • [service] allow_start_stop = [accounts] — delegate SERVICE_START/SERVICE_STOP (+ QUERY_STATUS) to listed accounts via a generated service DACL. Delegated users start/stop the service with zero UAC prompts; admins and SYSTEM keep full control, interactive users keep the default read set so rsw status keeps working. Mutually exclusive with security_descriptor (validate rejects both).
  • Smart elevation gate — install/uninstall/refresh/apply elevate pre-emptively; start/stop/restart try unelevated first and only relaunch elevated after ERROR_ACCESS_DENIED. Delegated users never see a prompt, everyone else sees exactly one.
  • rsw apply — refresh + ensure-started in one UAC prompt. A running service is left alone (config takes effect on next start).
  • Full-field config manuals (en/cn) now ship inside both release zips; the lite zips carry the same manuals with the [[download]] block stripped, each validated by the matching build before packing.
  • Deps: rustls 0.23.43 → 0.23.45 (RUSTSEC-2026-0285).

v0.1.3.1-legacy

v0.1.3.1-legacy Pre-release
Pre-release

Choose a tag to compare

@github-actions github-actions released this 24 Sep 02:42
test(scm): assert DACL rights by membership; drop ConvertTo-SecureString

- Windows normalizes SDDL on read-back: the delegated RPWPLC came back
  as LCRPWP (bits reordered) and GA expanded to the concrete service
  rights, so substring assertions can never match. Parse the ACE
  (type;flags;rights;o;i;sid) and assert rights membership; a plain
  unit test pins the parser against the verbatim read-back string.
- Build the throwaway-account SecureString via [SecureString]::new() +
  AppendChar instead of ConvertTo-SecureString: its module
  (Microsoft.PowerShell.Security) fails to auto-load on some machines
  (CouldNotAutoloadMatchingModule) while LocalAccounts loads fine;
  ::new()/AppendChar are CLR/language features with no cmdlet
  dependency.

v0.1.2

Choose a tag to compare

@github-actions github-actions released this 09 Sep 04:54

Highlights

  • Two flavors: full (~3 MB) ships everything; lite (~1.6 MB, built with --no-default-features) is the fully offline wrapper without [[download]] — it warns and skips download entries (or aborts the start when an entry sets fail_on_error = true). rsw --version shows the flavor.
  • [download.tls]: per-entry custom CA and mTLS client certificates (PEM). Certificate verification is never disabled.
  • [[download]] timeout_secs (default 120): whole-request budget; bodies stream to disk instead of buffering in memory.
  • Fixes: graceful-stop ctrl-event delivery (the hidden helper subcommand never matched its spawner — the stop signal is now verifiably delivered by rsw itself); unterminated final log lines are no longer lost to an exit race (pumps are drained before exit, log lines cap at 64 KiB); SCM wait hints clamped at 24 h (no more "Too long wait_hint" panic); a.jar/a.zip download staging collision; roll-by-size-time retention now prunes whole old periods.
  • rsw convert: WinSW v2 <serviceaccount> (domain+user, allowservicelogon, prompt warning), preshutdownTimeout key fixed; no longer emits the no-op hide_window.
  • rsw validate masks account/download passwords and proxy credentials.
  • CI: RustSec audit gate (weekly), pinned MSRV 1.88 job, dual-flavor builds, SHA256SUMS with every release.

⚠ Config compatibility

Configs are parsed with deny_unknown_fields, so older rsw binaries cannot read configs that use the new fields ([download.tls], timeout_secs). Configs using them require rsw ≥ 0.1.2.

v0.1.2-legacy

v0.1.2-legacy Pre-release
Pre-release

Choose a tag to compare

@github-actions github-actions released this 09 Sep 16:41
ci(legacy): publish as perpetual pre-release

v0.1.1

Choose a tag to compare

@github-actions github-actions released this 08 Sep 04:31
chore(release): v0.1.1

v0.1.0

Choose a tag to compare

@github-actions github-actions released this 08 Sep 01:04
rsw v0.1.0