Skip to content

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

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

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 24, 2026, 10:54 AM ET / 14:54 UTC.

ClawSweeper review

What this changes

Adds an MSIX lifecycle proposal and updates release, uninstall, and storage-validation guidance for the Windows Companion.

Merge readiness

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

Keep open for a maintainer-directed refresh: the proposal has useful lifecycle research, but it currently conflicts with current release policy and retains unsupported or inaccurate MSIX guidance.

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 research is useful, but stale release guidance, unresolved MSIX contradictions, and mock-only proof keep the patch from merge-ready quality.
Proof confidence 🦪 silver shellfish (2/6) Needs real behavior proof before merge: The PR reports build, test, parser, and link checks, but no current-head execution of the changed validator against an installed Companion MSIX. Add redacted terminal evidence after correction. 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 🦪 silver shellfish (2/6) 5 actionable review findings remain.

Verification

Check Result Evidence
Real behavior Needs proof Needs real behavior proof before merge: The PR reports build, test, parser, and link checks, but no current-head execution of the changed validator against an installed Companion MSIX. Add redacted terminal evidence after correction. 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 5 items Current release contract would be replaced: Current main documents both stable and alpha releases, plus a broader signing and artifact policy; this PR rewrites that section as alpha-only guidance.
Unsupported lifecycle candidate: The proposal calls windows.customInstall a promising alternative although the PR discussion identifies it as MSIXVC-restricted rather than a general desktop lifecycle.
Companion package identity: Current main declares OpenClaw.Companion, while the validator still resolves OpenClaw.Tray package names.
Findings 5 actionable findings [P1] Preserve the current release policy
[P2] Reject customInstall as a lifecycle option
[P2] Require embedded App Installer metadata
Security None None.

How this fits together

The Windows Companion currently uses Inno Setup and a ZIP updater, while SetupEngine separately manages the local WSL gateway. This PR proposes future MSIX, maintenance, update, and removal ownership across those components.

flowchart LR
A[Current installer and updater] --> B[Windows Companion]
B --> C[Proposed MSIX lifecycle]
C --> D[App Installer updates]
C --> E[Maintenance coordinator]
B --> F[Separate WSL gateway]
E --> G[Removal and recovery]
Loading

Decision needed

Question Recommendation
Should maintainers sponsor the per-user Inno coordinator plus Companion MSIX servicing model after its technical claims are corrected? Sponsor a narrowed proposal: Correct the technical blockers and retain the document as the design gate for a future MSIX lifecycle.

Why: This PR intentionally proposes a future ownership and servicing model, which source review cannot select on behalf of product and release owners.

Before merge

  • Add real behavior proof - Needs real behavior proof before merge: The PR reports build, test, parser, and link checks, but no current-head execution of the changed validator against an installed Companion MSIX. Add redacted terminal evidence after correction. 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.
  • Preserve the current release policy (P1) - Current main supports both stable and alpha releases and retains its broader signing and artifact contract. This rewrite makes the policy alpha-only and removes that contract, so rebase and retain current release behavior rather than replacing it with the older flow.
  • Reject customInstall as a lifecycle option (P2) - The PR discussion establishes that windows.customInstall is restricted to MSIXVC, not a general desktop-package lifecycle. Leaving it as a promising alternative asks maintainers to validate an unsupported path; remove it from the proposal.
  • Require embedded App Installer metadata (P2) - The plan treats direct MSIX as supported but says that route cannot retain an update association. A supported direct package needs embedded App Installer metadata or it can silently lose the documented servicing model.
  • Resolve the validator through Companion identities (P2) - The edited guidance names the Companion package, but the validator still searches for OpenClaw.Tray; current main uses OpenClaw.Companion and a Dev variant. Derive all lookups from the supported identities so installed packages can be found and removed.
  • State the warning's actual visibility condition (P2) - This says the warning requires packaged mode and setup-state.json, but current main also recognizes a local gateway URL. Align the validator guidance with the implementation so validation covers every visible-warning case.
  • Resolve merge risk (P1) - The branch is GitHub-dirty against current main, and its release-document rewrite would remove current stable-release and signing guidance unless it is rebased carefully.
  • Resolve merge risk (P1) - Unsupported customInstall and incorrect validator guidance could misdirect future installer, update, and removal work.
  • Improve patch quality - Rebase and preserve current release behavior.
  • Improve patch quality - Correct the four lifecycle and validator findings.
  • Improve patch quality - Attach redacted current-head output from the validator on an installed Companion MSIX.

