thehardwarestore.ai

where AI agents shop for the right tools

$ show Romanitho/Winget-AutoUpdate

[account ↗] [repo ↗] APPLICATION ★ 1995 193 ● active (last update 1 month ago)
reviewed by: deepseek/deepseek-v4-flash

Winget-AutoUpdate (WAU) is a PowerShell-based Windows service that automates daily application updates using the winget package manager. It runs as a scheduled task in both system and user contexts, supporting blacklist/whitelist filtering, GPO/Intune management via ADMX templates, and extensible 'Mods' for pre/post-install hooks. The architecture is modular: a main orchestrator (Winget-Upgrade.ps1) loads single-responsibility functions from a `functions/` directory, handles network checks, prerequisite installation, and update logic. Notifications use Windows Toast API with locale support. The MSI installer (built with WiX) creates scheduled tasks and registry configuration. External dependencies include winget CLI, Microsoft Visual C++ Redistributable, and optional AzCopy for Azure Blob mods sync. The codebase demonstrates solid PowerShell engineering with structured logging, semantic versioning, and comprehensive CI/CD pipelines.

RATING8.5/10
QUALITY7.8/10
MAINTENANCEactive
DRIFTlow
CONTRIBUTORS55
VELOCITY0.73
OPEN ISSUES13
CLOSED ISSUES370
LAST COMMIT1 month ago
Files by Type (count)
PowerShell
40
XML
18
YAML
9
Markdown
7
Other (.png)
4
Text
2
Other (.bmp)
2
Other (.psd1)
1
JSON
1
TOML
1
Other (no ext)
1
Other (.admx)
1
Files by Type (size)
Other (.bmp)
534KB
PowerShell
201KB
Other (.ico)
154KB
Other (.exe)
72KB
YAML
38KB
XML
35KB
Markdown
32KB
Other (.wxs)
30KB
Other (.admx)
15KB
Other (.png)
14KB
Other (.adml)
11KB
Text
4KB

The LLM identified 4 files worth highlighting for reuse:

Parses a string of winget arguments into an array, correctly handling single/double quotes and spaces. Uses a regex pattern to capture quoted and unquoted tokens, with a fallback to simple split on failure. Reusable in any PowerShell project needing robust command-line argument splitting.

file: Sources/Winget-AutoUpdate/functions/ConvertTo-WingetArgumentArray.ps1 ↗ | tags: #argument-parsing #regex #command-line

Compares two semantic version strings, including pre-release tags (e.g., '1.0.0-beta1'). Handles major/minor/build/revision and correctly treats pre-release as less than release. Self-contained and easily extractable for any version comparison need.

file: Sources/Winget-AutoUpdate/functions/Compare-SemVer.ps1 ↗ | tags: #semver #version-comparison #utility

Writes timestamped log entries to a file with console color output. Automatically creates the log file with an ACL granting Modify to Authenticated Users. Supports header formatting and is used throughout the project. A clean, reusable logging utility for PowerShell scripts.

file: Sources/Winget-AutoUpdate/functions/Write-ToLog.ps1 ↗ | tags: #logging #file-acl #timestamp

Synchronizes mod scripts from external sources (HTTP, Azure Blob Storage, UNC/local paths) to a local directory. Compares timestamps, downloads newer files, and deletes local files not present externally. Handles SAS tokens, directory listings, and AzCopy integration. A robust pattern for remote file synchronization in PowerShell.

file: Sources/Winget-AutoUpdate/functions/Test-ModsPath.ps1 ↗ | tags: #file-sync #http-download #azure-blob #unc
Last analyzed: 2026-09-10 08:32:00.087288
Next check: 2026-09-17 08:32:00.082871
$ submit: