Skip to content

docs: propose a single MSIX lifecycle for OpenClaw on Windows - #1073

Draft
llongley wants to merge 1 commit into
openclaw:mainfrom
llongley:user/llongley/plan-openclaw-msix
Draft

docs: propose a single MSIX lifecycle for OpenClaw on Windows#1073
llongley wants to merge 1 commit into
openclaw:mainfrom
llongley:user/llongley/plan-openclaw-msix

Conversation

@llongley

@llongley llongley commented Aug 1, 2026

Copy link
Copy Markdown

What Problem This Solves

Installing, updating, repairing, and removing OpenClaw on Windows is spread across Inno Setup, a ZIP updater, in-progress MSIX packaging, SetupEngine, and a separately installed WSL gateway. Nothing in the repository says how those pieces are meant to fit together, which of them MSIX should own, or what we'd need to prove before retiring the current installer.

Why This Change Was Made

This adds a proposal (docs/MSIX_LIFECYCLE_PLAN.md) for what MSIX would own: the app package only, with the WSL gateway installed and updated on its own path, app updates delivered through App Installer, and the same small per-user maintenance program installed alongside each of Stable, Preview, and installed Dev. It separates what the prototypes proved from what they didn't, so the unproven parts don't read as settled. It covers current behavior, the alternatives it rules out and why, what the prototypes actually showed, the implementation steps, and what each step has to prove before the next one starts. The current Inno installer and ZIP updater stay in place until the MSIX path clears those gates.

It also links the release and uninstall docs to the proposal, and corrects the uninstall recovery guidance and the guidance in the MSIX storage validation script so they match the per-channel package identities, the startup task, the current state paths, and the restricted windows.customInstall extension.

User Impact

No runtime behavior changes. Maintainers and reviewers now have one place in the repository to decide how OpenClaw on Windows should be packaged and serviced, along with the evidence and validation still needed before anyone implements it.

Evidence

  • I checked the proposal against what's in the repository today: the packaging project, manifest generation, the paused MSIX CI job, the ZIP updater, SetupEngine's gateway acquisition, the package identities and state paths the app uses, the release docs, and the earlier MSIX packaging work in PR Work in progress: msix installer #732.
  • The lifecycle recommendations come from prototype runs on a disposable x64 Windows VM covering AppData behavior, windows.customInstall actions, signed deployment trust, per-user coordination, removing the app package and the maintenance entry in either order, and cleanup run as the system account instead of the signed-in user. Package composition was checked for both x64 and ARM64 builds, but ARM64 runtime behavior is one of the gates still open.

Change Type

  • Bug fix
  • Feature
  • Refactor
  • Docs or instructions
  • Tests or validation
  • Security hardening
  • Chore or infrastructure

Scope

  • Tray or WinUI UX
  • Windows node capability
  • Local MCP or winnode
  • Gateway, connection, or pairing
  • Setup or onboarding
  • Permissions, privacy, or security
  • Tests, CI, or docs

Validation

  • git diff --check
  • PowerShell syntax parsing for scripts/validate-msix-storage-paths.ps1
  • Link, heading-anchor, and source line-range checks for every changed doc
  • Internal-link, stale-guidance, and changed-line punctuation checks
  • .\build.ps1
  • dotnet test .\tests\OpenClaw.Shared.Tests\OpenClaw.Shared.Tests.csproj --no-restore - 3,399 passed, 32 skipped
  • dotnet test .\tests\OpenClaw.Tray.Tests\OpenClaw.Tray.Tests.csproj --no-restore - 2,022 passed

The first Tray test run hit one timing-related failure in QueuedSend_LifecycleStartBeforeAck_PromotesByIdempotencyKey. That test passed when rerun on its own, and the full required build and test set passed on the final rerun.

Real Behavior Proof

  • Environment tested: Windows_NT local worktree
  • PR head or commit tested: a9cfa04a
  • Exact steps or command run: .\build.ps1; the required Shared and Tray test projects; git diff --check; PowerShell parser validation; repository-relative link, anchor, and source line-range validation
  • Evidence after fix: The repository build and required test suites pass, every changed documentation target resolves, every source line range is valid, and the edited PowerShell script parses successfully
  • Observed result: Passed
  • Screenshot or artifact links verified? (Yes/No/N/A): N/A
  • Not verified or blocked: This PR doesn't change runtime installation, update, repair, migration, or removal behavior. The proposal lists those as things implementation still has to prove, not as work that's done.

