UpdateEverything.psd1

@{
    RootModule        = 'UpdateEverything.psm1'
    ModuleVersion     = '1.6.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'
    )
    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.6.0
 
Both gallery clients are read, two new steps arrive under two new tags, and
the fixes that shipped on GitHub as 1.5.1.
 
## The self-update reads both gallery clients
 
PSResourceGet ships in the box with PowerShell 7.4 and its receipts are
invisible to Get-InstalledModule, so a copy installed with Install-PSResource
was told it did not come from the gallery, and -UpdateSelf ran Update-Module,
which cannot move it. The status now consults both clients and runs the one
whose receipt covers the installed copy -- Update-PSResource, whose
CurrentUser default keeps the no-elevation promise, or Update-Module as
before. An all-users copy is reported as needing an elevated session, with
the command that matches, and no UAC prompt is raised either way.
 
-Tag Self now selects the self step; in 1.5.0 the tag alone ran nothing. A
machine holding a receipted older version beside a newer copy without a
receipt is told about the mixed lineage and the way out, rather than being
called a copy that shipped with the host.
 
## Two new steps
 
VS Code extensions runs "code --update-extensions" under the new Editor tag.
The editor itself moves through winget; its extensions only auto-update
while the editor is open to see them, so the step earns its keep on the
editor that is rarely opened or has auto-update off.
 
MiKTeX packages updates installed TeX packages under the new TeX tag,
through the modern miktex CLI. MiKTeX warns when per-user and all-users
updates mix, so the step runs exactly one mode, chosen by where the
executable lives. An all-users install updates only from an elevated
session, and is skipped with that reason otherwise.
 
The inventory covers 26 tools.
 
## The 1.5.1 fixes, new to the gallery
 
Duplicate-tool detection compares directories case-insensitively again. The
Python launcher probe runs from the system directory inside a try/catch, so
a file named help in the working directory can no longer be executed by it.
conda sits under the Python banner with the same ownership check as uv and
pipx. A step whose tool is absent reports the absent tool rather than a need
for Administrator when both are true, and skipped steps record their log
path. The task wizard reads its tag list from the command it drives. A copy
running from outside every module path is pointed at Install-Module.
 
## Also in the repository
 
Convert-PowerShell7ToMsi.ps1 moves a machine from the Store (MSIX)
PowerShell 7 -- which cannot run elevated, and breaks anything that recorded
its versioned path whenever it updates -- to the MSI install, in one
attended run from Windows PowerShell. The README shows the command.
'


        }
    }
}