Releases: EXLOUD/Windows-Update-Pauser
v2.0.1
Version 2.0.1 — Rendering and API Modernization
This release includes a major update of the application's graphics stack, transitioning to modern DirectX and DirectWrite APIs. The primary focus is performance, stability, correct DPI handling, and long-term code maintainability.
✨ New Features and Improvements
1. Rendering Pipeline Modernization (Direct2D / Direct3D)
- Fully removed the legacy
ID2D1HwndRenderTarget. - Implemented modern rendering through:
ID3D11Device- DXGI Flip Model (
IDXGISwapChain1,DXGI_SWAP_EFFECT_FLIP_DISCARD)
- Rendering is performed via
ID2D1DeviceContext6, unlocking the latest Direct2D capabilities. - Updated Direct2D factory to
ID2D1Factory7.
Flip Model provides:
- Lower frame latency
- Improved performance
- Reduced power consumption
- Better behavior on high-DPI systems
2. DirectWrite API Update
- Replaced the legacy
<dwrite.h>header with the modern<dwrite_3.h>. - Updated interfaces:
IDWriteFactory→IDWriteFactory7IDWriteTextFormat→IDWriteTextFormat3
- Laid the groundwork for modern typography support, including:
- Variable fonts
- Advanced font metadata handling
- Improved compatibility with Windows 10 / 11
🔧 Bug Fixes and Code Quality
1. Compiler Warning Resolution
- Refactored COM code:
- Switched to
IID_PPV_ARGS - Type-safe and idiomatic handling of COM interfaces
- Compliance with modern Microsoft and LLVM recommendations
- Switched to
🛠️ Build System
1. Build Script Updates
- Updated linker library set:
- Added
d3d11anddxgito support the new D3D11/DXGI pipeline.
- Added
- Completed transition to a pure LLVM toolchain (UCRT):
- Dropped
llvm-mingw - Using
clang++,lld,llvm-rc,llvm-strip - Better compliance with modern C++ standards and Windows SDK
- Dropped
Enabled:
- C++23
- LTO (ThinLTO)
- Static linking
- Linker optimizations (
/OPT:REF,/OPT:ICF)
2. Build Tools
- Ninja: 1.13.2
- CMake: 4.2.3
- LLVM: 22.1.0-rc2
📊 Build Artifacts (UCRT)
| Architecture | Size | MD5 | Target |
|---|---|---|---|
| x64 | 442 KB | DA84A1D594A5AA53A19739C02173193E |
Windows 10/11 x64 |
| x86 | 427 KB | FF6965767AD5455F8D9AE37717581398 |
32-bit systems |
| arm64 | 413 KB | CFDF95502C723C4996F4C1286C6F3D94 |
Windows on ARM devices |
v2.0.0
v2.0.0 — C++23 Modernization
🔥 Key Changes
C++23 Migration
- Full upgrade to C++23 standard (
std::format,std::expected,constexprinstead of macros) - All constants now use
inline constexprwith full type safety - Complete RAII refactoring — zero memory leaks (
ComPtr,UniqueHandle)
Fully Static Builds
- ❌ Removed
libwinpthread-1.dlldependency - ✅ Single portable EXE (620-800 KB)
- Static linking of
libc++,libc++abi,libunwind
📊 Build Artifacts (UCRT)
| Architecture | Size | SHA-1 | Target |
|---|---|---|---|
| x64 | 645 KB | 37E58AD7C23E5B3178512D1A032DA3DD2D879FB7 |
Windows 10/11 x64 |
| x86 | 751 KB | D7742E150FBFB4305490DA0EBCD54C3DE3AA0477 |
32-bit systems |
| arm64 | 623 KB | 5C24C07D08503DCA02CB6D446C3E50374D644531 |
Windows on ARM devices |
Requirements: Windows 10+ (build 10240), Administrator privileges
v1.4.1
📝 Changelog — Windows Update Pauser
v1.4.0 → v1.4.1
✅ New Features
- Added restart requirement after pausing or resuming updates.
The app now clearly indicates:
⚠️ Restart required to apply pause/⚠️ Restart required to resume updates. - Introduced a dedicated restart button (
🔄 Restart Now) that performs an immediate system reboot with proper privileges. - Implemented accurate OS version detection:
IsWindows10Only()IsWindows11()
Enables future OS-specific configuration logic.
🔒 Enhanced Security & Update Blocking
- Expanded list of disabled Windows services via registry:
WaaSMedicSvc(fully disabled withStart = 4and zeroedFailureActions)uhssvc(Windows 10 only)- Additional services (
wuauserv,DoSvc,UsoSvc) are prepared but commented out for safety.
- Added extra group policies under
HKLM\SOFTWARE\Policies:AllowAutoWindowsUpdateDownloadOverMeteredNetwork = 0— blocks updates on metered connections.NoAutoRebootWithLoggedOnUsers = 1— prevents automatic reboots when users are logged in.AllowMUUpdateService = 0— disables Microsoft Update.PreventDeviceMetadataFromNetwork = 1— blocks device metadata downloads.
- On resume, original
FailureActionsare restored forWaaSMedicSvcto ensure service stability.
🖥️ UI & UX Improvements
- Window is now more compact:
- Old:
455 × 245→ New:445 × 210 - All UI elements slightly reduced for better visual balance.
- Old:
- Improved button press animation:
Replaced downward shift with a 98% scale-down effect ("press-in" feel). - Added a subtle vertical gradient background for depth and modern aesthetics.
- Shadows and corner radii now scale with DPI, ensuring crisp visuals on high-resolution displays.
📏 High-DPI (Per-Monitor V2) Support
- Introduced global
g_app.dpiScalefor consistent scaling. - Uses
AdjustWindowRectExForDpi()to accurately compute window size including non-client area (borders, title bar). - Removed legacy
ApplyDpiTransform()— scaling is now handled at layout level, not render transform. - Window is automatically centered on the active monitor with correct DPI scaling.
🛠 Other Improvements
- Single-instance logic: Improved detection of existing window via
EnumWindowsfor greater reliability. - Status panel behavior:
- In "Restart required" mode, hover no longer changes the message (previously showed GitHub link).
- GitHub link is only shown when no restart is pending.
- Codebase is now more modular and maintainable, with dedicated functions for OS version, DPI, and color logic.
💡 Note: These changes make the application more reliable, clearer about system requirements, and visually polished, especially on high-DPI and Windows 11 systems.
🛠 Technical details
Compiler: llvm-mingw 20250924 with LLVM 21.1.2 - UCRT
Targets: x86_64-w64-windows-gnu, i686-w64-windows-gnu, aarch64-w64-windows-gnu
v1.4.0
Windows Update Pauser v1.4.0
What’s new:
- Switched from GDI to Direct2D
- Added the single-instance restriction (now you can open only single windows simultaneously).
Complete visual overhaul: Added animated diagonal gradients, glassmorphism effects, and a subtle animated "orb" background.
Introduced a glowing (glow) effect around the button on hover for a premium feel.
Re-sized window size (from 460x340 to 450x255) and enlarged corner radii for a softer, more modern look.
Used Antialiasing (D2D1_ANTIALIAS_MODE_PER_PRIMITIVE).
Updated color palette: Vibrant gradient buttons.
Updated typography: Now uses the Segoe UI Variable font family with different weights for improved readability and a modern aesthetic.
v1.3.18
// 1. НОВІ INCLUDES:
#include <tlhelp32.h>
// 2. НОВІ КОНСТАНТИ:
const int maxWaitTime = 2000; // 2 секунди максимум
const int checkInterval = 50; // Перевіряємо кожні 50ms
// 3. НОВІ ФУНКЦІЇ (повний код):
bool IsProcessRunning(const wchar_t* processName) {
bool found = false;
HANDLE hSnapshot = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);
if (hSnapshot != INVALID_HANDLE_VALUE) {
PROCESSENTRY32W pe32;
pe32.dwSize = sizeof(PROCESSENTRY32W);
if (Process32FirstW(hSnapshot, &pe32)) {
do {
if (_wcsicmp(pe32.szExeFile, processName) == 0) {
found = true;
break;
}
} while (Process32NextW(hSnapshot, &pe32));
}
CloseHandle(hSnapshot);
}
return found;
}
bool TerminateProcessByName(const wchar_t* processName) {
// [40+ рядків коду для завершення процесу]
}
// 4. НОВІ ОПЕРАЦІЇ В ApplyPause():
- SetRegString(L"PauseUpdatesStartTime", startTime)
- SetRegDWORD(updatePolicyKey, L"PausedFeatureStatus", 1)
- SetRegDWORD(updatePolicyKey, L"PausedQualityStatus", 1)
- SetRegString(updatePolicyKey, L"PausedQualityDate", endTime)
- SetRegString(updatePolicyKey, L"PausedFeatureDate", endTime)
- SetRegDWORD(L"SYSTEM\CurrentControlSet\Services\WaaSMedicSvc", L"Start", 4)
// 5. НОВІ ОПЕРАЦІЇ В RemovePause():
- DeleteRegValue(L"PauseUpdatesStartTime")
- SetRegDWORD(updatePolicyKey, L"PausedFeatureStatus", 0)
- SetRegDWORD(updatePolicyKey, L"PausedQualityStatus", 0)
- DeleteRegValue(updatePolicyKey, L"PausedQualityDate")
- DeleteRegValue(updatePolicyKey, L"PausedFeatureDate")
- SetRegDWORD(L"SYSTEM\CurrentControlSet\Services\WaaSMedicSvc", L"Start", 3)
⚙️ Технічні деталі
Compiler: LLVM-MinGW 20250910 (LLVM 21.1.1) - UCRT
Targets: x86_64-w64-windows-gnu, i686-w64-windows-gnu, aarch64-w64-windows-gnu
v1.3.17
🚀 Release v1.3.17 — "ARM64 & UCRT Era"
First native ARM64 support + Full UCRT compatibility. Built with LLVM-MinGW 20250910 (LLVM 21.1.1).
✅ Added
ARM64 Support: First-ever native build for Windows on ARM devices (Snapdragon X Elite, Surface Pro X, etc.).
UCRT Runtime Builds: All architectures (x86, x64, ARM64) now ship with both msvcrt and ucrt runtime variants.
One-Click Build Script: New build-release.bat automates compilation of all 9 binaries with proper folder structure.
🐛 Fixed
C2102 "lvalue required" Error: Fixed button hit-testing by storing GetButtonRect() result in a local variable before taking its address. (No more fighting the compiler over temporary objects!)
Missing Icons in x86/ARM64: Icons now embed correctly in all architectures by recompiling resources with --target=... for each platform. (No architecture left behind — even ARM64 gets its shiny icon now.)
Linker Error "undefined symbol: WinMain": Switched from wWinMain to WinMain(LPSTR) for MinGW compatibility.
Sure, we could’ve forced wWinMain with linker flags… but why fight the toolchain when a tiny change brings peace? 🕊️ (Also: aesthetic consistency.)
🔒 Enhanced Windows Update Lockdown
Added new registry keys to fully disable Windows Update:
SYSTEM\CurrentControlSet\Services\uhssvc → Start=4 (Disable Update Health Service)
SOFTWARE\Policies\Microsoft\Windows\WindowsUpdate → DisableWindowsUpdateAccess=1
SOFTWARE\Policies\Microsoft\Windows\WindowsUpdate\AU → NoAutoUpdate=1, UseWUServer=1
SOFTWARE\Microsoft\Windows\CurrentVersion\DriverSearching → SearchOrderConfig=0
⚙️ Technical Details
Compiler: LLVM-MinGW 20250910 (LLVM 21.1.1)
Targets: x86_64-w64-windows-gnu, i686-w64-windows-gnu, aarch64-w64-windows-gnu
v1.0.5
2025-07-26 – v1.0.5
Important :
Update pauser switched from 4750 to 100 years bcoz that more stable :D
New features :
Added inset and height parameters for every panel
– DrawCard, DrawButton and DrawStatusPanel now accept:
• inset – inner padding (px) on all sides;
• height – exact element height (px).
Example: DrawCard(hdc, rect, 20, 50);
UI improvements
All elements share the same 8 px corner-radius and shadow.
Border color unified under BORDER_COLOR.
Button hover effect: smooth 6 px grow on mouse-over.
Technical changes
Removed GetButtonRect(); coordinates now hard-coded in PaintWindow.
Raised WINDOW_HEIGHT to 250 px for better layout.
All drawing functions refactored to use HRGN + FillRgn/FrameRgn.
v1.0.1
Fixed :
Correct window scaling on high-DPI monitors.
Previously the UI elements scaled properly, but the window’s physical size remained fixed at 465 × 240 px, causing the content to look oversized.
The window now calculates its size via MulDiv(base_size, DPI, 96) before creation, ensuring the correct physical pixel dimensions on any DPI setting.
v1.0.0
🪟 Windows Update Pauser – Release
🧩 Architectures
| Platform | File | Note |
|---|---|---|
| 🖥 x64 | WindowsUpdatePauser_x64.exe |
Supports Windows 10/11 (64-bit) |
| 💻 x86 | WindowsUpdatePauser_x86.exe |
Supports Windows 10/11 (32-bit) |
| 📱 ARM | ARM64 build coming soon |
🔐 Run as administrator is required
📝 What's New
- 🌓 Dark-mode interface
- ⏸ Pause Windows Updates until the year 4750
▶️ One-click resume support- 📜 Visual status indicator
- 💡 Automatically opens
ms-settings:windowsupdate
⚠️ Important Notes
- Compatible only with Windows 10 / 11
- Modifies the registry, use with caution
- Creating a system restore point is recommended before applying