Add WAU AutoUpdate support
parent
f3a06fd3c9
commit
f7d5a19c06
|
@ -14,7 +14,10 @@ Install Winget-AutoUpdate and prerequisites silently
|
|||
Specify Winget-AutoUpdate installation localtion. Default: C:\ProgramData\Winget-AutoUpdate\
|
||||
|
||||
.PARAMETER DoNotUpdate
|
||||
Do not run Winget-autoupdate after installation. By default, Winget-AutoUpdate is run just after installation.
|
||||
Do not run Winget-AutoUpdate after installation. By default, Winget-AutoUpdate is run just after installation.
|
||||
|
||||
.PARAMETER DisableWAUAutoUpdate
|
||||
Disable Winget-AutoUpdate update checking. By default, WAU auto update if new version is available on Github.
|
||||
|
||||
.EXAMPLE
|
||||
.\winget-install-and-update.ps1 -Silent -DoNotUpdate
|
||||
|
@ -24,7 +27,8 @@ Do not run Winget-autoupdate after installation. By default, Winget-AutoUpdate i
|
|||
param(
|
||||
[Parameter(Mandatory=$False)] [Alias('S')] [Switch] $Silent = $false,
|
||||
[Parameter(Mandatory=$False)] [Alias('Path')] [String] $WingetUpdatePath = "$env:ProgramData\Winget-AutoUpdate",
|
||||
[Parameter(Mandatory=$False)] [Switch] $DoNotUpdate = $false
|
||||
[Parameter(Mandatory=$False)] [Switch] $DoNotUpdate = $false,
|
||||
[Parameter(Mandatory=$False)] [Switch] $DisableWAUAutoUpdate = $false
|
||||
)
|
||||
|
||||
|
||||
|
@ -117,6 +121,15 @@ function Install-WingetAutoUpdate{
|
|||
$task = New-ScheduledTask -Action $taskAction -Principal $taskUserPrincipal -Settings $taskSettings
|
||||
Register-ScheduledTask -TaskName 'Winget-AutoUpdate-Notify' -InputObject $task -Force
|
||||
|
||||
# Install config file
|
||||
[xml]$ConfigXML = @"
|
||||
<?xml version="1.0"?>
|
||||
<app>
|
||||
<WAUautoupdate>$(!($DisableWAUAutoUpdate))</WAUautoupdate>
|
||||
</app>
|
||||
"@
|
||||
$ConfigXML.Save("$WingetUpdatePath\config\config.xml")
|
||||
|
||||
Write-host "`nInstallation succeeded!" -ForegroundColor Green
|
||||
Start-sleep 1
|
||||
|
||||
|
|
|
@ -0,0 +1,7 @@
|
|||
<?xml version="1.0"?>
|
||||
<app>
|
||||
<name>Winget-AutoUpdate (WAU)</name>
|
||||
<version>1.4.0</version>
|
||||
<author>Romanitho</author>
|
||||
<info>https://github.com/Romanitho/Winget-AutoUpdate</info>
|
||||
</app>
|
|
@ -2,7 +2,7 @@
|
|||
<outputs>
|
||||
<output id="0">
|
||||
<!--Check network connection-->
|
||||
<title>Prüfen Sie Ihre Internet Verbindung</title>
|
||||
<title>Prüfen Sie Ihre Internet Verbindung.</title>
|
||||
<!--Unable to check for software updates at this time!-->
|
||||
<message>Es konnte nicht nach Updates gesucht werden!</message>
|
||||
</output>
|
||||
|
|
|
@ -2,13 +2,13 @@
|
|||
<outputs>
|
||||
<output id="0">
|
||||
<!--Check network connection-->
|
||||
<title>Check network connection</title>
|
||||
<title>Check network connection.</title>
|
||||
<!--Unable to check for software updates at this time!-->
|
||||
<message>Unable to check for software updates at this time!</message>
|
||||
</output>
|
||||
<output id="1">
|
||||
<!--No internet connction-->
|
||||
<title>No internet connction!</title>
|
||||
<title>No internet connction.</title>
|
||||
<!--Updates could not be verified-->
|
||||
<message>Updates could not be verified.</message>
|
||||
</output>
|
||||
|
|
|
@ -2,13 +2,13 @@
|
|||
<outputs>
|
||||
<output id="0">
|
||||
<!--Check network connection-->
|
||||
<title>Vérifiez votre connexion réseau</title>
|
||||
<title>Vérifiez votre connexion réseau.</title>
|
||||
<!--Unable to check for software updates at this time!-->
|
||||
<message>Impossible de vérifier les mises à jours logicielles pour le moment !</message>
|
||||
</output>
|
||||
<output id="1">
|
||||
<!--No internet connction-->
|
||||
<title>Aucune connexion réseau</title>
|
||||
<title>Aucune connexion réseau.</title>
|
||||
<!--Updates could not be verified-->
|
||||
<message>Les mises à jour logicielles n'ont pas pu être vérifiées !</message>
|
||||
</output>
|
||||
|
|
|
@ -57,7 +57,7 @@ function Write-Log ($LogMsg,$LogColor = "White") {
|
|||
|
||||
function Start-NotifTask ($Title,$Message,$MessageType,$Balise) {
|
||||
|
||||
#Add XML variables
|
||||
#Add XML variables
|
||||
[xml]$ToastTemplate = @"
|
||||
<toast launch="ms-get-started://redirect?id=apps_action">
|
||||
<visual>
|
||||
|
@ -228,6 +228,103 @@ function Get-ExcludedApps{
|
|||
}
|
||||
}
|
||||
|
||||
function Start-WAUUpdateCheck{
|
||||
#Get AutoUpdate status
|
||||
[xml]$UpdateStatus = Get-Content "$WorkingDir\config\config.xml" -Encoding UTF8 -ErrorAction SilentlyContinue
|
||||
$AutoUpdateStatus = $UpdateStatus.app.autoupdate
|
||||
|
||||
#Check if AutoUpdate is enabled
|
||||
if ($AutoUpdateStatus -eq $false){
|
||||
Write-Log "WAU Current version: $CurrentVersion. AutoUpdate is disabled." "Cyan"
|
||||
return $false
|
||||
}
|
||||
#If enabled, check online available version
|
||||
else{
|
||||
#Get Github latest version
|
||||
$WAUurl = 'https://api.github.com/repos/Romanitho/Winget-AutoUpdate/releases/latest'
|
||||
$LatestVersion = (Invoke-WebRequest $WAUurl | ConvertFrom-Json)[0].tag_name
|
||||
[version]$AvailableVersion = $LatestVersion.Replace("v","")
|
||||
|
||||
#Get current installed version
|
||||
[xml]$About = Get-Content "$WorkingDir\config\about.xml" -Encoding UTF8 -ErrorAction SilentlyContinue
|
||||
[version]$CurrentVersion = $About.app.version
|
||||
|
||||
#If newer version is avalable, return $True
|
||||
if ($AvailableVersion -gt $CurrentVersion){
|
||||
Write-Log "WAU Current version: $CurrentVersion. Version $AvailableVersion is available." "Yellow"
|
||||
return $true
|
||||
}
|
||||
else{
|
||||
Write-Log "WAU Current version: $CurrentVersion. Up to date." "Green"
|
||||
return $false
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
function Update-WAU{
|
||||
#Get WAU Github latest version
|
||||
$WAUurl = 'https://api.github.com/repos/Romanitho/Winget-AutoUpdate/releases/latest'
|
||||
$LatestVersion = (Invoke-WebRequest $WAUurl | ConvertFrom-Json)[0].tag_name
|
||||
|
||||
#Send available update notification
|
||||
$Title = $NotifLocale.local.outputs.output[2].title -f "Winget-AutoUpdate"
|
||||
$Message = $NotifLocale.local.outputs.output[2].message -f $CurrentVersion, $LatestVersion
|
||||
$MessageType = "info"
|
||||
$Balise = "Winget-AutoUpdate"
|
||||
Start-NotifTask $Title $Message $MessageType $Balise
|
||||
|
||||
#Run WAU update
|
||||
try{
|
||||
#Force to create a zip file
|
||||
$ZipFile = "$WorkingDir\WAU_update.zip"
|
||||
New-Item $ZipFile -ItemType File -Force | Out-Null
|
||||
|
||||
#Download the zip
|
||||
Write-Log "Starting downloading the GitHub Repository"
|
||||
Invoke-RestMethod -Uri "$($WAUurl)/zipball/$($LatestVersion)" -OutFile $ZipFile
|
||||
Write-Log 'Download finished'
|
||||
|
||||
#Extract Zip File
|
||||
Write-Log "Starting unzipping the WAU GitHub Repository"
|
||||
$location = "$WorkingDir\WAU_update"
|
||||
Expand-Archive -Path $ZipFile -DestinationPath $location -Force
|
||||
Get-ChildItem -Path $location -Recurse | Unblock-File
|
||||
Write-Log "Unzip finished"
|
||||
$TempPath = Resolve-Path "$location\Romanitho-Winget-AutoUpdate*\Winget-AutoUpdate\"
|
||||
Copy-Item -Path "$TempPath\*" -Destination ".\" -Recurse -Force
|
||||
|
||||
#Remove update zip file
|
||||
Write-Log "Cleaning temp files"
|
||||
Remove-Item -Path $ZipFile -Force -ErrorAction SilentlyContinue
|
||||
#Remove update folder
|
||||
Remove-Item -Path $location -Recurse -Force -ErrorAction SilentlyContinue
|
||||
|
||||
#Set new version to conf.xml
|
||||
[xml]$XMLconf = Get-content "$WorkingDir\config\about.xml" -Encoding UTF8 -ErrorAction SilentlyContinue
|
||||
$XMLconf.app.version = $LatestVersion.Replace("v","")
|
||||
$XMLconf.Save("$WorkingDir\config\about.xml")
|
||||
|
||||
#Send success Notif
|
||||
$Title = $NotifLocale.local.outputs.output[3].title -f "Winget-AutoUpdate"
|
||||
$Message = $NotifLocale.local.outputs.output[3].message -f $LatestVersion
|
||||
$MessageType = "success"
|
||||
$Balise = "Winget-AutoUpdate"
|
||||
Start-NotifTask $Title $Message $MessageType $Balise
|
||||
|
||||
#Rerun with newer version
|
||||
Get-ScheduledTask -TaskName "Winget-AutoUpdate" -ErrorAction SilentlyContinue | Start-ScheduledTask -ErrorAction SilentlyContinue
|
||||
exit
|
||||
}
|
||||
catch{
|
||||
#Send Error Notif
|
||||
$Title = $NotifLocale.local.outputs.output[4].title -f "Winget-AutoUpdate"
|
||||
$Message = $NotifLocale.local.outputs.output[4].message
|
||||
$MessageType = "error"
|
||||
$Balise = "Winget-AutoUpdate"
|
||||
Start-NotifTask $Title $Message $MessageType $Balise
|
||||
Write-Log "WAU Update failed"
|
||||
}
|
||||
}
|
||||
|
||||
<# MAIN #>
|
||||
|
||||
|
@ -236,6 +333,12 @@ Init
|
|||
|
||||
#Check network connectivity
|
||||
if (Test-Network){
|
||||
#Check if WAU is up to date
|
||||
$CheckWAUupdate = Start-WAUUpdateCheck
|
||||
#If AutoUpdate is enabled and Update is avalaible, then run WAU update
|
||||
if ($CheckWAUupdate){
|
||||
Update-WAU
|
||||
}
|
||||
|
||||
#Get exclude apps list
|
||||
$toSkip = Get-ExcludedApps
|
||||
|
|
Loading…
Reference in New Issue