UpdateEverything.psd1

@{
    RootModule        = 'UpdateEverything.psm1'
    ModuleVersion     = '1.7.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.7.0
 
The Store-to-MSI migration ships in the box.
 
## Convert-PowerShell7ToMsi
 
The Store (MSIX) PowerShell 7 cannot run elevated, its versioned install
path breaks anything that recorded it whenever it updates, and winget has
installed it by default since 7.6 -- so machines arrive in that state
without anyone choosing it.
 
The module now ships Convert-PowerShell7ToMsi.ps1 beside its manifest: a
standalone script, run under Windows PowerShell 5.1 with one command,
because a packaged pwsh can neither elevate nor remove the package hosting
it. It installs the current MSI release straight from the PowerShell
project -- not through winget, which would hand back the package being
removed -- verifies the installed pwsh answers, and only then removes the
Store package and its provisioning. Windows Terminal is pointed at the MSI
profile when its old default would disappear with the package. Profiles,
per-user modules and command history already live in paths both installs
share, and the report says so instead of moving anything.
 
The exported Convert-PowerShell7ToMsi command launches the script from any
session, with -ReportOnly to see the plan and change nothing. A maintenance
run that finds the Store package on the machine now ends by recommending
the migration, with the full path to the shipped script.
 
Both self-elevation handoffs -- Windows PowerShell to an elevated 5.1, and
pwsh to an elevated MSI pwsh -- were verified attended on a real machine
with UAC on before this version shipped.
'


        }
    }
}