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).
|
||||
- #### 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
|
||||
### 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
|
||||
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?
|
||||
Scheduled task is set to run:
|
||||
- At user logon
|
||||
- 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.
|
||||
|
||||
### Log location
|
||||
You can find logs in install location, in log folder.
|
||||
|
||||
### "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:
|
||||
|
||||
|
@ -58,21 +66,22 @@ Disable Winget-AutoUpdate update checking. By default, WAU auto updates if new v
|
|||
**-UseWhiteList**
|
||||
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**
|
||||
Remove scheduled tasks and scripts.
|
||||
|
||||
## 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:
|
||||
> If you want to run a script just after installing ".NET Desktop Runtime 6", call your script like this:
|
||||
> `Microsoft.dotnetRuntime.6-x64-install.ps1`
|
||||
|
||||
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)
|
||||
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:
|
||||
`Adobe.Acrobat.Reader.32-bit-install.ps1` and put it in the "mods" folder.
|
||||
|
||||
You can find more information on Winget-Install Repo, as it's a related feature
|
||||
|
||||
## 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.
|
||||
|
|
|
@ -25,6 +25,9 @@ Use White List instead of Black List. This setting will not create the "exclude_
|
|||
.PARAMETER Uninstall
|
||||
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
|
||||
.\winget-install-and-update.ps1 -Silent -DoNotUpdate
|
||||
|
||||
|
@ -40,7 +43,8 @@ param(
|
|||
[Parameter(Mandatory=$False)] [Switch] $DoNotUpdate = $false,
|
||||
[Parameter(Mandatory=$False)] [Switch] $DisableWAUAutoUpdate = $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>
|
||||
<WAUprerelease>False</WAUprerelease>
|
||||
<UseWAUWhiteList>$UseWhiteList</UseWAUWhiteList>
|
||||
<NotificationLevel>$NotificationLevel</NotificationLevel>
|
||||
</app>
|
||||
"@
|
||||
$ConfigXML.Save("$WingetUpdatePath\config\config.xml")
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
<?xml version="1.0"?>
|
||||
<app>
|
||||
<name>Winget-AutoUpdate (WAU)</name>
|
||||
<version>1.8.0</version>
|
||||
<version>1.9.0</version>
|
||||
<author>Romanitho</author>
|
||||
<info>https://github.com/Romanitho/Winget-AutoUpdate</info>
|
||||
</app>
|
||||
|
|
|
@ -20,7 +20,7 @@ Function Get-NotifLocale {
|
|||
}
|
||||
|
||||
#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
|
||||
|
||||
}
|
|
@ -2,16 +2,24 @@
|
|||
|
||||
function Get-WAUConfig{
|
||||
|
||||
#Get config file
|
||||
[xml]$WAUConfig = Get-Content "$WorkingDir\config\config.xml" -Encoding UTF8 -ErrorAction SilentlyContinue
|
||||
|
||||
#Check if WAU is configured for Black or White List
|
||||
if ($true -eq [System.Convert]::ToBoolean($WAUConfig.app.UseWAUWhiteList)){
|
||||
Write-Log "WAU uses White List config"
|
||||
$Script:UseWhiteList = $true
|
||||
}
|
||||
else{
|
||||
Write-Log "WAU uses Black List config"
|
||||
$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) {
|
||||
|
||||
if (($NotificationLevel -eq "Full") -or ($NotificationLevel -eq "SuccessOnly" -and $MessageType -eq "Success")) {
|
||||
|
||||
#Add XML variables
|
||||
[xml]$ToastTemplate = @"
|
||||
<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
|
||||
Start-Sleep 3
|
||||
|
||||
}
|
||||
|
||||
}
|
|
@ -11,6 +11,9 @@ Get-ChildItem "$WorkingDir\functions" | ForEach-Object {. $_.FullName}
|
|||
#Run log initialisation function
|
||||
Start-Init
|
||||
|
||||
#Get WAU Configurations
|
||||
Get-WAUConfig
|
||||
|
||||
#Get Notif Locale function
|
||||
Get-NotifLocale
|
||||
|
||||
|
@ -40,11 +43,12 @@ if (Test-Network){
|
|||
}
|
||||
|
||||
#Get White or Black list
|
||||
Get-WAUConfig
|
||||
if ($UseWhiteList){
|
||||
Write-Log "WAU uses White List config"
|
||||
$toUpdate = Get-IncludedApps
|
||||
}
|
||||
else{
|
||||
Write-Log "WAU uses Black List config"
|
||||
$toSkip = Get-ExcludedApps
|
||||
}
|
||||
|
||||
|
|
|
@ -1,2 +1,2 @@
|
|||
@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
|
||||
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