Merge pull request #63 from Romanitho/NotificationLevel-Feature
Added Notification Level Featurepull/67/head
commit
48757aa2fb
29
README.md
29
README.md
|
@ -14,17 +14,25 @@ You can exclude apps from update job (for instance, apps you want to keep at a s
|
||||||
Add (or remove) the apps' ID you want to disable autoupdate to 'excluded_apps.txt'. (File must be placed in scripts' installation folder, or re-run install.bat).
|
Add (or remove) the apps' ID you want to disable autoupdate to 'excluded_apps.txt'. (File must be placed in scripts' installation folder, or re-run install.bat).
|
||||||
- #### Or White List
|
- #### Or White List
|
||||||
From 1.7.0 version, you can update only pre-selected apps. To do so, create an "included_apps.txt" with the apps' ID of the apps you want to auto-update and run the `Winget-AutoUpdate-Install.ps1` with `-UseWhiteList` parameter. Related post: https://github.com/Romanitho/Winget-AutoUpdate/issues/36
|
From 1.7.0 version, you can update only pre-selected apps. To do so, create an "included_apps.txt" with the apps' ID of the apps you want to auto-update and run the `Winget-AutoUpdate-Install.ps1` with `-UseWhiteList` parameter. Related post: https://github.com/Romanitho/Winget-AutoUpdate/issues/36
|
||||||
### Default install location
|
|
||||||
By default, scripts and components will be placed in ProgramData location (inside a Winget-AutoUpdate folder). You can change this with script argument.
|
### Notification Level
|
||||||
|
From version 1.9.0, you can choose which notification will be displayed: Full, Success only or none. Use `-NotificationLevel` parameter when you run `Winget-AutoUpdate-Install.ps1`
|
||||||
|
|
||||||
### Notification language
|
### Notification language
|
||||||
You can easily translate toast notifications by creating your locale xml config file (and share it with us :) ).
|
You can easily translate toast notifications by creating your locale xml config file (and share it with us :) ).
|
||||||
|
|
||||||
|
### Default install location
|
||||||
|
By default, scripts and components will be placed in ProgramData location (inside a Winget-AutoUpdate folder). You can change this with script argument (Not Recommended).
|
||||||
|
|
||||||
### When does the script run?
|
### When does the script run?
|
||||||
Scheduled task is set to run:
|
Scheduled task is set to run:
|
||||||
- At user logon
|
- At user logon
|
||||||
- At 6AM Everyday (with the -StartWhenAvailable option to be sure it is run at least once a day)
|
- At 6AM Everyday (with the -StartWhenAvailable option to be sure it is run at least once a day)
|
||||||
This way, even without connected user, powered on computers get updated anyway.
|
This way, even without connected user, powered on computers get updated anyway.
|
||||||
|
|
||||||
### Log location
|
### Log location
|
||||||
You can find logs in install location, in log folder.
|
You can find logs in install location, in log folder.
|
||||||
|
|
||||||
### "Unknown" App version
|
### "Unknown" App version
|
||||||
As explained in this [post](https://github.com/microsoft/winget-cli/issues/1255), Winget cannot detect the current version of some installed apps. We decided to skip managing these apps with WAU to avoid retries each time WAU runs:
|
As explained in this [post](https://github.com/microsoft/winget-cli/issues/1255), Winget cannot detect the current version of some installed apps. We decided to skip managing these apps with WAU to avoid retries each time WAU runs:
|
||||||
|
|
||||||
|
@ -58,21 +66,22 @@ Disable Winget-AutoUpdate update checking. By default, WAU auto updates if new v
|
||||||
**-UseWhiteList**
|
**-UseWhiteList**
|
||||||
Use White List instead of Black List. This setting will not create the "exclude_apps.txt" but "include_apps.txt"
|
Use White List instead of Black List. This setting will not create the "exclude_apps.txt" but "include_apps.txt"
|
||||||
|
|
||||||
|
**-NotificationLevel**
|
||||||
|
Specify the Notification level: Full (Default, displays all notification), SuccessOnly (Only displays notification for success) or None (Does not show any popup).
|
||||||
|
|
||||||
**-Uninstall**
|
**-Uninstall**
|
||||||
Remove scheduled tasks and scripts.
|
Remove scheduled tasks and scripts.
|
||||||
|
|
||||||
## Custom scripts (Mods feature)
|
## Custom scripts (Mods feature)
|
||||||
|
From version 1.8.0, the Mods feature allows you to run an additional script when upgrading or installing an app.
|
||||||
|
Just put the script in question with the App ID followed by the "-upgrade" or "-install" suffix in the "mods" folder.
|
||||||
|
WAU will call `AppID-upgrade.ps1` and/or `AppID-install.ps1` (if they differs, otherwise the "-install" mod will be used for upgrades too) if it exists in the "mods" folder just after the upgrade/install.
|
||||||
|
|
||||||
The Mods feature allows you to run an additional script when installing or upgrading an app.
|
|
||||||
Just put the script with the App ID followed by the "-install" or "-upgrade" suffix to be considered.
|
|
||||||
`AppID-install.ps1` and/or `AppID-upgrade.ps1` (if it differs, otherwise the "-install" mod will be used for upgrade)
|
|
||||||
and put this in the Mods directory
|
|
||||||
> Example:
|
> Example:
|
||||||
> If you want to run a script just after installing ".NET Desktop Runtime 6", call your script like this:
|
If you want to run a script that removes the shortcut from "%PUBLIC%\Desktop" (we don't want to fill the desktop with shortcuts our users can't delete) just after installing "Acrobat Reader DC" (32-bit), prepare a powershell script that removes the Public Desktop shortcut "Acrobat Reader DC.lnk" and name your script like this:
|
||||||
> `Microsoft.dotnetRuntime.6-x64-install.ps1`
|
`Adobe.Acrobat.Reader.32-bit-install.ps1` and put it in the "mods" folder.
|
||||||
|
|
||||||
In the case of ".NET Desktop Runtime 6" it spawns a new process and this we will have to wait for completion of before moving on to checking if the installation/upgrade suceeded or not. - (this seems to be handled in Winget Version: v1.3.0-preview)
|
|
||||||
|
|
||||||
|
You can find more information on Winget-Install Repo, as it's a related feature
|
||||||
|
|
||||||
## Help
|
## Help
|
||||||
In some cases, you need to "unblock" the "install.bat" file (Windows Defender SmartScreen). Right click, properties and unblock. Then, you'll be able to run it.
|
In some cases, you need to "unblock" the "install.bat" file (Windows Defender SmartScreen). Right click, properties and unblock. Then, you'll be able to run it.
|
||||||
|
|
|
@ -25,6 +25,9 @@ Use White List instead of Black List. This setting will not create the "exclude_
|
||||||
.PARAMETER Uninstall
|
.PARAMETER Uninstall
|
||||||
Remove scheduled tasks and scripts.
|
Remove scheduled tasks and scripts.
|
||||||
|
|
||||||
|
.PARAMETER NotificationLevel
|
||||||
|
Specify the Notification level: Full (Default, displays all notification), SuccessOnly (Only displays notification for success) or None (Does not show any popup).
|
||||||
|
|
||||||
.EXAMPLE
|
.EXAMPLE
|
||||||
.\winget-install-and-update.ps1 -Silent -DoNotUpdate
|
.\winget-install-and-update.ps1 -Silent -DoNotUpdate
|
||||||
|
|
||||||
|
@ -40,7 +43,8 @@ param(
|
||||||
[Parameter(Mandatory=$False)] [Switch] $DoNotUpdate = $false,
|
[Parameter(Mandatory=$False)] [Switch] $DoNotUpdate = $false,
|
||||||
[Parameter(Mandatory=$False)] [Switch] $DisableWAUAutoUpdate = $false,
|
[Parameter(Mandatory=$False)] [Switch] $DisableWAUAutoUpdate = $false,
|
||||||
[Parameter(Mandatory=$False)] [Switch] $Uninstall = $false,
|
[Parameter(Mandatory=$False)] [Switch] $Uninstall = $false,
|
||||||
[Parameter(Mandatory=$False)] [Switch] $UseWhiteList = $false
|
[Parameter(Mandatory=$False)] [Switch] $UseWhiteList = $false,
|
||||||
|
[Parameter(Mandatory=$False)] [ValidateSet("Full","SuccessOnly","None")] [String] $NotificationLevel = "Full"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
|
@ -191,6 +195,7 @@ function Install-WingetAutoUpdate{
|
||||||
<WAUautoupdate>$(!($DisableWAUAutoUpdate))</WAUautoupdate>
|
<WAUautoupdate>$(!($DisableWAUAutoUpdate))</WAUautoupdate>
|
||||||
<WAUprerelease>False</WAUprerelease>
|
<WAUprerelease>False</WAUprerelease>
|
||||||
<UseWAUWhiteList>$UseWhiteList</UseWAUWhiteList>
|
<UseWAUWhiteList>$UseWhiteList</UseWAUWhiteList>
|
||||||
|
<NotificationLevel>$NotificationLevel</NotificationLevel>
|
||||||
</app>
|
</app>
|
||||||
"@
|
"@
|
||||||
$ConfigXML.Save("$WingetUpdatePath\config\config.xml")
|
$ConfigXML.Save("$WingetUpdatePath\config\config.xml")
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
<?xml version="1.0"?>
|
<?xml version="1.0"?>
|
||||||
<app>
|
<app>
|
||||||
<name>Winget-AutoUpdate (WAU)</name>
|
<name>Winget-AutoUpdate (WAU)</name>
|
||||||
<version>1.8.0</version>
|
<version>1.9.0</version>
|
||||||
<author>Romanitho</author>
|
<author>Romanitho</author>
|
||||||
<info>https://github.com/Romanitho/Winget-AutoUpdate</info>
|
<info>https://github.com/Romanitho/Winget-AutoUpdate</info>
|
||||||
</app>
|
</app>
|
||||||
|
|
|
@ -20,7 +20,7 @@ Function Get-NotifLocale {
|
||||||
}
|
}
|
||||||
|
|
||||||
#Get locale XML file content
|
#Get locale XML file content
|
||||||
Write-Log "Notification Langugage : $LocaleDisplayName" "Cyan"
|
Write-Log "Notification Level: $NotificationLevel. Notification Language: $LocaleDisplayName" "Cyan"
|
||||||
[xml]$Script:NotifLocale = Get-Content $LocaleFile -Encoding UTF8 -ErrorAction SilentlyContinue
|
[xml]$Script:NotifLocale = Get-Content $LocaleFile -Encoding UTF8 -ErrorAction SilentlyContinue
|
||||||
|
|
||||||
}
|
}
|
|
@ -2,16 +2,24 @@
|
||||||
|
|
||||||
function Get-WAUConfig{
|
function Get-WAUConfig{
|
||||||
|
|
||||||
|
#Get config file
|
||||||
[xml]$WAUConfig = Get-Content "$WorkingDir\config\config.xml" -Encoding UTF8 -ErrorAction SilentlyContinue
|
[xml]$WAUConfig = Get-Content "$WorkingDir\config\config.xml" -Encoding UTF8 -ErrorAction SilentlyContinue
|
||||||
|
|
||||||
#Check if WAU is configured for Black or White List
|
#Check if WAU is configured for Black or White List
|
||||||
if ($true -eq [System.Convert]::ToBoolean($WAUConfig.app.UseWAUWhiteList)){
|
if ($true -eq [System.Convert]::ToBoolean($WAUConfig.app.UseWAUWhiteList)){
|
||||||
Write-Log "WAU uses White List config"
|
|
||||||
$Script:UseWhiteList = $true
|
$Script:UseWhiteList = $true
|
||||||
}
|
}
|
||||||
else{
|
else{
|
||||||
Write-Log "WAU uses Black List config"
|
|
||||||
$Script:UseWhiteList = $false
|
$Script:UseWhiteList = $false
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#Get Notification Level
|
||||||
|
if ($WAUConfig.app.NotificationLevel){
|
||||||
|
$Script:NotificationLevel = $WAUConfig.app.NotificationLevel
|
||||||
|
}
|
||||||
|
else{
|
||||||
|
#Default: Full
|
||||||
|
$Script:NotificationLevel = $full
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -2,6 +2,8 @@
|
||||||
|
|
||||||
function Start-NotifTask ($Title,$Message,$MessageType,$Balise) {
|
function Start-NotifTask ($Title,$Message,$MessageType,$Balise) {
|
||||||
|
|
||||||
|
if (($NotificationLevel -eq "Full") -or ($NotificationLevel -eq "SuccessOnly" -and $MessageType -eq "Success")) {
|
||||||
|
|
||||||
#Add XML variables
|
#Add XML variables
|
||||||
[xml]$ToastTemplate = @"
|
[xml]$ToastTemplate = @"
|
||||||
<toast launch="ms-get-started://redirect?id=apps_action">
|
<toast launch="ms-get-started://redirect?id=apps_action">
|
||||||
|
@ -57,4 +59,6 @@ function Start-NotifTask ($Title,$Message,$MessageType,$Balise) {
|
||||||
#Wait for notification to display
|
#Wait for notification to display
|
||||||
Start-Sleep 3
|
Start-Sleep 3
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
|
@ -11,6 +11,9 @@ Get-ChildItem "$WorkingDir\functions" | ForEach-Object {. $_.FullName}
|
||||||
#Run log initialisation function
|
#Run log initialisation function
|
||||||
Start-Init
|
Start-Init
|
||||||
|
|
||||||
|
#Get WAU Configurations
|
||||||
|
Get-WAUConfig
|
||||||
|
|
||||||
#Get Notif Locale function
|
#Get Notif Locale function
|
||||||
Get-NotifLocale
|
Get-NotifLocale
|
||||||
|
|
||||||
|
@ -40,11 +43,12 @@ if (Test-Network){
|
||||||
}
|
}
|
||||||
|
|
||||||
#Get White or Black list
|
#Get White or Black list
|
||||||
Get-WAUConfig
|
|
||||||
if ($UseWhiteList){
|
if ($UseWhiteList){
|
||||||
|
Write-Log "WAU uses White List config"
|
||||||
$toUpdate = Get-IncludedApps
|
$toUpdate = Get-IncludedApps
|
||||||
}
|
}
|
||||||
else{
|
else{
|
||||||
|
Write-Log "WAU uses Black List config"
|
||||||
$toSkip = Get-ExcludedApps
|
$toSkip = Get-ExcludedApps
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -1,2 +1,2 @@
|
||||||
@echo off
|
@echo off
|
||||||
powershell -Command "Get-ChildItem -Path '%~dp0' -Recurse | Unblock-File; Start-Process powershell.exe -Argument '-executionpolicy bypass -file """%~dp0Winget-AutoUpdate-Install.ps1"" '" -Verb RunAs
|
powershell -Command "Get-ChildItem -Path '%~dp0' -Recurse | Unblock-File; Start-Process powershell.exe -Argument '-noprofile -executionpolicy bypass -file """%~dp0Winget-AutoUpdate-Install.ps1"" '" -Verb RunAs
|
||||||
|
|
|
@ -1,2 +1,2 @@
|
||||||
@echo off
|
@echo off
|
||||||
powershell -Command "Get-ChildItem -Path '%~dp0' -Recurse | Unblock-File; Start-Process powershell.exe -Argument '-executionpolicy bypass -file """%~dp0Winget-AutoUpdate-Install.ps1"" -Uninstall'" -Verb RunAs
|
powershell -Command "Get-ChildItem -Path '%~dp0' -Recurse | Unblock-File; Start-Process powershell.exe -Argument '-noprofile -executionpolicy bypass -file """%~dp0Winget-AutoUpdate-Install.ps1"" -Uninstall'" -Verb RunAs
|
Loading…
Reference in New Issue