KEMBAR78
Comparing v1.12.170-preview...v1.12.210-preview · microsoft/winget-cli · GitHub
Skip to content
Permalink

Comparing changes

Choose two branches to see what’s changed or to start a new pull request. If you need to, you can also or learn more about diff comparisons.

Open a pull request

Create a new pull request by comparing changes across two branches. If you need to, you can also . Learn more about diff comparisons here.
base repository: microsoft/winget-cli
Failed to load repositories. Confirm that selected base ref is valid, then try again.
Loading
base: v1.12.170-preview
Choose a base ref
...
head repository: microsoft/winget-cli
Failed to load repositories. Confirm that selected head ref is valid, then try again.
Loading
compare: v1.12.210-preview
Choose a head ref
  • 7 commits
  • 92 files changed
  • 2 contributors

Commits on Aug 25, 2025

  1. Improve COM static store usage (#5680)

    ## Issue
    The use of the COM static store was causing crashes on long lived
    processes because the implementation of `DllCanUnloadNow` did not count
    those objects, nor did it clean them up. This led to our module being
    unloaded, then when it was reloaded, the recreation of the static store
    object would invoke the deletion of the old one, which was pointing to
    the old, unloaded module location.
    
    ## Design Considerations
    WindowsPackageManager.dll serves many purposes, making the lifetime of
    statics complex.
    - It serves as "in-proc" for the CLI
    - It is the core implementation for the in-proc COM
    - It is the core implementation for the OOP COM
    
    In order to support in-proc COM, we must put static lifetime COM objects
    in the static store. But in order to support unloading, we must also
    clean them up. Additionally, we don't want to claim to be in use if the
    only active objects are our statics (which are typically just event
    handlers and their owners).
    
    We already use the WRL object count to track OOP COM server lifetime,
    and similarly we use it to implement `DllCanUnloadNow`. This is the
    count externally owned objects; those that the client has requested
    directly or indirectly.
    
    ## Change
    The major change is to remove all of our static store objects when WRL
    says we have no more externally owned. This is achieved by tracking the
    names of the objects that we insert and attempting to remove them when
    appropriate.
    
    The original change to use the static store was templatized and reused
    to hold the termination signal handler.
    
    ## Validation
    The new test uses the CLI to validate that the implementation for
    `DllCanUnloadNow` (`WindowsPackageManagerInProcModuleTerminate`) detects
    the unload state and properly destroys the relevant objects. This is
    done by checking that there are internal objects allocated before the
    call, but none after.
    JohnMcPMS authored Aug 25, 2025
    Configuration menu
    Copy the full SHA
    dabd473 View commit details
    Browse the repository at this point in the history

Commits on Aug 27, 2025

  1. Update schema to 1.12 with Font InstallerType (#5687)

    * Updates schema to 1.12 and adds type "font" as a valid InstallerType
    and NestedInstallerType in the schema.
    * Adds InstallerType Font to the manifest and associated Enum
    conversions.
    * Updated some of the NestedInstaller validation that had assumed
    Portable type as the only type that could have multiple installer files
    (fonts can also have many fonts in a package).
    * Added validation for 1.12 fonts in the manifest and associated tests
    for the schema version.
    
    This PR does not add any functional support for Fonts, only the
    validation and schema update so the new schema can be used and is valid
    in the related WinGet tooling.
    
    Tested:
    * Passed the AppInstallerCLITests with [ManifestValidation] and ensured
    a clean result.
    * Added new tests for the v 1.12 manifest updated with the new installer
    types in the test installer manifest to ensure Fonts are correctly
    passing the validation.
    
    Closes #5686 
    
    <!-- To check a checkbox place an "x" between the brackets. e.g: [x] -->
    
    - [x] I have signed the [Contributor License
    Agreement](https://cla.opensource.microsoft.com/microsoft/winget-pkgs).
    - [x] I have updated the [Release Notes](../doc/ReleaseNotes.md).
    - [x] This pull request is related to an issue.
    
    -----
    dkbennett authored Aug 27, 2025
    Configuration menu
    Copy the full SHA
    9bb4aa4 View commit details
    Browse the repository at this point in the history
  2. Download MS Store package for target OS (#5689)

    Fixes #4996 
    
    ## Change
    Adds the ability to specify the target OS version for downloads from the
    Microsoft Store. This is achieved by filtering the set of applicable
    platforms in `GetSfsPackageFileSupportedPlatforms` further than the
    existing platform targeting. Now they must also have a minimum specified
    OS version >= the target OS version.
    
    `winget.exe download` has a new parameter `--os-version`. This is a
    UINT64 version (4 part version with 2^16-1 maximum value for each part)
    that should be given as the target OS version.
    
    COM `DownloadOptions` has a new property `TargetOSVersion`, which is a
    string of the same format as above.
    
    PowerShell `Export-WinGetPackage` has a new parameter
    `-TargetOSVersion`, which is also a string of the same format.
    
    Also added the previously implemented options to skip the license
    download (`--skip-license`) and the target platform (`--platform`) to
    COM (`SkipMicrosoftStoreLicense` and `Platform`) and PowerShell
    (`-SkipMicrosoftStoreLicense` and `-Platform`).
    JohnMcPMS authored Aug 27, 2025
    Configuration menu
    Copy the full SHA
    bc7a073 View commit details
    Browse the repository at this point in the history
  3. Fixes for older OSes (#5691)

    Fixes #5259 
    
    ## Change
    Register the configuration class names in the manifest to support proper
    activation (not C++/WinRT fallback behavior).
    
    Change the configuration link inputs to use the older `icu*.dll` files
    rather than the one that comes in the umbrella of `onecoreuap.lib`
    [`icu.lib`].
    JohnMcPMS authored Aug 27, 2025
    Configuration menu
    Copy the full SHA
    2a5443a View commit details
    Browse the repository at this point in the history

Commits on Aug 28, 2025

  1. Add RestSource and tests for Manifest v1.12 (#5695)

    Closes #5694 
    
    Updates the RestSource and interface to support v1.12 Manifest schema.
    
    * Added Manifest 1.12 Schema to the Rest source and support for the new
    installer type.
    * Added tests for v1.12 rest source.
    * Added unit tests for WinGetUtilInterop for the v1.12 merged manifest
    and validating the new installertype.
    
    Tested:
    * WinGetUtilInterop Unit tests passed, verified in debugger that the new
    v1.12 manifest and manifest properties were being tested and validated.
    * AppInstallerCLITests for [RestSource] and the new [Interface_1_12]
    both pass.
    
    <!-- To check a checkbox place an "x" between the brackets. e.g: [x] -->
    (This is part of schema update for 1.12 so nothing new to add to release
    notes.)
    
    - [x] I have signed the [Contributor License
    Agreement](https://cla.opensource.microsoft.com/microsoft/winget-pkgs).
    - [x] I have updated the [Release Notes](../doc/ReleaseNotes.md).
    - [x] This pull request is related to an issue.
    
    -----
    dkbennett authored Aug 28, 2025
    Configuration menu
    Copy the full SHA
    ddb86d4 View commit details
    Browse the repository at this point in the history

Commits on Aug 30, 2025

  1. Improve slow searches involving installed items (#5701)

    Fixes #5629 
    (and probably quite a few more list/upgrade some-query-provided
    performance related issues)
    
    While things could still be made better, the good case (where files were
    already cached locally) of the previous behavior trying to complete
    `winget list Micro` was taking 51 seconds. With this change, it takes 6
    seconds on the debug build. Given that there is intentionally little to
    no I/O and much of the CPU time is likely spent in our code, that should
    speed up more with the release.
    
    ## Issue
    The indexed `IPackage` implementation for v2 needed to acquire the
    intermediate manifest to provide the response for `GetVersionKeys`.
    Since this is used extensively to perform correlation between available
    packages and local items during a search, any available packages found
    by the query would then result in a download/disk read of the
    intermediate manifest.
    
    ## Change
    Introduces `IPackage::GetMultiProperty`, allowing code that just wanted
    to get all of these values across all versions to do so more
    efficiently. For the v2 index, this is how the data is already stored in
    the database. For the other `IPackage` implementations, the data was
    also present and is just aggregated from each version's output.
    JohnMcPMS authored Aug 30, 2025
    Configuration menu
    Copy the full SHA
    4c85f5b View commit details
    Browse the repository at this point in the history
  2. Shorter default installer log filename (#5705)

    ## Change
    Make `OutputTimePoint` more flexible by allowing arbitrary fields and
    behaviors to be requested via flags.
    
    Shorten the default installer log filename by removing the leading
    `WinGet-` and dropping the milliseconds. Some installers use the log
    file path as a base with no error handling to ensure a valid path is
    produced. Anything we can remove means more likely success.
    JohnMcPMS authored Aug 30, 2025
    Configuration menu
    Copy the full SHA
    f33b402 View commit details
    Browse the repository at this point in the history
Loading