winget_dart
Dart FFI bindings for WinGet (Windows Package Manager). Search, install, upgrade, and uninstall packages with async progress on x64 and ARM64.
0.4.0
17K downloads/mo
#2366 most downloaded on pub.dev
jwinarske/winget_dart
What this package is like to depend on
Last release 10 days ago
13 Aug 2026
Ships on a steady schedule
a new release about every 2 months
Nearly every release is documented
notes for 4 of 4 stable releases
Nothing withdrawn
no release was ever pulled
4 months old
4 releases · first in 2026
4 releases in the last 12 months
see the full history below
Release timeline
4 releases · Apr 2026 to Aug 2026Releases
latest 4-
0.4.013 Aug 2026Release notes
Open source →- Breaking: migrate the native build hook from
hooks1.x to 2.x (and
code_assetsto 1.2.x). hooks 2.x requires Dart >=3.10, so the SDK lower
bound rises from 3.6.0 — consumers on Dart 3.6–3.9 should stay on 0.3.x. The
hook's behaviour is unchanged (it still buildswinget_nc.dllvia CMake and
skips cleanly when its prerequisites are absent); the migration is a dependency
bump only. - Drop the
native_toolchain_cdependency: it was declared but never imported
(the hook drives CMake directly rather thanCBuilder).
Release notes
Open source →- Breaking: migrate the native build hook from
hooks1.x to 2.x (andcode_assetsto 1.2.x). hooks 2.x requires Dart >=3.10, so the SDK lower bound rises from 3.6.0 — consumers on Dart 3.6–3.9 should stay on 0.3.x. The hook's behaviour is unchanged (it still buildswinget_nc.dllvia CMake and skips cleanly when its prerequisites are absent); the migration is a dependency bump only. - Drop the
native_toolchain_cdependency: it was declared but never imported (the hook drives CMake directly rather thanCBuilder).
- Breaking: migrate the native build hook from
-
0.3.121 Jun 2026Release notes
Open source →Fixes
- Fix native DLL not found when run via
dart pub global activate/dart pub global run. The@Native/@DefaultAssetcode-assets approach only resolves when the hooks runner is active; globally activated packages skip it. Replaced with explicitDynamicLibrary.open()and a multi-strategy search path matching the pattern used bypackagekit_dart. - Add
resolveWingetNcPath()with fallback chain: programmatic override →WINGET_NC_LIBenv var →.dart_tool/lib/→%TEMP%\wg_nc_*build-hook output → next to executable → OS search path. - Export
setWingetLibraryPath()for consumers that vendor the DLL.
Testing
- Add 18 unit tests for
library_loader.dartcovering all resolution strategies, precedence ordering, arch filtering, and edge cases.
- Fix native DLL not found when run via
-
0.3.003 Apr 2026Release notes
Open source →Improvements
- Add dartdoc comments to all public API elements (models, exceptions,
WingetBridgeinterface, andWgClientmethods) - Add
example/example.dartfor pub.dev example tab - Shorten package description to meet pub.dev 60–180 character guideline
- Bump minimum SDK constraint to
>=3.6.0for build hook support
- Add dartdoc comments to all public API elements (models, exceptions,
-
0.2.002 Apr 2026Release notes
Open source →the hook/build.dart (Dart Build Hook) requires a minimum SDK constraint
of 3.6.0.joel.winarske [email protected]
Release notes
Open source →Features
- Unpackaged COM activation for non-MSIX (desktop/console) apps
- Microsoft.Management.Deployment interop DLL bundling for x64 and ARM64
- Flutter example app (
example/winget_catalog) with Fluent UI, Riverpod, and live WinGet integration (search, install, upgrade, uninstall, updates) - README badges for pub.dev, CI status, Codecov, and license
- Screenshot of Flutter example in README
CI & quality
- Codecov integration with
CODECOV_TOKEN,fail_ci_if_error, andcodecov.ymlfor server-side generated-file exclusion - Coverage threshold enforcement at 60% in CI
--report-on=liband generated-file filtering in lcov pipeline.pubignoreto exclude build artifacts and Flutter example from published package.gitignoreat project root- Exclude Flutter example from root
dart analyzescope - Unit test coverage improved from 89.6% to 97.2%: added tests for
retry backoff, negative connect handle, listCatalogs/simulateInstall errors,
cancel, streaming cancelled/error paths, model
toString()methods, andMessageDecoder.messageToStringunexpected type
Breaking changes
FakeWingetBridge.stubIsAvailableFnadded; internal_availablefield changed frombooltobool Function()(no public API impact)