Security Impact

  • New permissions or capabilities? (Yes/No): No
  • Secrets or tokens handling changed? (Yes/No): No
  • New or changed network calls? (Yes/No): No
  • Command or tool execution surface changed? (Yes/No): No
  • Data access scope changed? (Yes/No): No
  • If any answer is Yes, explain the risk and mitigation: N/A

The proposal writes down future requirements for package trust, gateway payload verification, credential storage, cleanup, and fail-closed command execution, but this PR doesn't implement any of them.

Compatibility and Migration

  • Backward compatible? (Yes/No): Yes
  • Config or environment changes? (Yes/No): No
  • Migration needed? (Yes/No): No
  • If yes, list the exact upgrade steps: N/A

Review Conversations

  • I replied to or resolved every bot review conversation addressed by this PR.
  • I left unresolved only conversations that still need maintainer judgment.

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
@clawsweeper clawsweeper Bot added rating: 🦪 silver shellfish Thin PR readiness signal; proof, validation, or implementation needs work. status: 📣 needs proof The PR needs real behavior proof before ClawSweeper can clear the contributor ask. P3 Low-risk cleanup, docs, polish, ergonomics, or speculative feature. labels Aug 1, 2026
@clawsweeper

clawsweeper Bot commented Aug 1, 2026

Copy link
Copy Markdown

Codex review: needs real behavior proof before merge. Reviewed August 5, 2026, 4:14 AM ET / 08:14 UTC.

ClawSweeper review

What this changes

The PR adds an MSIX lifecycle proposal and updates release, uninstall, and MSIX storage-validator guidance for the Windows Companion.

Merge readiness

Blocked until real behavior proof from a real setup is added - 7 items remain

Keep this PR open for two factual corrections and an explicit maintainer decision on the proposed packaging direction. The current documentation changes are not ready to define a future Windows lifecycle.

Priority: P2
Reviewed head: a9cfa04a66caef813b3d08e5f371688c4bea448f
Owner decision: Required. See Decision needed.

Review scores

Measure Result What it means
Overall readiness 🦪 silver shellfish (2/6) The proposal has useful research, but unresolved factual defects and missing live validator proof keep it below merge readiness.
Proof confidence 🦪 silver shellfish (2/6) Needs real behavior proof before merge: The PR reports builds, tests, parsing, and link checks but provides no redacted current-head run of the modified validator against an installed Companion MSIX. After adding proof, update the PR body; ClawSweeper should re-review automatically. If it does not, the PR author or someone with repository write access can comment @clawsweeper re-review.
Patch quality 🦐 gold shrimp (3/6) 2 actionable review findings remain.

Verification

Check Result Evidence
Real behavior Needs proof Needs real behavior proof before merge: The PR reports builds, tests, parsing, and link checks but provides no redacted current-head run of the modified validator against an installed Companion MSIX. After adding proof, update the PR body; ClawSweeper should re-review automatically. If it does not, the PR author or someone with repository write access can comment @clawsweeper re-review.
Evidence reviewed 4 items Current package identity: Current main declares the package identity as OpenClaw.Companion.
Validator mismatch: The PR updates prose to call the package OpenClaw Companion but still queries OpenClaw.Tray at install, probe, and teardown points.
Restricted extension guidance: A review comment links Microsoft guidance that limits windows.customInstall to certain Microsoft-partner game scenarios, while the proposal retains it as a clearance-gated alternative.
Findings 2 actionable findings [P2] Resolve validator package lookups to Companion
[P2] Remove customInstall as a lifecycle alternative
Security None None.

How this fits together

The Windows Companion is the packaged tray application, while SetupEngine separately provisions and maintains the local WSL gateway. Installer, package identity, state storage, and cleanup paths determine how users install, update, repair, and remove those components.

flowchart LR
A[Windows installer or package] --> B[Companion package]
B --> C[Package identity lookup]
C --> D[Storage validation]
E[Setup engine] --> F[WSL gateway]
D --> G[Removal guidance]
F --> G
Loading

Decision needed

Question Recommendation
Should OpenClaw adopt the proposed MSIX companion plus per-user coordinator lifecycle after the factual corrections are made? Sponsor the lifecycle plan: Approve the proposed boundary and use a corrected plan to guide staged implementation.

Why: The PR introduces a broad future contract for packaging, channel coexistence, migration, and removal that current product behavior does not decide.

