Specification: Day 0 Update#6299
Conversation
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
| 3. **If declined:** | ||
| - Record the dismissal (increment counter in local state). | ||
| - Proceed with the original command on the current version. | ||
| - If the command fails because the client is too old (e.g., unrecognized subcommand), show a targeted message: "This feature requires WinGet 1.29+. Run `winget upgrade Microsoft.AppInstaller` to update." |
There was a problem hiding this comment.
How would the cli know which commands are supported in newer features if it's old?
There was a problem hiding this comment.
My current thinking is that when we check for the newer version, we'll have that data. Then when we're dealing with a newer index or schema version, we can make some assumptions about stuff that the client doesn't understand, and it can be associated with the perceived to be available latest version. It may not get "all edge cases", but it's my current best assumption.
|
|
||
| 4. **If non-interactive** (`--disable-interactivity`, COM API, Configuration): | ||
| - Do not prompt. Proceed with current version. | ||
| - Emit a warning to stderr: "WinGet update available (1.30.1234.0). Run `winget upgrade Microsoft.AppInstaller` to update." |
| The relaunch uses `--wait` to keep the new terminal window open after the command completes: | ||
|
|
||
| ``` | ||
| wt.exe --wait -- winget configure myconfig.yaml |
There was a problem hiding this comment.
Why not winget resume (currently experimental) ?
| wt.exe --wait -- winget configure myconfig.yaml | ||
| ``` | ||
|
|
||
| If Windows Terminal is not available, fall back to: |
There was a problem hiding this comment.
why route through wt.exe or cmd.exe instead of using ShellExecute to call the app execution alias, as if the user were calling winget configure myconfig.yaml --wait from the run dialog?
| The update uses the existing `winget upgrade` infrastructure targeting `Microsoft.AppInstaller`: | ||
|
|
||
| ``` | ||
| winget upgrade --id Microsoft.AppInstaller --silent --accept-package-agreements --accept-source-agreements |
There was a problem hiding this comment.
Any concerns around passing --accept-package-agreements, --accept-source-agreements with regards to explicitly accepting the agreements for the user? Should we remove them?
📖 Description
Specification for the Day 0 Update feature — enabling WinGet to detect that it is outdated on first meaningful command execution and self-update before proceeding. This eliminates the chicken-and-egg problem where WinGet must already be current to use new functionality (e.g.,
winget configure), and removes the need forwinget configure enableon fresh installs.Key aspects:
latestStableClientVersionfield in preIndexed source metadata signals the latest stable client version--waitEnableDay0Update,ForceMinimumClientVersion)Authored with GitHub Copilot assistance.
🔗 References
Related Issues:
🔍 Validation
Spec document — no code changes to validate.
✅ Checklist
📋 Issue Type
Microsoft Reviewers: Open in CodeFlow
Microsoft Reviewers: Open in CodeFlow