Update your apps automatically on start with winget.
As there is no native auto update support via winget - i have created this PowerShell which can be configured to update selected Apps in controlled way.
- Microsoft.WinGet.Client
- Make sure that
Microsoft.WinGet.Clientis installed on you machine.
Install-Module Microsoft.WinGet.Client- Save
WingetAutoUpdate.ps1somewhere on your device. - Make sure it is unblocked.

- Create a file called
WingetAutoUpdateConfig.jsonsomewhere on you device and populate it according to your needs. You can take a look atWingetAutoUpdateConfigExample.jsonfor reference. - Open Task Scheduler.
- Click "Create Task".
- Configure as follows:
- General
- Name: WingetAutoUpdate
- Run only when user is logged on
- Run with highes privilages: true (optional: if not set the updates might prompt you for admin privilages)
- Triggers (New)
- Begin the task: At log on
- Delay task for: 30 seconds
- Stop task if it runs longer than: 1 hour
- Actions (New)
- Action: Start a programm
- Program/script:
powershell.exeorpwsh.exe(Make sure that you do not update PowerShell 7 through this auto updater if you usepwsh.exehere) - Add arguments:
-File "<Path to WingetAutoUpdate.ps1 on your machine>" -ConfigPath <Path to your WingetAutoUpdateConfig.json>
- General
The config can be any json file with the following format:
| Property | Mandatory | Description |
|---|---|---|
| package | [x] | String name of the Package that should be updated |
| version | [x] | String version matrix, that defines if a version is allowed to be updated. |
| literal | [ ] | boolean that defines if the value defined in package should be used as a search term or as an id (literally). I recommend to always set this to true |
x = Version number has to stay the same
- = Version number can change
Example: Assuming we have a software with version 1.2.3.4 and a version mask of x.x..
- 1.2.3.5: Will update
- 1.2.4.0: Will update
- 1.3.2.3: Will not update
- 2.0.0.0: Will not update
{ "rules":[ // rule objects ] }