Before merge

  • Add real behavior proof - Needs real behavior proof before merge: The PR reports builds, tests, parsing, and link checks but provides no redacted current-head run of the modified validator against an installed Companion MSIX. After adding proof, update the PR body; ClawSweeper should re-review automatically. If it does not, the PR author or someone with repository write access can comment @clawsweeper re-review.
  • Resolve validator package lookups to Companion (P2) - The changed prose renames the package to OpenClaw Companion, but the validation path still queries OpenClaw.Tray. The current manifest identifies OpenClaw.Companion, so the script will not find the installed package it is meant to validate.
  • Remove customInstall as a lifecycle alternative (P2) - The plan still calls windows.customInstall promising despite the linked platform guidance restricting it to certain Microsoft-partner game scenarios. Keeping it as a clearance-gated alternative invites unsupported product work.
  • Resolve merge risk (P1) - The proposal defines future package identities, migration, updater ownership, and removal behavior before a maintainer has accepted those product contracts.
  • Resolve merge risk (P1) - The PR contains no redacted installed-Companion run of the changed validator, so its practical guidance remains unproven.
  • Complete next step (P2) - The package-identity mismatch is a narrow mechanical repair, while the broader lifecycle direction needs maintainer approval.

Findings

  • [P2] Resolve validator package lookups to Companion — scripts/validate-msix-storage-paths.ps1:510-517
  • [P2] Remove customInstall as a lifecycle alternative — docs/MSIX_LIFECYCLE_PLAN.md:17
Agent review details

Security

None.

Review metrics

Metric Value Why it matters
Lifecycle-plan scope 888 added, 72 removed across 4 files The large future-installation proposal needs explicit ownership and compatibility review.

Merge-risk options

Maintainer options:

  1. Correct facts before direction review (recommended)
    Fix the validator identity and remove the unsupported lifecycle alternative before maintainers evaluate the proposal.
  2. Pause the proposal
    Defer this packaging direction until an owner sponsors its product and platform contract.

Technical review

Best possible solution:

Correct the validator identity, remove windows.customInstall as an OpenClaw lifecycle alternative, then have an owner explicitly sponsor or decline the MSIX-plus-coordinator direction.

Do we have a high-confidence way to reproduce the issue?

Yes. Current main names the package OpenClaw.Companion, while the PR head's validator queries OpenClaw.Tray, so an installed Companion package cannot be found by that path.

Is this the best way to solve the issue?

No. The validator must use the current package identity, and the restricted custom-install extension should not be retained as a viable OpenClaw lifecycle path.

Full review comments:

  • [P2] Resolve validator package lookups to Companion — scripts/validate-msix-storage-paths.ps1:510-517
    The changed prose renames the package to OpenClaw Companion, but the validation path still queries OpenClaw.Tray. The current manifest identifies OpenClaw.Companion, so the script will not find the installed package it is meant to validate.
    Confidence: 0.99
  • [P2] Remove customInstall as a lifecycle alternative — docs/MSIX_LIFECYCLE_PLAN.md:17
    The plan still calls windows.customInstall promising despite the linked platform guidance restricting it to certain Microsoft-partner game scenarios. Keeping it as a clearance-gated alternative invites unsupported product work.
    Confidence: 0.95

Overall correctness: patch is incorrect
Overall confidence: 0.96

AGENTS.md: found and applied where relevant.

Codex review notes: model internal, reasoning high; reviewed against d2de6150753b.

Labels

Label justifications:

  • P2: The PR affects future Windows installation and upgrade direction but does not make an immediate runtime change.
  • merge-risk: 🚨 compatibility: The proposal specifies future package identities, updater ownership, migration, and removal behavior for existing installations.
  • rating: 🦪 silver shellfish: Overall readiness is 🦪 silver shellfish; proof is 🦪 silver shellfish and patch quality is 🦐 gold shrimp.
  • status: 📣 needs proof: The PR needs real behavior proof before ClawSweeper can clear the contributor ask. Needs real behavior proof before merge: The PR reports builds, tests, parsing, and link checks but provides no redacted current-head run of the modified validator against an installed Companion MSIX. After adding proof, update the PR body; ClawSweeper should re-review automatically. If it does not, the PR author or someone with repository write access can comment @clawsweeper re-review.

Evidence