Findings

  • [P1] Preserve the current release policy — docs/RELEASING.md:65-89
  • [P2] Reject customInstall as a lifecycle option — docs/MSIX_LIFECYCLE_PLAN.md:17
  • [P2] Require embedded App Installer metadata — docs/MSIX_LIFECYCLE_PLAN.md:127
Agent review details

Security

None.

Review metrics

Metric Value Why it matters
Current-main delta 4 files affected, +924/-131 The branch adds a 799-line lifecycle plan and substantially rewrites current release documentation.

Merge-risk options

Maintainer options:

  1. Correct and rebase the proposal (recommended)
    Preserve current release policy, remove unsupported lifecycle paths, and align validator documentation with Companion identities before merge.
  2. Pause for packaging direction
    Defer the proposal if maintainers do not endorse the coordinator and MSIX servicing model.

Technical review

Best possible solution:

Rebase onto current main, preserve current release policy, remove customInstall as a general lifecycle option, and align direct-install, package-identity, and warning guidance before maintainers adopt any MSIX servicing direction.

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

Yes for the patch defects: source inspection shows the validator queries OpenClaw.Tray while current main declares OpenClaw.Companion, and the warning condition differs from the edited guidance.

Is this the best way to solve the issue?

No: the proposal must preserve current release policy and remove unsupported or inaccurate lifecycle guidance before it becomes the future implementation plan.

Full review comments:

  • [P1] Preserve the current release policy — docs/RELEASING.md:65-89
    Current main supports both stable and alpha releases and retains its broader signing and artifact contract. This rewrite makes the policy alpha-only and removes that contract, so rebase and retain current release behavior rather than replacing it with the older flow.
    Confidence: 0.99
  • [P2] Reject customInstall as a lifecycle option — docs/MSIX_LIFECYCLE_PLAN.md:17
    The PR discussion establishes that windows.customInstall is restricted to MSIXVC, not a general desktop-package lifecycle. Leaving it as a promising alternative asks maintainers to validate an unsupported path; remove it from the proposal.
    Confidence: 0.98
  • [P2] Require embedded App Installer metadata — docs/MSIX_LIFECYCLE_PLAN.md:127
    The plan treats direct MSIX as supported but says that route cannot retain an update association. A supported direct package needs embedded App Installer metadata or it can silently lose the documented servicing model.
    Confidence: 0.88
  • [P2] Resolve the validator through Companion identities — scripts/validate-msix-storage-paths.ps1:3-10
    The edited guidance names the Companion package, but the validator still searches for OpenClaw.Tray; current main uses OpenClaw.Companion and a Dev variant. Derive all lookups from the supported identities so installed packages can be found and removed.
    Confidence: 0.99
  • [P2] State the warning's actual visibility condition — scripts/validate-msix-storage-paths.ps1:38-40
    This says the warning requires packaged mode and setup-state.json, but current main also recognizes a local gateway URL. Align the validator guidance with the implementation so validation covers every visible-warning case.
    Confidence: 0.97

Overall correctness: patch is incorrect
Overall confidence: 0.98

AGENTS.md: found and applied where relevant.

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

Labels

