Tags: microsoft/winget-cli
Tags
Optional Telemetry Event for Microsoft Store Catalog Installs (msstor… …e Source) (#6352) ## 📖 Description Adds an optional telemetry event that lets Microsoft Store analytics attribute Store‑catalog app installs that happen through WinGet. When WinGet successfully installs an app whose source is the Microsoft Store (`msstore`), it now emits a `StoreExperienceTelemetry-WinGetInstall` event on the **`Microsoft-Windows-Store`** ETW provider (`{9C2A37F3-E5FD-5CAE-BCD1-43DAFEEE1FF0}`). The event carries only the minimum needed for attribution: | Field | Value | |-------|-------| | `pid` | Store product ID (the `msstore` package identifier) | | `src` | Install caller | | `cn` | Catalog name — constant `"msstore"` | Key points: - **Emitted only on success, only for `msstore`.** The call site is the success path of `ReportInstallerResult`, gated on `PackageVersion->GetSource().IsWellKnownSource(WellKnownSource::MicrosoftStore)`. Local‑manifest installs (which have no `PackageVersion`) are guarded with `Contains(...)` so they are unaffected. - **Scope: unpackaged (Win32) Store apps.** Unpackaged `msstore` items resolve to a real installer type (`exe`/`msi`) and flow through `ReportInstallerResult`, so they emit the event. - **New dedicated provider.** `Microsoft-Windows-Store` is registered alongside the existing WinGet provider, with its own enablement callback (`g_IsStoreTelemetryProviderEnabled`) so the Store event can be captured independently of the WinGet telemetry provider. - **Privacy‑preserving.** The event honors the WinGet telemetry opt‑out (`m_isSettingEnabled`), the runtime toggle (`m_isRuntimeEnabled`), and initialization state, and is tagged `PDT_ProductAndServicePerformance` / `MICROSOFT_KEYWORD_CRITICAL_DATA`. It records no executable paths, usernames, or command‑line arguments. ### Files changed | File | Change | |------|--------| | `src/AppInstallerCommonCore/Telemetry/TraceLogging.{h,cpp}` | Declare/define the `Microsoft-Windows-Store` provider + register its enablement callback | | `src/AppInstallerCommonCore/Public/AppInstallerTelemetry.h` | Declare `LogStoreInstall` | | `src/AppInstallerCommonCore/AppInstallerTelemetry.cpp` | Implement `LogStoreInstall` (writes the event; updates the telemetry summary when the WinGet provider is enabled) | | `src/AppInstallerCLICore/Workflows/InstallFlow.cpp` | Call `LogStoreInstall` on successful `msstore` installs, guarded by `Contains(PackageVersion)` | ## 🔗 References Resolves #6317 ## 🔍 Validation - **CLI, unpackaged Store app (confirmed):** `winget install XPFFH613W8V6LV --accept-package-agreements` (OBS Studio — an unpackaged `exe` Store app). An ETW capture of the `Microsoft-Windows-Store` provider showed `StoreExperienceTelemetry-WinGetInstall` with `pid` = the Store product ID and `cn` = `msstore`. - **Negative cases:** no event for non‑`msstore` sources, and none for a failed install (the event is only reached on the success path). - **Privacy:** event is suppressed when WinGet telemetry is disabled via settings or the runtime toggle. ## ✅ Checklist - [x] Signed the [Contributor License Agreement](https://cla.opensource.microsoft.com) - [x] Linked to an issue - [ ] Updated [Release Notes](../doc/ReleaseNotes.md) (if applicable) - [ ] Updated documentation (if applicable) - [ ] Updated [Copilot instructions](.github/copilot-instructions.md) (if build, architecture, or conventions changed) ## 📋 Issue Type - [ ] Bug fix - [x] Feature - [ ] Task ###### Microsoft Reviewers: [Open in CodeFlow](https://microsoft.github.io/open-pr/?codeflow=https://github.com/microsoft/winget-cli/pull/6352) --------- Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Undo normalization of external files (#6336) ## 📖 Description <!-- Describe what this PR changes, why, and any limitations. --> #6267 and #6276 normalized the line endings across the repo. This included the external PS modules, some of which are signed files. The normalization broke the signatures in some of those files. This PR undoes the normalization for those files and restores them to the proper orden. ## 🔗 References <!-- Link related issues, PRs, or docs. Use "Resolves #1234" to auto-close. --> ## 🔍 Validation <!-- How did you test? List manual steps or note automated test coverage. --> ## ✅ Checklist <!-- Place an "x" between the brackets to check an item. e.g: [x] --> - [ ] Signed the [Contributor License Agreement](https://cla.opensource.microsoft.com) - [ ] Linked to an issue - [ ] Updated [Release Notes](../doc/ReleaseNotes.md) (if applicable) - [ ] Updated documentation (if applicable) - [ ] Updated [Copilot instructions](.github/copilot-instructions.md) (if build, architecture, or conventions changed) ## 📋 Issue Type <!-- Select the type that best describes this PR --> - [ ] Bug fix - [ ] Feature - [ ] Task ###### Microsoft Reviewers: [Open in CodeFlow](https://microsoft.github.io/open-pr/?codeflow=https://github.com/microsoft/winget-cli/pull/6336)
Undo normalization of external files (#6336) ## 📖 Description <!-- Describe what this PR changes, why, and any limitations. --> #6267 and #6276 normalized the line endings across the repo. This included the external PS modules, some of which are signed files. The normalization broke the signatures in some of those files. This PR undoes the normalization for those files and restores them to the proper orden. ## 🔗 References <!-- Link related issues, PRs, or docs. Use "Resolves #1234" to auto-close. --> ## 🔍 Validation <!-- How did you test? List manual steps or note automated test coverage. --> ## ✅ Checklist <!-- Place an "x" between the brackets to check an item. e.g: [x] --> - [ ] Signed the [Contributor License Agreement](https://cla.opensource.microsoft.com) - [ ] Linked to an issue - [ ] Updated [Release Notes](../doc/ReleaseNotes.md) (if applicable) - [ ] Updated documentation (if applicable) - [ ] Updated [Copilot instructions](.github/copilot-instructions.md) (if build, architecture, or conventions changed) ## 📋 Issue Type <!-- Select the type that best describes this PR --> - [ ] Bug fix - [ ] Feature - [ ] Task ###### Microsoft Reviewers: [Open in CodeFlow](https://microsoft.github.io/open-pr/?codeflow=https://github.com/microsoft/winget-cli/pull/6336)
Fix configuration elevation validation for standard flow (1.29) (#6318) CP of #6307 to 1.29 Technically it wasn't a CP because of the line ending renormalization. You can filter that out using the following method: - Create your CP branch off the target - `git show <HASH> -w > temp.patch` - `git apply -p1 --ignore-whitespace temp.patch` - Or you can combine it into one `git show <HASH> -w | git apply -p1 --ignore-whitespace -` - Commit the changes ## 📖 Description As described in the issue, when using standard configuration flows that have elevated units, the elevated process would not operate properly. This came down to a case sensitive bool conversion that would cause the validation flow to not properly read from the alias file.
Apply latest loc patch (#6262) ###### Microsoft Reviewers: [Open in CodeFlow](https://microsoft.github.io/open-pr/?codeflow=https://github.com/microsoft/winget-cli/pull/6262)
Optimize packaged temp ACL handling without weakening ACL repairs (#6171 ) This change reduces the severe slowdown caused by recursive ACL propagation on packaged temp paths while preserving the security behavior that repairs improperly secured directories before use. The fix keeps the existing fail-closed model, but avoids calling `ApplyACL()` when the target directory is already in the exact secure state winget expects.
Improved manifest validations for MSI and Windows Feature names (#6170) CP of #6169 onto main branch. ## Change Adds some additional validation for MSI switches and Windows Feature names: 1. MSI switches are checked during full manifest validation in the same way that they are checked when we attempt to use the MSI APIs rather than msiexec. The API is used for fully all silent installs of MSIs, so we now ensure that those will work (6 total manifests in winget-pkgs were found that needed fixes). 2. Windows Feature names in dependencies are validated to be { alphanumeric, `-`, `_` }. This is done both during full manifest validation and at runtime. A PowerShell script (tools/ManifestValidation/Invoke-ManifestValidation.ps1) is added that will run `wingetdev validate` against a directory recursively and generate a report. There is support for resuming in the middle of the run. This would probably perform much better if it were updated to use the WinGetUtil API, but that can be a future project.
PreviousNext