UpdateEverything.psd1

@{
    RootModule        = 'UpdateEverything.psm1'
    ModuleVersion     = '1.9.0'
    GUID              = 'e4e1f3eb-5967-4311-94af-c650fe192e95'
    Author            = 'Brian Kronberg'
    Copyright         = '(c) 2026 Brian Kronberg. Released under the MIT License.'
    Description       = 'Updates a Windows machine through every package manager and update channel it can find, running each as an isolated step so one failure does not stop the rest. Covers winget, the Microsoft Store, Windows Update, Microsoft 365 Apps, Defender, PowerShell modules, npm, pipx, uv, Chocolatey, Scoop, rustup, .NET tools and more. Can register itself as a scheduled task with toast notifications.'

    # 5.1 is the floor because the script has always supported Windows PowerShell,
    # and a maintenance tool that cannot run on a machine before it has been
    # updated is not much use.
    PowerShellVersion = '5.1'

    # Declared so the gallery can filter on it, and so a Core-only or
    # Desktop-only consumer is told before installing rather than after.
    CompatiblePSEditions = @('Desktop', 'Core')

    FunctionsToExport = @(
        'Update-Everything'
        'Initialize-UpdateEverything'
        'Register-UpdateEverythingTask'
        'Unregister-UpdateEverythingTask'
        'Get-UpdateEverythingTask'
        'Test-PendingReboot'
        'Convert-PowerShell7ToMsi'
    )
    CmdletsToExport   = @()
    VariablesToExport = @()
    AliasesToExport   = @('Update-All')

    PrivateData = @{
        PSData = @{
            Tags         = @('Windows', 'Update', 'Maintenance', 'winget', 'WindowsUpdate', 'Chocolatey', 'Scoop', 'ScheduledTask', 'PSEdition_Desktop', 'PSEdition_Core')
            LicenseUri   = 'https://github.com/briankronberg/UpdateEverything/blob/main/LICENSE'
            ProjectUri   = 'https://github.com/briankronberg/UpdateEverything'
            ReleaseNotes = '# 1.9.0
 
## Each step can have a budget
 
A step that hangs -- winget waiting on a dialog nobody sees -- used to run
until Task Scheduler stopped the whole process at the execution time limit,
with no summary, no toast and no reboot check. -StepTimeoutMinutes, on both
Update-Everything and Register-UpdateEverythingTask, puts a budget on each
step. When a step runs past it, the processes it started are stopped, the
step is recorded as Failed with the reason, and the run continues. Off by
default.
 
Steps run in-process, so the budget is enforced by a watchdog thread that
stops the child processes of the step. A step that hangs inside a cmdlet in
this process, such as a Windows Update scan that never returns, has no child
to stop and is not helped; the execution time limit remains the backstop.
'


        }
    }
}