Label justifications:

  • P2: This affects future installer and upgrade guidance without changing current released runtime behavior.
  • merge-risk: 🚨 compatibility: Incorrect packaging, update, or removal guidance could break existing installation and recovery paths when implemented.
  • rating: 🦪 silver shellfish: Overall readiness is 🦪 silver shellfish; proof is 🦪 silver shellfish and patch quality is 🦪 silver shellfish.
  • 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 build, test, parser, and link checks, but no current-head execution of the changed validator against an installed Companion MSIX. Add redacted terminal evidence after correction. 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

What I checked:

Likely related people:

  • Scott Hanselman: Recent current-main history identifies this person on release and signing work adjacent to the release policy this PR would overwrite. (role: recent release-area contributor; confidence: medium; commits: adef8fcf30d7, 4206611f2b2e; files: docs/RELEASING.md)
  • DrusTheAxe: The PR discussion provides detailed technical review of App Installer metadata and customInstall eligibility. (role: MSIX lifecycle reviewer; confidence: medium; files: docs/MSIX_LIFECYCLE_PLAN.md, docs/uninstall-msix.md)

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 (37 earlier review cycles; latest 8 shown)
  • reviewed 2026-08-05T08:14:40.306Z sha a9cfa04 :: needs real behavior proof before merge. :: [P2] Resolve validator package lookups to Companion | [P2] Remove customInstall as a lifecycle alternative
  • reviewed 2026-08-08T14:24:19.989Z sha a9cfa04 :: needs real behavior proof before merge. :: [P2] Remove customInstall as an OpenClaw lifecycle candidate | [P2] Resolve validator package lookups to Companion identities | [P2] State the warning’s actual visibility condition
  • reviewed 2026-08-08T15:40:33.198Z sha a9cfa04 :: needs real behavior proof before merge. :: [P2] Reject customInstall as a lifecycle option | [P2] Account for embedded App Installer metadata | [P2] Resolve validator lookups to Companion identities | [P2] State the warning's full visibility condition
  • reviewed 2026-08-09T00:06:31.832Z sha a9cfa04 :: needs real behavior proof before merge. :: [P2] Remove customInstall as a lifecycle candidate | [P2] Account for embedded App Installer metadata | [P2] State the warning's full visibility condition | [P2] Resolve the validator through Companion identities
  • reviewed 2026-08-09T03:16:39.328Z sha a9cfa04 :: needs real behavior proof before merge. :: [P2] Remove customInstall as a lifecycle candidate | [P2] Account for embedded App Installer metadata | [P2] Resolve validator lookups to Companion identities | [P2] State the warning's actual visibility condition
  • reviewed 2026-08-09T09:28:24.971Z sha a9cfa04 :: needs real behavior proof before merge. :: [P2] Reject customInstall as a lifecycle candidate | [P2] Require embedded App Installer update metadata | [P2] Resolve validator lookups through Companion identities | [P2] State the warning's actual visibility condition
  • reviewed 2026-08-09T11:58:37.929Z sha a9cfa04 :: needs real behavior proof before merge. :: [P2] Reject customInstall as a lifecycle candidate | [P2] Require embedded App Installer update metadata | [P2] Resolve validator lookups through Companion identities | [P2] State the warning's actual visibility condition
  • reviewed 2026-08-09T14:51:25.239Z sha a9cfa04 :: needs real behavior proof before merge. :: [P2] Remove customInstall as a lifecycle candidate | [P2] Account for embedded App Installer metadata | [P2] Resolve validator lookups through Companion identities | [P2] State the warning's actual visibility condition

@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
@github-actions

Copy link
Copy Markdown
Contributor

This pull request has been automatically marked as stale due to inactivity.
Please update it or it will be closed.

@github-actions github-actions Bot added the stale label Aug 24, 2026
@shanselman

Copy link
Copy Markdown
Collaborator

Closing the stale MSIX lifecycle patch. Its research remains useful, but current release identities and policy have moved on; any follow-up should be a narrow proposal against current main.

@shanselman shanselman closed this Aug 28, 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. stale 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.

3 participants