📦 WinProgramSuite — Complete Windows Package Management System
Latest Update: 10 July 2026 | WinUpdate startup fix
This changelog covers WinProgramManager and WinUpdate, the components of WinProgramSuite.
For automatic update features, see WinUpdate documentation.
WinProgramSuite Version 2026.07.10.16
WinUpdate startup elevation fix (10 July 2026):
- WinUpdate no longer requests UAC at startup: Because the executable is named
WinUpdate.exe, Windows' Installer Detection heuristic automatically demanded administrator elevation at launch. Windows silently blocks elevation-requiring apps from the per-user Startup folder, so the app never started with Windows and never appeared in the system tray.
- Embedded application manifest (asInvoker): Added
winupdate.manifest (referenced from winupdate.rc) declaring requestedExecutionLevel level="asInvoker". This disables the heuristic, so WinUpdate now launches at normal privilege from the Startup shortcut and appears in the system tray from Windows startup.
- Elevation only when installing: The single UAC prompt now appears only when you press Update now, elevating
winget_helper.exe for the duration of the actual installation — exactly where administrator rights are required.
WinProgramSuite Version 2026.03.26.07
Bug fixes & cleanup (26 March 2026):
- WinUpdate — Norwegian cancel button fix: The skip/unskip confirmation dialog showed “OK” instead of “Avbryt” for the cancel button in the Norwegian (Bokmål) locale. Fixed
btn_cancel in nb_NO.txt.
- WinProgramManager — removed first-run DB migration: The runtime code that moved
WinProgramManager.db from the install folder to C:\ProgramData\WinProgramManager\ ran without administrator rights, causing an error message on first launch. The migration code has been removed from db_path_utils.h, main.cpp, updater_gui.cpp, and updater_main.cpp. The installer now places the database directly in the correct location.
WinProgramManager Version 2026.02.21.07
Shared Database Location (21 February 2026):
- Centralized Database Storage: Database now stored in
C:\ProgramData\WinProgramManager\WinProgramManager.db instead of per-user installation directory
- Multi-User Support: All users on the system now share the same package database and metadata, ensuring consistency across user accounts
- Reduced Disk Usage: Eliminates duplicate database copies for each user, saving disk space on multi-user systems
- Automatic Migration: Application automatically creates the ProgramData directory and migrates to the new location on first run
- System-Wide Installation: Better alignment with Windows best practices for application data shared across all users
WinProgramManager Version 2026.02.19.10 — Update 1
Complete i18n & Settings Scheduler (19 February 2026):
- Complete Settings Internationalization: All 15 settings dialog strings now fully translated to English, Norwegian, and Swedish - settings_btn, settings_title, settings_run_updater_btn, settings_scheduler_enable, settings_scheduler_interval_days_label, settings_scheduler_custom_days_label, settings_scheduler_first_run_label, settings_scheduler_run_if_fail_label, settings_use_button, settings_ok_button, settings_cancel_button, settings_working_message, settings_days_out_of_range, settings_days_invalid_integer, settings_failed_launch_updater
- Norwegian Display: Settings dialog shows "Innstillinger", "Aktiver planlagte oppdateringer", "Intervall (dager):", "Tidspunkt på dagen:", "Bruk", "OK", "Avbryt"
- Swedish Display: Settings dialog shows "Inställningar", "Aktivera schemalagda uppdateringar", "Intervall (dagar):", "Tidpunkt på dagen:", "Använd", "OK", "Avbryt"
- Universal Task Scheduler Parsing: Task scheduler output now parsed language-independently, extracting day intervals (1-365) regardless of Windows display language (English, Norwegian, Chinese, Japanese, Russian, etc.)
- Pattern-Based Extraction: Parser uses intelligent number extraction with date/time filtering - works with "Every 5 day(s)", "hver 5 dag", "每 5 天", etc.
- Checkbox State Fix: Settings dialog checkbox correctly reflects scheduler state by checking
intervalDays > 0 instead of multiple fallback conditions
- Custom Days Validation: Input field now validates integer-only input with range checking (1-365 days) and clear localized error messages
- Extended Interval Support: Custom intervals up to 365 days for annual/semi-annual update schedules (previously limited to 30 days)
- Script Timeout Protection:
restore_missing_packages.ps1 now has 15-second timeout for winget queries to prevent indefinite hanging on malformed package IDs
- Input Quality: Trims whitespace, validates whole numbers only, rejects decimals/text/special characters
WinProgramManager Version 2026.02.11.01 — Update 19
Stability & installer fixes (11 February 2026):
- Installed filter: Made the Installed filter toggle instantaneous by loading package IDs from the local database (no blocking winget query)
- Reinstall dialog: Fixed missing button text by restoring the `close` locale key and adjusting owner-drawn button rendering
- Installer UI: Added an extra newline after the "querying winget" status message for improved readability
- Focus handling: Main window is now brought to the front when the install/reinstall dialog closes
- Database cleanup: Removed stale entries from `installed_apps` to correct incorrect installed counts
WinProgramManager Version 2026.02.09.01 — Update 18
Search Dialog Polish & Critical Fixes (9 February 2026):
- Search Dialog Internationalization: Added 15 locale keys (search_dialog_title, search_in_categories, search_options, etc.) translated to English, Norwegian, and Swedish
- Search Dialog Visual Overhaul: White background (RGB 255,255,255), 11pt Segoe UI font, owner-drawn buttons matching main window styling
- Two-Column Layout: Reorganized radio buttons into efficient 50/50 split - left column (Case Insensitive, Contains, Use Regex, Search All), right column (Case Sensitive, Exact Match, Refine Previous Results)
- Dialog Unit Conversion: Search dialog buttons properly sized at 60x14 DLU (≈88x30 pixels for 11pt font), matching main window button proportions
WinProgramManager Version 2026.02.13.01 — Update 20
First-run scheduler & configuration marker (13 February 2026):
- First-run scheduler: On first run the app will create a weekly Task Scheduler job named WinProgramUpdaterWeekly that runs
WinProgramUpdaterGUI.exe --hidden for automated weekly updates.
- Configuration marker: A small INI is written to
%APPDATA%\WinProgramManager\WinProgramManager.ini to mark first-run completion. The INI stores Settings/Language (default en_GB) and Settings/UpdaterTaskCreated (1 on success, 0 on failure).
- One-time flow: If the INI is present the app will not try to re-create the scheduled task. Delete the INI to force the first-run logic again.
- Installation Status Bug Fix: Fixed critical bug where installed apps showed "Install" instead of "Reinstall/Uninstall" in details dialog - now checks i.package_id column from LEFT JOIN instead of installed_version (which can be empty string)
- Confirmation Dialog Improvements: Added white background, blue question mark icon (IDI_QUESTION), wider buttons (75 DLU ≈110px), proper button icons
- Simplified Unicode Icons: Changed from emoji to standard Unicode - ▼ Install (down triangle), ⟲ Reinstall (circular arrow), ⨳ Uninstall (bold X), ✖ Cancel
- Missing Locale Strings: Added confirm_install_title and confirm_install_msg to all language files (was causing blank confirmation dialogs for install action)
- Button Width Adjustments: Main window buttons widened - Installed: 100→120px, Refresh: 180→220px to accommodate icons without text truncation
- Complete Button Styling: All confirmation and app details dialog buttons now use RGB(10,57,129) base, RGB(25,95,210) hover, RGB(6,34,80) pressed colors with 19pt bold font
- Code Consistency: WM_DRAWITEM handlers, button subclassing, and hover tracking now identical across main window, search dialog, confirmation dialog, and app details dialog
WinProgramManager Version 2026.02.08.02 — Update 17
Design/Layout/Look & Feel Complete (8 February 2026):
- Custom Quit Dialog: Professional quit confirmation with custom-drawn question mark icon (IDI_QUESTION) replacing standard MessageBox
- Blue Button Theme: Quit dialog Yes/No buttons match About button color (RGB 10,57,129) for consistent visual identity
- Optimal Sizing: Compact 260x75 dialog with 50x18 buttons and 15pt bold font for perfect readability
- Unified Button Implementation: App details buttons (Install/Reinstall/Uninstall/Close) now use identical GWLP_USERDATA hover tracking as About button
- Consistent Color Scheme: Install (green RGB 40,180,40), Uninstall (red RGB 180,40,40), Reinstall/Close (blue RGB 10,57,129) with proper hover states
- Focus Management: Description field no longer auto-selected on dialog open - focus set to Close button for better UX
- Code Consistency: All dialogs now use same button subclassing pattern with per-button state tracking via GWLP_USERDATA
- Professional Polish: System icon integration, proper mouse tracking (TME_LEAVE), and bold font usage across all dialogs
- Design Milestone: Complete visual identity established - all dialogs share consistent white backgrounds, owner-drawn buttons, and professional styling
WinProgramManager Version 2026.02.08.01 — Update 16
Professional App Details Dialog (8 February 2026):
- Modern Owner-Drawn Buttons: Custom-styled buttons with color themes - Install (green), Uninstall (red), Reinstall/Close (blue)
- Interactive Hover Effects: Button subclassing with TrackMouseEvent for lighter colors on hover, providing visual feedback
- Pure White Background: Consistent RGB(255,255,255) background matching spinner and main window styling
- Complete Internationalization: All labels fully localized - Publisher, Version, Package ID, Source, Status, Description, Technical Information, Homepage, License, Installer Type, Architecture, Tags in 3 languages
- Value String Localization: Status values (Installed/Not Installed), placeholder texts (Unknown, Not available, No tags, No description) translated
- Fixed Close Button: Blue-themed Close button with proper localized text ("Close"/"Lukk"/"Stäng")
- Improved User Experience: Description field no longer auto-selected on dialog open
- Consistent Text Styling: Black text (RGB 0,0,0) on white backgrounds across all controls via WM_CTLCOLORSTATIC, WM_CTLCOLOREDIT, WM_CTLCOLORDLG
- Locale System Extension: Added 19 new locale keys (app_details_title, publisher_label, version_label, etc.) with LoadLocale parsing
WinProgramManager Version 2026.02.07.08 — Update 15
Complete Internationalization & Quit System (7 February 2026):
- Complete i18n Implementation: 90+ locale strings covering all UI elements, error messages, and dialogs in 3 languages
- Professional Quit System: Quit confirmation with "Yes/No" buttons for all exit methods (X button, quit button, Ctrl+W)
- Quit Button: Red-themed button at far left with translations: "Quit" (English), "Avslutt" (Norwegian), "Avsluta" (Swedish)
- Ctrl+W Keyboard Shortcut: Windows accelerator table ensures Ctrl+W works globally regardless of focus
- Smart Child Dialog Handling: Child dialogs (app details) close without confirmation, main window requires confirmation
- Config File Persistence: Language preference saved to %APPDATA%\WinProgramManager\WinProgramManager.ini
- UTF-8 Encoding Fix: Fixed locale file reading with MultiByteToWideChar (CP_UTF8) for proper Norwegian/Swedish characters
- Button Internationalization: Search, End Search, and Installed buttons now fully translated (removed hardcoded strings)
- Localized Error Messages: 15+ error/warning messages now available in all 3 languages
- quit_handler Module: Centralized quit logic in quit_handler.cpp/.h for better code organization
- Title Fix: Removed space from "WinProgram Manager" → "WinProgramManager" in spinner and dialogs
- Norwegian Language Fix: Corrected "Behandler database" → "Behandler databasen" (definite form)
WinProgramManager Version 2026.02.07.08 — Update 14
Suite Version Alignment (7 February 2026):
- Unified Versioning: WinProgramManager and WinUpdate now share version 2026.02.07.08 for suite consistency
- WinUpdate Scanner Visibility: Scanner popup now follows main window when it gains focus (WM_ACTIVATE handler)
- Improved User Experience: No need to minimize other apps to see scan progress - popup automatically appears on top
- Suite Identity: All components display the same version number and publish date (07.02.2026)
Version 2026.01.19.10
New in this version (19 January 2026, 10:00 GMT+1):
- Microsoft Store Source Agreement: Added --accept-source-agreements flag to all winget upgrade commands to automatically accept geographic region data requirements for msstore source
- Non-Interactive winget Execution: Eliminated interactive prompts during automatic update checks by accepting source agreements in advance
- Improved Reliability: All winget commands now execute without requiring user interaction for source agreements
WinUpdate Version 2026.01.11.18
New in this version (11 January 2026, 18:00 GMT+1):
- Dialog Icon Consistency: All application dialogs now display the WinUpdate icon in the title bar for consistent branding
- Color-Changing Download Indicator: Bouncing ball animation changes from blue (preparing/installing) to green (downloading) for clear visual feedback during package downloads
- Error Message Formatting: Fixed text formatting in error summaries to ensure Norwegian and English text appear on separate lines
- Main Window Restoration: Improved main window bring-to-front behavior after installation dialog closes
Version 2026.01.09
New in this version (09 January 2026, 18:00 GMT+1):
- UI Alignment Refinement: Adjusted Log button vertical positioning for improved visual alignment with other buttons
Version 2026.01.08
New in this version (08 January 2026, 20:00 GMT+1):
- Windows Defender False Positive Mitigation: Added security compiler flags (ASLR, DEP, high-entropy ASLR) to reduce false positive detections
- Enhanced Executable Metadata: Comprehensive version information with company name, copyright, and product details embedded in executable
- Fixed English Unskip Button: Corrected variable name display issue in English locale (en_GB.txt)
- Descriptive Polling Interval Text: English and Norwegian dropdown now match Swedish clarity: "Scan for updates every X hours"
- False Positive Submission Scripts: Added helper scripts for adding Windows Defender exclusions and submitting false positive reports to Microsoft
- Comprehensive Security Documentation: Created DEFENDER_SOLUTIONS.md with detailed instructions for handling antivirus false positives
- Installation Dialog Repair: Created winget_helper.exe that captures all winget output including progress bars, download percentages, and status information in real-time
- Single UAC Elevation: One UAC prompt installs all selected packages via helper architecture (restored from previous working implementation)
- Installation Progress Tracking: Progress bar updates from 0% to 100% as packages are processed, status text shows current package name
- Installation Status Workflow: Clear status transitions: "Preparing..." → package names → "Installation complete!" with progress percentage
- "System Updated" Dialog Fix: Now correctly shows when all available updates are skipped (counts non-skipped packages instead of total)
- System Tray Visibility Fix: "Your system is updated" dialog now appears when window is visible, regardless of system tray mode
- Version Update: Application version updated to 2026.01.08.08
Version 2026.01.07
New in this version (07 January 2026, 12:00 GMT+1):
- Swedish Language Support: Complete Swedish (sv_SE) localization with 106 translation keys added to locale/sv_SE.txt
- Three-Language Support: Application now supports English (GB), Norwegian (Bokmål), and Swedish with proper language selection in Config dialog
- Natural Swedish Terminology: User-preferred Swedish terms: "Skippa/Oskippa" for Skip/Unskip, "Ladda om" for Refresh, "Avboka" for Cancel
- UI Clarity Improvements: Changed Refresh button from "Uppdatera" to "Ladda om" in Swedish to differentiate from "Uppdatera nu" (Update Now) button
- Descriptive Config Text: Expanded Swedish polling interval text from "Var 2e timme" to "Sök efter uppdateringar varje 2e timme" for better clarity
- Unified Settings Architecture: Consolidated to single settings file (%APPDATA%\WinUpdate\wup_settings.ini) with proper [language] section handling
- Full Locale Code Support: All components now handle full ISO locale codes (sv_SE, nb_NO, en_GB) instead of short codes
- Centralized Translation Loading: Unified all translation loading to locale/ folder (was split between i18n/ and locale/)
- Complete Translation Coverage: All dialogs, tooltips, buttons, and status messages now properly translated in all three languages
- Settings File Cleanup: Removed obsolete wup_settings.txt from project root, all settings now in APPDATA location
Version 2026.01.04.A
New in this version (04 January 2026, 22:00 GMT+1):
- Install Dialog with Animation: New modal dialog for package installation with animated progress indicator (1px moving dot, 1ms timer)
- Select All Button: Fixed button functionality - changed from checkbox (ID 2001) to pushbutton (ID 2099) to avoid control conflicts
- UAC Elevation with PowerShell: Package installation now uses PowerShell instead of batch files for single UAC prompt and cleaner output
- Startup Shortcut Management: Automatic verification and correction of Windows startup shortcuts based on configuration mode
- Startup Verification on Launch: Application checks startup shortcut matches configuration mode and fixes discrepancies automatically
- Config Dialog Layout Improvements: Widened dialog to 600px with consistent 10px button spacing for better visual layout
- "Add to systray now" Button Positioning: Moved button to bottom row alongside other buttons for cleaner UI
- Mode-Specific Shortcut Handling: Mode 0 (Manual) removes shortcut, Mode 1 (Startup) creates with --hidden, Mode 2 (SysTray) creates with --systray
- Install Dialog i18n: Added translations for "no_packages_selected" and "install_done" messages in English and Norwegian
- Temporary File Cleanup: Guaranteed cleanup of installation output files in all execution paths
- Done Button Sizing: Install dialog Done button now 150px wide positioned at H-70 for proper visibility
- Apply/OK Button Consistency: Both buttons now use VerifyStartupShortcut() function for reliable shortcut management
Version 2026.01.04
New in this version (04 January 2026, 18:30 GMT+1):
- System Tray Mode 2 Implementation: Complete system tray functionality with configurable automatic scanning
- Three Configuration Modes: Manual mode (default), Hidden scan at startup, or System tray with periodic polling
- Right-Click Context Menu: ⚡ Scan now!, 🪟 Open main window, ❌ Exit options with emoji icons
- Dynamic Tooltip: Displays "WinUpdate - Next scan: HH:MM" showing the actual clock time of next scheduled scan
- Smart Balloon Notifications: Shows update count when updates found, "You are updated!" only for manual scans (automatic scans are silent when no updates)
- "Add to systray now" Button: Instantly adds app to system tray from config dialog (only visible when Mode 2 selected)
- Automatic Startup Shortcuts: Mode 1 creates shortcut with --hidden parameter, Mode 2 with --systray parameter
- Single Instance Handling: Starting app again activates existing window instead of creating duplicate instance
- Window Hide to Tray: Clicking X in tray mode hides window instead of closing application
- Tooltip Updates: Countdown refreshes every 60 seconds to keep time accurate
- NIF_SHOWTIP Flag: Required for NOTIFYICON_VERSION_4 to properly display tooltips on Windows
- closetray.exe Utility: Standalone CLI tool to cleanly close system tray instance
Version 2026.01.03
New in this version (03 January 2026, 12:00 GMT+1):
- Config Dialog: Added configuration dialog for system tray settings (preparation for future tray integration)
- Custom Tooltips: Implemented custom tooltip system for About button using same architecture as Skip column tooltips
- Complete i18n System: Migrated from en_US/no to ISO-standard en_GB/nb_NO locale codes throughout the application
- Full Translation Coverage: Added translations for all UI elements including Config dialog, tooltips, and status messages
- Norwegian Localization Fixes: Fixed "Uskippe" prefix issue, corrected About button translation to "Om"
- Button Spacing: Precise 2-pixel gap between Config and About buttons (Config at x=468, About at x=590)
- Config Dialog UX: Checkbox enables/disables dropdown; status updates only after Apply/OK; Cancel properly discards changes
Version 2026.01.02
New in this version (02 January 2026, 10:30 GMT+1):
- Fixed Application Freeze After Skip Confirmation: Changed synchronous SendMessageW calls to asynchronous PostMessageW to prevent deadlock
- Fixed Unskip Dialog Freeze: Removed slow winget list call (30-second timeout) and replaced with in-memory parsing of cached winget output
- Fixed Display Name Truncation: Resolved issue where skip dialog and unskip list showed abbreviated names like "VLC" instead of full names like "VLC media player"
- Fixed INI Key Matching: Added whitespace trimming for INI keys to correctly match parsed package IDs that had trailing spaces
- In-Memory Display Name Cache: Introduced g_id_to_displayname map with mutex protection to store full package names in memory
- Optimized Unskip Dialog Performance: Now opens instantly by parsing in-memory data instead of spawning external processes
- Enhanced Display Name Resolution: Cascading lookup strategy: memory cache → in-memory winget output → g_packages → prettified fallback
Version 2025.12.20
New in this version (20 December 2025, 15:00 GMT+1):
- Core Functionality: Initial release with basic winget wrapper capabilities
- Skip Package Updates: Ability to skip specific package versions
- ListView Display: Shows available updates in a sortable list
- Settings Persistence: Saves skipped packages to INI file in %APPDATA%\WinUpdate
- Multi-Language Support: English and Norwegian translations via INI files
- About Dialog: Displays version information and license details
- Hyperlink Controls: Custom ListView subclassing for clickable skip links
- Resource Management: Icon and resource file integration
- Architecture: Built with C++ and Win32 API (native Windows application), CMake build system with MinGW GCC 15.2.0
- Modular Code Structure: Separate files for parsing, logging, hyperlinks, dialogs
- Thread Safety: Mutex-protected global state for thread-safe operations
Release status: Ready for publish — release will be performed tomorrow.
Committed 11 February 2026 — codebase prepared for publishing.