Acceptance criteria:

  • [P1] ./build.ps1.
  • [P1] dotnet test ./tests/OpenClaw.Shared.Tests/OpenClaw.Shared.Tests.csproj --no-restore.
  • [P1] dotnet test ./tests/OpenClaw.Tray.Tests/OpenClaw.Tray.Tests.csproj --no-restore.
  • [P1] PowerShell parser validation for scripts/validate-msix-storage-paths.ps1.

What I checked:

Likely related people:

  • AlexAlves87: Current blame attributes the MSIX manifest and storage-validator content to this recent commit. (role: recent packaging-surface contributor; confidence: medium; commits: f536bcf06559; files: scripts/validate-msix-storage-paths.ps1, src/OpenClaw.Tray.WinUI/Package.appxmanifest)
  • Mike Harsh: Introduced the current local-gateway removal path and associated Settings warning. (role: local gateway removal feature author; confidence: high; commits: 223db1fb847e; files: src/OpenClaw.Tray.WinUI/Pages/SettingsPage.xaml, src/OpenClaw.Tray.WinUI/Pages/SettingsPage.xaml.cs)

Rank-up moves

Optional improvements that raise the rating; they are not merge blockers.

  • Correct all OpenClaw.Tray package queries in the validator.
  • Remove customInstall as a viable lifecycle alternative.
  • Attach redacted output from a current-head validator run against an installed Companion MSIX.

Rating scale

Score Internal tier Crab rank Meaning
6/6 S 🦀 challenger crab Exceptional readiness
5/6 A 🦞 diamond lobster Very strong readiness
4/6 B 🐚 platinum hermit Good normal PR; ordinary maintainer review
3/6 C 🦐 gold shrimp Useful, but confidence is limited
2/6 D 🦪 silver shellfish Proof or implementation needs work
1/6 F 🧂 unranked krab Not merge-ready
N/A NA 🌊 off-meta tidepool Rating does not apply

Overall follows the weaker of proof and patch quality.
Shiny media proof means a screenshot, video, or linked artifact directly shows the changed behavior. Runtime, network, CSP, and security claims still need visible diagnostics.

Workflow

  • ClawSweeper keeps one durable marker-backed review comment per issue or PR.
  • Re-runs edit this comment so the latest verdict, findings, and automation markers stay together instead of adding duplicate bot comments.
  • A fresh review can be triggered by eligible @clawsweeper re-review comments, exact-item GitHub events, scheduled/background review runs, or manual workflow dispatch.
  • PR/issue authors and users with repository write access can comment @clawsweeper re-review or @clawsweeper re-run on an open PR or issue to request a fresh review only.
  • Maintainers can also comment @clawsweeper review to request a fresh review only.
  • Fresh-review commands do not start repair, autofix, rebase, CI repair, or automerge.
  • Maintainer-only repair and merge flows require explicit commands such as @clawsweeper autofix, @clawsweeper automerge, @clawsweeper fix ci, or @clawsweeper address review.
  • Maintainers can comment @clawsweeper explain to ask for more context, or @clawsweeper stop to stop active automation.

History

Review history (29 earlier review cycles; latest 8 shown)
  • reviewed 2026-08-03T14:57:17.626Z sha a9cfa04 :: needs real behavior proof before merge. :: [P2] Resolve validator package lookups to Companion | [P2] State the warning's full visibility condition | [P2] Remove customInstall as a viable lifecycle alternative
  • reviewed 2026-08-03T20:16:23.796Z sha a9cfa04 :: needs real behavior proof before merge. :: [P2] Resolve validator lookups to Companion identities | [P2] State the warning's actual visibility condition | [P2] Remove customInstall as a viable lifecycle alternative
  • reviewed 2026-08-04T03:20:28.991Z sha a9cfa04 :: needs real behavior proof before merge. :: [P2] Resolve validator lookups to Companion identities | [P2] State the warning's full visibility condition | [P2] Do not present customInstall as a viable alternative | [P2] Correct the Alpha package identity
  • reviewed 2026-08-04T06:15:50.818Z sha a9cfa04 :: needs real behavior proof before merge. :: [P2] Remove customInstall as a viable alternative | [P2] Account for embedded App Installer metadata | [P2] Correct the Alpha package identity | [P2] State the warning's full visibility condition | [P2] Resolve validator lookups to Companion identities
  • reviewed 2026-08-04T11:09:21.188Z sha a9cfa04 :: needs real behavior proof before merge. :: [P2] Remove customInstall as a viable lifecycle alternative | [P2] Account for embedded App Installer metadata | [P2] Correct the Alpha package identity | [P2] State the warning's full visibility condition | [P2] Resolve validator lookups to Companion identities
  • reviewed 2026-08-04T13:11:44.655Z sha a9cfa04 :: needs real behavior proof before merge. :: [P2] Remove customInstall as a viable lifecycle alternative | [P2] Account for embedded App Installer metadata | [P2] Resolve validator lookups to the Companion identity | [P2] State the warning's full visibility condition
  • reviewed 2026-08-04T16:02:15.694Z sha a9cfa04 :: needs real behavior proof before merge. :: none
  • reviewed 2026-08-04T22:05:06.419Z sha a9cfa04 :: needs real behavior proof before merge. :: [P2] Remove customInstall as a validation candidate

@clawsweeper clawsweeper Bot added merge-risk: 🚨 other 🚨 Merging this PR has meaningful risk outside the owned taxonomy. rating: 🧂 unranked krab Not merge-ready due to missing proof or serious correctness/safety concerns. merge-risk: 🚨 compatibility 🚨 Merging this PR could break existing users, config, migrations, defaults, or upgrades. P2 Normal priority bug or improvement with limited blast radius. rating: 🦪 silver shellfish Thin PR readiness signal; proof, validation, or implementation needs work. and removed rating: 🦪 silver shellfish Thin PR readiness signal; proof, validation, or implementation needs work. merge-risk: 🚨 other 🚨 Merging this PR has meaningful risk outside the owned taxonomy. P3 Low-risk cleanup, docs, polish, ergonomics, or speculative feature. rating: 🧂 unranked krab Not merge-ready due to missing proof or serious correctness/safety concerns. merge-risk: 🚨 compatibility 🚨 Merging this PR could break existing users, config, migrations, defaults, or upgrades. labels Aug 1, 2026
@@ -0,0 +1,799 @@
# One supported install, update, repair, and removal path for OpenClaw on Windows

The way OpenClaw is installed, updated, repaired, and removed on Windows should be changed because those responsibilities are currently split across mechanisms that do not know about each other. This document presents the recommended design, the evidence behind it, the remaining validation gates, and the decisions that need team agreement.

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

General rule of thumb: Use max line length = 100 in .md files
Makes it easier to review, diff, etc

