diff --git a/Winget-AutoUpdate/functions/Start-NotifTask.ps1 b/Winget-AutoUpdate/functions/Start-NotifTask.ps1
index 22c74df..eb6b476 100644
--- a/Winget-AutoUpdate/functions/Start-NotifTask.ps1
+++ b/Winget-AutoUpdate/functions/Start-NotifTask.ps1
@@ -1,27 +1,135 @@
#Function to send notifications to user
-function Start-NotifTask ($Title, $Message, $MessageType, $Balise, $OnClickAction) {
+function Start-NotifTask {
+
+ param(
+ [String]$Title = "Winget-AutoUpdate",
+ [String]$Message,
+ [String]$MessageType,
+ [String]$Balise = "WAU",
+ [String]$OnClickAction,
+ [String]$Body,
+ [String]$Button1Text,
+ [String]$Button1Action,
+ [Switch]$ButtonDismiss = $false
+ )
if (($WAUConfig.WAU_NotificationLevel -eq "Full") -or ($WAUConfig.WAU_NotificationLevel -eq "SuccessOnly" -and $MessageType -eq "Success") -or ($UserRun)) {
- #Prepare OnClickAction (if set)
- if ($OnClickAction) {
- $ToastOnClickAction = "activationType='protocol' launch='$OnClickAction'"
+ # XML Toast template creation
+ [xml]$ToastTemplate = New-Object system.Xml.XmlDocument
+ $ToastTemplate.LoadXml("")
+
+ # Creation of visual node
+ $XMLvisual = $ToastTemplate.CreateElement("visual")
+
+ # Creation of a binding node
+ $XMLbinding = $ToastTemplate.CreateElement("binding")
+ $XMLvisual.AppendChild($XMLbinding) | Out-Null
+ $XMLbindingAtt1 = ($ToastTemplate.CreateAttribute("template"))
+ $XMLbindingAtt1.Value = "ToastGeneric"
+ $XMLbinding.Attributes.Append($XMLbindingAtt1) | Out-Null
+
+ $XMLimagepath = "$WorkingDir\icons\$MessageType.png"
+ if (Test-Path $XMLimagepath){
+ # Creation of a image node
+ $XMLimage = $ToastTemplate.CreateElement("image")
+ $XMLbinding.AppendChild($XMLimage) | Out-Null
+ $XMLimageAtt1 = $ToastTemplate.CreateAttribute("placement")
+ $XMLimageAtt1.Value = "appLogoOverride"
+ $XMLimage.Attributes.Append($XMLimageAtt1) | Out-Null
+ $XMLimageAtt2 = $ToastTemplate.CreateAttribute("src")
+ $XMLimageAtt2.Value = "$WorkingDir\icons\$MessageType.png"
+ $XMLimage.Attributes.Append($XMLimageAtt2) | Out-Null
}
- #Add XML variables
- [xml]$ToastTemplate = @"
-
-
-
- $Title
- $Message
-
-
-
- $Balise
-
-"@
+ if ($Title){
+ # Creation of a text node
+ $XMLtitle = $ToastTemplate.CreateElement("text")
+ $XMLtitleText = $ToastTemplate.CreateTextNode($Title)
+ $XMLtitle.AppendChild($XMLtitleText) | Out-Null
+ $XMLbinding.AppendChild($XMLtitle) | Out-Null
+ }
+
+ if ($Message){
+ # Creation of a text node
+ $XMLtext = $ToastTemplate.CreateElement("text")
+ $XMLtextText = $ToastTemplate.CreateTextNode($Message)
+ $XMLtext.AppendChild($XMLtextText) | Out-Null
+ $XMLbinding.AppendChild($XMLtext) | Out-Null
+ }
+
+ if ($Body){
+ # Creation of a group node
+ $XMLgroup = $ToastTemplate.CreateElement("group")
+ $XMLbinding.AppendChild($XMLgroup) | Out-Null
+
+ # Creation of a subgroup node
+ $XMLsubgroup = $ToastTemplate.CreateElement("subgroup")
+ $XMLgroup.AppendChild($XMLsubgroup) | Out-Null
+
+ # Creation of a text node
+ $XMLcontent = $ToastTemplate.CreateElement("text")
+ $XMLcontentText = $ToastTemplate.CreateTextNode($Body)
+ $XMLcontent.AppendChild($XMLcontentText) | Out-Null
+ $XMLsubgroup.AppendChild($XMLcontent) | Out-Null
+ $XMLcontentAtt1 = $ToastTemplate.CreateAttribute("hint-style")
+ $XMLcontentAtt1.Value = "body"
+ $XMLcontent.Attributes.Append($XMLcontentAtt1) | Out-Null
+ $XMLcontentAtt2 = $ToastTemplate.CreateAttribute("hint-wrap")
+ $XMLcontentAtt2.Value = "true"
+ $XMLcontent.Attributes.Append($XMLcontentAtt2) | Out-Null
+ }
+
+ # Creation of actions node
+ $XMLactions = $ToastTemplate.CreateElement("actions")
+
+ if ($Button1Text) {
+ # Creation of action node
+ $XMLaction = $ToastTemplate.CreateElement("action")
+ $XMLactions.AppendChild($XMLaction) | Out-Null
+ $XMLactionAtt1 = $ToastTemplate.CreateAttribute("content")
+ $XMLactionAtt1.Value = $Button1Text
+ $XMLaction.Attributes.Append($XMLactionAtt1) | Out-Null
+ if ($Button1Action){
+ $XMLactionAtt2 = $ToastTemplate.CreateAttribute("arguments")
+ $XMLactionAtt2.Value = $Button1Action
+ $XMLaction.Attributes.Append($XMLactionAtt2) | Out-Null
+ $XMLactionAtt3 = $ToastTemplate.CreateAttribute("activationType")
+ $XMLactionAtt3.Value = "Protocol"
+ $XMLaction.Attributes.Append($XMLactionAtt3) | Out-Null
+ }
+ }
+
+ if ($ButtonDismiss) {
+ # Creation of action node
+ $XMLaction = $ToastTemplate.CreateElement("action")
+ $XMLactions.AppendChild($XMLaction) | Out-Null
+ $XMLactionAtt1 = $ToastTemplate.CreateAttribute("content")
+ $XMLactionAtt1.Value = ""
+ $XMLaction.Attributes.Append($XMLactionAtt1) | Out-Null
+ $XMLactionAtt2 = $ToastTemplate.CreateAttribute("arguments")
+ $XMLactionAtt2.Value = "dismiss"
+ $XMLaction.Attributes.Append($XMLactionAtt2) | Out-Null
+ $XMLactionAtt3 = $ToastTemplate.CreateAttribute("activationType")
+ $XMLactionAtt3.Value = "system"
+ $XMLaction.Attributes.Append($XMLactionAtt3) | Out-Null
+ }
+
+ # Creation of tag node
+ $XMLtag = $ToastTemplate.CreateElement("tag")
+ $XMLtagText = $ToastTemplate.CreateTextNode($Balise)
+ $XMLtag.AppendChild($XMLtagText) | Out-Null
+
+ # Add the visual node to the xml
+ $ToastTemplate.LastChild.AppendChild($XMLvisual) | Out-Null
+ $ToastTemplate.LastChild.AppendChild($XMLactions) | Out-Null
+ $ToastTemplate.LastChild.AppendChild($XMLtag) | Out-Null
+
+ if ($OnClickAction){
+ $ToastTemplate.toast.SetAttribute("activationType", "Protocol") | Out-Null
+ $ToastTemplate.toast.SetAttribute("launch", $OnClickAction) | Out-Null
+ }
#if not "Interactive" user, run as system
if ($IsSystem) {