How to Install Multiple Windows Apps with WinGet

WinGet can search for, inspect, install, upgrade, export, and import supported Windows packages. For a multi-app setup, verify each exact package ID and publisher first, install one package manually, then use a PowerShell loop that records failures instead of assuming the whole batch succeeded.

Confirm WinGet and its sources

winget --version
winget source list

WinGet is delivered through Microsoft’s App Installer on supported Windows versions. If the command is unavailable, update App Installer and allow Windows time to register it for the signed-in user before using unofficial installers.

Search and inspect every package ID

winget search --name "PowerToys"
winget show --id Microsoft.PowerToys --exact --source winget

Read the displayed name, publisher, source, installer type, and available version. Product names are not reliable package IDs, and similarly named packages can exist.

Install one package before creating a batch

winget install --id Microsoft.PowerToys --exact --source winget

Review any agreement, administrator prompt, installer UI, or restart requirement. Do not add silent flags until you know the package supports unattended installation safely.

Install a verified list with a result log

$apps = @(
    "Google.Chrome",
    "SlackTechnologies.Slack",
    "Zoom.Zoom",
    "Notion.Notion",
    "Microsoft.PowerToys"
)

$results = foreach ($app in $apps) {
    Write-Host "Installing $app..."

    winget install `
        --id $app `
        --exact `
        --source winget `
        --accept-source-agreements `
        --accept-package-agreements

    [PSCustomObject]@{
        PackageId = $app
        ExitCode  = $LASTEXITCODE
        Reviewed  = $false
    }
}

$results | Export-Csv "$env:USERPROFILE\Desktop\winget-install-results.csv" -NoTypeInformation
$results | Format-Table

Remove apps you do not need. Some packages still require administrator approval or user interaction. An exit code in the CSV is a prompt to review the console output and package individually, not a universal diagnosis.

Verify what actually installed

winget list --id Microsoft.PowerToys --exact
winget list

Open required applications and confirm their version. WinGet can report packages it recognizes, but it does not confirm application sign-in, configuration, licensing, or restored user data.

Upgrade with review

winget upgrade

Review the list before running a broad upgrade. For a controlled update:

winget upgrade --id Microsoft.PowerToys --exact --source winget

Use winget upgrade --all only when you are prepared for several installers and possible restarts.

Export a package list

winget export -o "$env:USERPROFILE\Desktop\MyApps.json" --accept-source-agreements

The export contains packages WinGet can match. Warnings about unmatched applications are important; the file is not a complete machine inventory or backup.

Review before importing on another PC

winget import -i "$env:USERPROFILE\Desktop\MyApps.json" --accept-source-agreements --accept-package-agreements

An import does not restore application settings, accounts, documents, license activation, browser profiles, or every program. Open the JSON first and remove software that does not belong on the destination device.

Troubleshoot one failed package at a time

winget source update
winget search "Application Name"
winget show --id Publisher.PackageName --exact
winget install --id Publisher.PackageName --exact --verbose-logs

Common causes include a changed ID, stale source metadata, an existing install that cannot be matched, an installer requiring elevation, architecture or OS incompatibility, and a publisher installer returning its own error.

Managed-device limits

Work or school policies may restrict package sources, installations, elevation, or Store components. Do not bypass those controls. Ask the administrator which packages and sources are approved.

Completion checklist

Official Microsoft references

Related Guides

About the author

Tweaknook Editorial publishes practical guides and browser-based tools for everyday digital work. Product-dependent facts are checked against current primary documentation, with limitations and safer verification steps stated where relevant.