VS code is very good at reflowing Markdown, especially with the Reflow Markdown extension (alt-q to reflow paragraph, doesn't break URLs, etc)


1. Package the **Windows companion** as MSIX. The companion package contains the WinUI tray application, the Windows node hosted in that process, setup and connection libraries, and all required Windows runtime files for one architecture.
2. Keep the **gateway separate from the companion package**, both now and if a Windows-hosted gateway becomes available. The current gateway remains a separately installed WSL component. A Windows-hosted gateway appears likely to arrive through separate OpenClaw and Windows platform work, but it has no published schedule or contract at the time of writing. This proposal allows the companion to ship without it and adopt it later; construction of that gateway is not proposed here.
3. Install each supported companion channel through App Installer. A `.appinstaller` document associates the installed package with that channel's HTTPS update source so Windows can check, stage, verify, and apply later companion versions.

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The App Installer app is merely one of many possible ways to install MSIX packages. Alternatives include PowerShell cmdlets, WinGet, the Microsoft Store, Intune, and many more.

All produce equivalent results.


1. Package the **Windows companion** as MSIX. The companion package contains the WinUI tray application, the Windows node hosted in that process, setup and connection libraries, and all required Windows runtime files for one architecture.
2. Keep the **gateway separate from the companion package**, both now and if a Windows-hosted gateway becomes available. The current gateway remains a separately installed WSL component. A Windows-hosted gateway appears likely to arrive through separate OpenClaw and Windows platform work, but it has no published schedule or contract at the time of writing. This proposal allows the companion to ship without it and adopt it later; construction of that gateway is not proposed here.
3. Install each supported companion channel through App Installer. A `.appinstaller` document associates the installed package with that channel's HTTPS update source so Windows can check, stage, verify, and apply later companion versions.

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Developers are encouraged to embed a .appinstaller file in their .msix packge. This way there's no need for separate files.

(Admins after the fact can't embed a .appinstaller file into a signed package w/o breaking the signing integrity, thus admins adding .appinstaller to a package MUST put it outside the package. But for developers authoring the package, embedding ensures even if someone directly installs a .msix the .appinstaller's information will be used for updates, repair, etc)

1. Package the **Windows companion** as MSIX. The companion package contains the WinUI tray application, the Windows node hosted in that process, setup and connection libraries, and all required Windows runtime files for one architecture.
2. Keep the **gateway separate from the companion package**, both now and if a Windows-hosted gateway becomes available. The current gateway remains a separately installed WSL component. A Windows-hosted gateway appears likely to arrive through separate OpenClaw and Windows platform work, but it has no published schedule or contract at the time of writing. This proposal allows the companion to ship without it and adopt it later; construction of that gateway is not proposed here.
3. Install each supported companion channel through App Installer. A `.appinstaller` document associates the installed package with that channel's HTTPS update source so Windows can check, stage, verify, and apply later companion versions.
4. Use the same small signed **per-user Inno coordinator** for WSL-backed Stable, Preview, and installed Dev channels. This creates an additional Windows Installed Apps maintenance entry alongside each channel's companion MSIX; it is not another package containing the companion. It installs a signed `OpenClawMaintenance.exe` program that inventories, migrates, repairs, and removes OpenClaw components even after the companion has been removed. The coordinator also installs the companion through its approved `.appinstaller` source so that the update association is recorded.

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

'same small signed' - odd phrasing. Typo?

4. Use the same small signed **per-user Inno coordinator** for WSL-backed Stable, Preview, and installed Dev channels. This creates an additional Windows Installed Apps maintenance entry alongside each channel's companion MSIX; it is not another package containing the companion. It installs a signed `OpenClawMaintenance.exe` program that inventories, migrates, repairs, and removes OpenClaw components even after the companion has been removed. The coordinator also installs the companion through its approved `.appinstaller` source so that the update association is recorded.
5. Keep SetupEngine responsible for the current WSL gateway. Its acquisition path should be strengthened so reviewed gateway releases are described by signed, immutable metadata and exact payload hashes rather than relying on a mutable HTTPS installation script.
6. Support Stable, Preview, and installed Dev side by side using separate package identities, URI protocol handlers, state roots, startup registrations, maintenance registrations, `.appinstaller` feeds, local Model Context Protocol (MCP) endpoints and tokens, and app execution aliases when approved. Versions within one channel update in place. Installing one channel must not force removal of another.
7. Treat the `windows.customInstall` MSIX extension, which declares install, repair, and uninstall actions, as a promising alternative to the coordinator. It should not be used until the [five clearance requirements](#windowscustominstall) covering platform guidance, production lifecycle proof, managed deployment, Store review when applicable, and OpenClaw approval are met. The disposable prototype established only action ordering and interactive-user file-system scope.

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Treat the windows.customInstall MSIX extension...as a promising alternative to the coordinator.

It's not.

The windows.customInstall extension is only usable by MSIXVC and as noticed on the docs

This element is currently intended to be used only by certain types of desktop PC games that are published by Microsoft and our partners.

There is no intention to change this restriction at this time.

What are you trying to accomplish? There may be other (supported) ways to do so.

Are you familiar with the windows.preInstalledConfigTask and windows.updateTask extensions? See https://learn.microsoft.com/en-us/windows/uwp/launch-resume/run-a-background-task-during-updatetask for more details.

Are you familiar with Uninstall/Reset/Repair Tasks #2779? If this interests you please share your feedback at that link.

To name a few. Devil's in the details so it's hard to say more without a better understanding of what you're trying to accomplish (sorry, I'm not familiar with the coordinator's details).

9. Keep the current full Inno companion installer and ZIP updater until the MSIX path has passed installation, update, migration, repair, recovery, and complete-removal gates. The full Inno companion payload should be retired only after every responsibility has a validated replacement. The small Inno coordinator in item 4 remains part of the WSL-period design.
10. Advance the design through explicit validation gates. The package boundary, custom-install action mechanics, and coordinator removal ordering have been established by prototypes. Production-trusted signing, App Installer update association and package replacement, package repair, managed deployment, ARM64 runtime behavior, and migration of real OpenClaw state remain required before the design is supported.

MSIX is recommended for the companion for the reasons listed under [Why MSIX is recommended for the companion](#why-msix-is-recommended-for-the-companion). Those benefits apply only to the companion MSIX. Comparable gateway assurances should be provided separately through SetupEngine's signed release metadata, exact payload verification, inventory, transactional update, and recovery contract. Neither mechanism reduces the permissions of the full-trust tray and in-process Windows node.

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Those benefits apply only to the companion MSIX.

Is OpenClaw for Windows == companion + gateway?

I'm curious what the gateway would need that MSIX currently doesn't provide.

| `windows.customInstall` | It can declare package install, repair, and uninstall actions and request user-context execution. | Technically promising but not a baseline. The [five clearance requirements](#windowscustominstall) apply: platform eligibility and semantics; production-signed App Installer lifecycle proof, including repair, removal, failure recovery, and target-user execution; managed-deployment proof; Store approval when applicable; and OpenClaw release and security approval. |
| Direct MSIX | It provides an immutable signed companion artifact and works for offline or controlled installation. | Supported as an artifact, but not the primary self-service path because a direct MSIX does not establish an update association. |
| Portable ZIP | It is useful for development, diagnostics, and recovery. | Retain as a support artifact. It is not an installed product lifecycle. |
| Put the gateway in the companion MSIX | It appears to simplify first acquisition. | Rejected. The gateway is optional, writable, long-running, independently versioned, and owned by a different update and repair lifecycle. |

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

You're missing another alternative: Put the gateway in its own MSIX

That would address most issues if packing companion + gateway in one MSIX package. I'm curious if it addresses all, or why not.

| Small per-user Inno coordinator plus companion MSIX | It keeps a maintenance executable available after package removal and naturally runs against the current user's WSL and CurrentUser state. | Recommended for each installed WSL-backed Stable, Preview, and Dev channel. It is a temporary coordinator, not a second copy of the companion. |
| Machine-context MSI coordinator | It offers standardized Windows Installer product, repair, logging, and enterprise policy concepts. | Rejected as the baseline for the current per-user WSL lifecycle. WSL registration and CurrentUser credentials require target-user execution. A machine-context design would need a supported way to identify and act as that user, and the prototype demonstrated the risk of a success result scoped only to `SYSTEM`. |
| Per-user MSI coordinator | It could run in the correct user context while retaining Windows Installer semantics. | Not selected. It adds MSI component, upgrade, and custom-action complexity without a demonstrated lifecycle advantage over the existing Inno expertise. |
| `windows.customInstall` | It can declare package install, repair, and uninstall actions and request user-context execution. | Technically promising but not a baseline. The [five clearance requirements](#windowscustominstall) apply: platform eligibility and semantics; production-signed App Installer lifecycle proof, including repair, removal, failure recovery, and target-user execution; managed-deployment proof; Store approval when applicable; and OpenClaw release and security approval. |

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It can declare an MSIXVC package...

Not a general purpose solution. Not viable for your scenarios today, and unlikely ever to be. See https://github.com/openclaw/openclaw-windows-node/pull/1073/changes#r3699825644 for more information


Store publication during the WSL period remains difficult because an ordinary Store listing does not deliver the separate Inno coordinator. A Store release should wait for one of these:

- OpenClaw is approved to use `windows.customInstall` and the production lifecycle passes;

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I wouldn't expect to see this. See previous comments

| Microsoft Store | Deferred until representative policy and submission evidence covers full-trust execution, requested capabilities, external gateway lifecycle, state, identity, and complete removal. |
| WinGet | Added only after it points to an approved installer and the resulting update authority is unambiguous. |

Store publication during the WSL period remains difficult because an ordinary Store listing does not deliver the separate Inno coordinator. A Store release should wait for one of these:

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

What would be required for coordinator to be an MSIX package?

What of these (if anything) is a problem achieving with MSIX?

(Sorry, I'm not familiar with coordinator or the InnoSetup details)

@clawsweeper clawsweeper Bot added merge-risk: 🚨 compatibility 🚨 Merging this PR could break existing users, config, migrations, defaults, or upgrades. rating: 🧂 unranked krab Not merge-ready due to missing proof or serious correctness/safety concerns. rating: 🦪 silver shellfish Thin PR readiness signal; proof, validation, or implementation needs work. and removed rating: 🦪 silver shellfish Thin PR readiness signal; proof, validation, or implementation needs work. rating: 🧂 unranked krab Not merge-ready due to missing proof or serious correctness/safety concerns. labels Aug 2, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

merge-risk: 🚨 compatibility 🚨 Merging this PR could break existing users, config, migrations, defaults, or upgrades. P2 Normal priority bug or improvement with limited blast radius. rating: 🦪 silver shellfish Thin PR readiness signal; proof, validation, or implementation needs work. status: 📣 needs proof The PR needs real behavior proof before ClawSweeper can clear the contributor ask.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants