diff --git a/.vscode/settings.json b/.vscode/settings.json index 04f7e94c..093030e7 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -8,6 +8,7 @@ "adotcoop", "Airtame", "Akeo", + "ALLUSER", "Anki", "architecturekey", "Artifex", diff --git a/Evergreen/Apps/Get-1Password.ps1 b/Evergreen/Apps/Get-1Password.ps1 index 0d15b211..5d27a8c1 100644 --- a/Evergreen/Apps/Get-1Password.ps1 +++ b/Evergreen/Apps/Get-1Password.ps1 @@ -1,4 +1,4 @@ -Function Get-1Password { +function Get-1Password { <# .SYNOPSIS Get the current version and download URL for 1Password 8 and later. @@ -11,7 +11,7 @@ Function Get-1Password { [OutputType([System.Management.Automation.PSObject])] [CmdletBinding(SupportsShouldProcess = $False)] param ( - [Parameter(Mandatory = $False, Position = 0)] + [Parameter(Mandatory = $false, Position = 0)] [ValidateNotNull()] [System.Management.Automation.PSObject] $res = (Get-FunctionResource -AppName ("$($MyInvocation.MyCommand)".Split("-"))[1]) @@ -23,23 +23,32 @@ Function Get-1Password { ContentType = $res.Get.Update.ContentType } $updateFeed = Invoke-EvergreenRestMethod @params - if ($Null -ne $updateFeed) { - if ($updateFeed.available -eq 1) { + if ($updateFeed.available -eq 1) { - # Output the object to the pipeline - foreach ($item in $updateFeed) { - $PSObject = [PSCustomObject] @{ - Version = $item.version - URI = $($item.sources | Select-Object -Index (Get-Random -Minimum 0 -Maximum 2)).url - } - Write-Output -InputObject $PSObject + # Output the object to the pipeline from the update feed + foreach ($item in $updateFeed) { + + # Pick a URL from the list of returns URLs + # $Url = $($item.sources | Select-Object -Index (Get-Random -Minimum 0 -Maximum 2)).url + $Url = $item.sources | Where-Object { $_.name -eq $res.Get.Update.CDN } | Select-Object -ExpandProperty "url" + + $PSObject = [PSCustomObject] @{ + Version = $item.version + Type = Get-FileType -File $Url + URI = $Url } + Write-Output -InputObject $PSObject } - else { - Write-Warning -Message "$($MyInvocation.MyCommand): failed to find an available from: $($res.Get.Update.Uri)." + + # Output the MSI version of the 1Password installer + $PSObject = [PSCustomObject] @{ + Version = $item.version + Type = Get-FileType -File $res.Get.Download.Uri + URI = $res.Get.Download.Uri } + Write-Output -InputObject $PSObject } else { - Write-Error -Message "$($MyInvocation.MyCommand): unable to retrieve content from $($res.Get.Update.Uri)." + Write-Warning -Message "$($MyInvocation.MyCommand): failed to find an available from: $($res.Get.Update.Uri)." } } diff --git a/Evergreen/Apps/Get-1PasswordCLI.ps1 b/Evergreen/Apps/Get-1PasswordCLI.ps1 new file mode 100644 index 00000000..fc926eb4 --- /dev/null +++ b/Evergreen/Apps/Get-1PasswordCLI.ps1 @@ -0,0 +1,38 @@ +function Get-1PasswordCLI { + <# + .NOTES + Author: Aaron Parker + Twitter: @stealthpuppy + #> + [OutputType([System.Management.Automation.PSObject])] + [CmdletBinding(SupportsShouldProcess = $false)] + param ( + [Parameter(Mandatory = $false, Position = 0)] + [ValidateNotNull()] + [System.Management.Automation.PSObject] + $res = (Get-FunctionResource -AppName ("$($MyInvocation.MyCommand)".Split("-"))[1]) + ) + + # Get latest version and download latest release via update API + $params = @{ + Uri = $res.Get.Update.Uri + ContentType = $res.Get.Update.ContentType + } + $updateFeed = Invoke-EvergreenRestMethod @params + if ($updateFeed.available -eq 1) { + + # Output the object to the pipeline + foreach ($Architecture in $res.Get.Download.Uri.GetEnumerator()) { + $PSObject = [PSCustomObject] @{ + Version = $updateFeed.version + Architecture = $Architecture.Name + Type = Get-FileType -File $res.Get.Download.Uri[$Architecture.Name] + URI = $res.Get.Download.Uri[$Architecture.Name] -replace $res.Get.Download.ReplaceText, $updateFeed.version + } + Write-Output -InputObject $PSObject + } + } + else { + Write-Warning -Message "$($MyInvocation.MyCommand): failed to find an available from: $($res.Get.Update.Uri)." + } +} diff --git a/Evergreen/Apps/Get-ESETPROTECTServer.ps1 b/Evergreen/Apps/Get-ESETPROTECTServer.ps1 index 124802a1..f560b71b 100644 --- a/Evergreen/Apps/Get-ESETPROTECTServer.ps1 +++ b/Evergreen/Apps/Get-ESETPROTECTServer.ps1 @@ -28,7 +28,7 @@ function Get-ESETPROTECTServer { # Find all the supported languages because the versions can be different per language $Languages = $InfoData.Language | Select-Object -Unique - Write-Verbose -Message "$($MyInvocation.MyCommand): Found $($Language.Count) languages." + Write-Verbose -Message "$($MyInvocation.MyCommand): Found $($Languages.Count) languages." # Step through each of the supported languages foreach ($Language in $Languages) { diff --git a/Evergreen/Apps/Get-Flameshot.ps1 b/Evergreen/Apps/Get-Flameshot.ps1 new file mode 100644 index 00000000..fccf687f --- /dev/null +++ b/Evergreen/Apps/Get-Flameshot.ps1 @@ -0,0 +1,24 @@ +function Get-Flameshot { + <# + .NOTES + Author: Aaron Parker + Twitter: @stealthpuppy + #> + [OutputType([System.Management.Automation.PSObject])] + [CmdletBinding(SupportsShouldProcess = $False)] + param ( + [Parameter(Mandatory = $False, Position = 0)] + [ValidateNotNull()] + [System.Management.Automation.PSObject] + $res = (Get-FunctionResource -AppName ("$($MyInvocation.MyCommand)".Split("-"))[1]) + ) + + # Pass the repo releases API URL and return a formatted object + $params = @{ + Uri = $res.Get.Uri + MatchVersion = $res.Get.MatchVersion + Filter = $res.Get.MatchFileTypes + } + $object = Get-GitHubRepoRelease @params + Write-Output -InputObject $object +} diff --git a/Evergreen/Apps/Get-GrafanaAgent.ps1 b/Evergreen/Apps/Get-GrafanaAgent.ps1 new file mode 100644 index 00000000..1a88a1e2 --- /dev/null +++ b/Evergreen/Apps/Get-GrafanaAgent.ps1 @@ -0,0 +1,24 @@ +function Get-GrafanaAgent { + <# + .NOTES + Author: Aaron Parker + Twitter: @stealthpuppy + #> + [OutputType([System.Management.Automation.PSObject])] + [CmdletBinding(SupportsShouldProcess = $False)] + param ( + [Parameter(Mandatory = $False, Position = 0)] + [ValidateNotNull()] + [System.Management.Automation.PSObject] + $res = (Get-FunctionResource -AppName ("$($MyInvocation.MyCommand)".Split("-"))[1]) + ) + + # Pass the repo releases API URL and return a formatted object + $params = @{ + Uri = $res.Get.Uri + MatchVersion = $res.Get.MatchVersion + Filter = $res.Get.MatchFileTypes + } + $object = Get-GitHubRepoRelease @params + Write-Output -InputObject $object +} diff --git a/Evergreen/Apps/Get-KubernetesKubectl.ps1 b/Evergreen/Apps/Get-KubernetesKubectl.ps1 index 2ebd0cb2..94cbed3a 100644 --- a/Evergreen/Apps/Get-KubernetesKubectl.ps1 +++ b/Evergreen/Apps/Get-KubernetesKubectl.ps1 @@ -22,7 +22,7 @@ function Get-KubernetesKubectl { # Build the download links for each platform & architecture foreach ($DownloadUri in $res.Get.Download.Uri.GetEnumerator()) { [PSCustomObject] @{ - Version = $Version + Version = $Version.TrimStart("v") Architecture = $DownloadUri.Name.Split("_")[1] Platform = $DownloadUri.Name.Split("_")[0] URI = $DownloadUri.Value -replace $res.Get.Download.ReplaceVersionText, $Version diff --git a/Evergreen/Apps/Get-Microsoft365Apps.ps1 b/Evergreen/Apps/Get-Microsoft365Apps.ps1 index 099fb679..0b610aea 100644 --- a/Evergreen/Apps/Get-Microsoft365Apps.ps1 +++ b/Evergreen/Apps/Get-Microsoft365Apps.ps1 @@ -1,4 +1,4 @@ -Function Get-Microsoft365Apps { +function Get-Microsoft365Apps { <# .SYNOPSIS Returns the latest Microsoft 365 Apps version number for each channel and download. @@ -8,34 +8,48 @@ Function Get-Microsoft365Apps { Twitter: @stealthpuppy #> [OutputType([System.Management.Automation.PSObject])] - [Diagnostics.CodeAnalysis.SuppressMessageAttribute("PSUseSingularNouns", "", Justification="Product name is a plural")] - [CmdletBinding(SupportsShouldProcess = $False)] + [Diagnostics.CodeAnalysis.SuppressMessageAttribute("PSUseSingularNouns", "", Justification = "Product name is a plural")] + [CmdletBinding(SupportsShouldProcess = $false)] param ( - [Parameter(Mandatory = $False, Position = 0)] + [Parameter(Mandatory = $false, Position = 0)] [ValidateNotNull()] [System.Management.Automation.PSObject] $res = (Get-FunctionResource -AppName ("$($MyInvocation.MyCommand)".Split("-"))[1]) ) + # Get the channels for the Microsoft 365 Apps + $params = @{ + Uri = $res.Get.Update.Channels + ContentType = $res.Get.Update.ContentType + } + $Channels = Invoke-EvergreenRestMethod @params + + # Get the latest version details for the Microsoft 365 Apps $params = @{ Uri = $res.Get.Update.Uri ContentType = $res.Get.Update.ContentType } $Updates = Invoke-EvergreenRestMethod @params - ForEach ($Update in $Updates) { + # Walk through the channels to match versions and return details + foreach ($Channel in $Channels) { + $Item = $Updates | Where-Object { $_.channelId -eq $Channel.name } + if ($Item) { - # Find the release date for this version - $Date = ($Update.officeVersions | Where-Object { $_.legacyVersion -eq $Update.latestVersion }).availabilityDate + # Find the release date for this version + $OfficeVersion = $Item.officeVersions | Where-Object { $_.legacyVersion -eq $Item.latestVersion } - # Build and array of the latest release and download URLs - $PSObject = [PSCustomObject] @{ - Version = $Update.latestVersion - Channel = $Update.channelId - Name = $res.Get.Update.ChannelNames.$($Update.channelId) - Date = [System.DateTime]$Date - URI = $res.Get.Download.Uri + # Build and array of the latest release and download URLs + $PSObject = [PSCustomObject] @{ + Version = $Item.latestVersion + ReleaseVersion = $OfficeVersion.releaseVersion + Channel = $Channel.name + Name = $Channel.displayName + Date = ConvertTo-DateTime -DateTime $OfficeVersion.availabilityDate -Pattern $res.Get.Update.DateTime + EOSDate = ConvertTo-DateTime -DateTime $OfficeVersion.endOfSupportDate -Pattern $res.Get.Update.DateTime + URI = $res.Get.Download.Uri + } + Write-Output -InputObject $PSObject } - Write-Output -InputObject $PSObject } } diff --git a/Evergreen/Apps/Get-MicrosoftTeams.ps1 b/Evergreen/Apps/Get-MicrosoftTeams.ps1 index c19f8a7d..6d1473f8 100644 --- a/Evergreen/Apps/Get-MicrosoftTeams.ps1 +++ b/Evergreen/Apps/Get-MicrosoftTeams.ps1 @@ -1,70 +1,39 @@ -Function Get-MicrosoftTeams { +function Get-MicrosoftTeams { <# .SYNOPSIS - Returns the available Microsoft Teams versions and download URIs. - - .NOTES - Author: Aaron Parker - Twitter: @stealthpuppy - - https://teams.microsoft.com/desktopclient/installer/windows/x64 - https://teams.microsoft.com/desktopclient/installer/windows/x86 - https://teams.microsoft.com/desktopclient/installer/windows/arm64 + Returns the available Microsoft Teams 2 versions and download URIs. #> [OutputType([System.Management.Automation.PSObject])] - [Diagnostics.CodeAnalysis.SuppressMessageAttribute("PSUseSingularNouns", "", Justification="Product name is a plural")] - [CmdletBinding(SupportsShouldProcess = $False)] + [Diagnostics.CodeAnalysis.SuppressMessageAttribute("PSUseSingularNouns", "", Justification = "Product name is a plural")] + [CmdletBinding(SupportsShouldProcess = $false)] param ( - [Parameter(Mandatory = $False, Position = 0)] + [Parameter(Mandatory = $false, Position = 0)] [ValidateNotNull()] [System.Management.Automation.PSObject] $res = (Get-FunctionResource -AppName ("$($MyInvocation.MyCommand)".Split("-"))[1]) ) - # Step through each release ring - ForEach ($ring in $res.Get.Update.Rings.GetEnumerator()) { - - # Read the JSON and convert to a PowerShell object. Return the release version of Teams - Write-Verbose -Message "$($MyInvocation.MyCommand): Query ring: $($ring.Name): $($res.Get.Update.Rings[$ring.Key])." - $params = @{ - Uri = $res.Get.Update.Uri -replace $res.Get.Update.ReplaceText, $res.Get.Update.Rings[$ring.Key] - UserAgent = $res.Get.Update.UserAgent - } - $updateFeed = Invoke-EvergreenRestMethod @params - - # Read the JSON and build an array of platform, channel, version - If ($Null -ne $updateFeed) { - - # Match version number - $Version = [RegEx]::Match($updateFeed.releasesPath, $res.Get.Update.MatchVersion).Captures.Groups[1].Value - Write-Verbose -Message "$($MyInvocation.MyCommand): Found version: $Version." - - # Step through each architecture - ForEach ($Architecture in $res.Get.Download.Architecture) { - - # Query for the installer - $params = @{ - Uri = $res.Get.Download.Uri -replace $res.Get.Download.ReplaceText.architecture, $Architecture -replace $res.Get.Download.ReplaceText.ring, $res.Get.Update.Rings[$ring.Key] - UserAgent = $res.Get.Update.UserAgent - } - $Uri = Invoke-EvergreenRestMethod @params - Write-Verbose -Message "$($MyInvocation.MyCommand): Found installer: $Uri." - - # Build the output object and output object to the pipeline - If ($Null -ne $Uri) { - - ForEach ($extension in $res.Get.Download.Extensions) { - $Uri = $Uri -replace ".exe$", $extension - $PSObject = [PSCustomObject] @{ - Version = $Version - Ring = $ring.Name - Architecture = Get-Architecture -String $Uri - Type = [System.IO.Path]::GetExtension($Uri).Split(".")[-1] - URI = $Uri - } - Write-Output -InputObject $PSObject - } + # Query for the download/update feed + $Feed = Invoke-EvergreenRestMethod -Uri $res.Get.Update.Uri + if ($null -ne $Feed) { + + foreach ($Release in $res.Get.Update.Releases.GetEnumerator()) { + + # Query the feed for each release type and expand the architectures in that release + foreach ($Item in ($Feed.BuildSettings.$($Release.Value) | ` + Get-Member -MemberType "NoteProperty" | ` + Select-Object -ExpandProperty "Name" | ` + Where-Object { $_ -in $res.Get.Download.Architecture })) { + + # Output the version object + $PSObject = [PSCustomObject] @{ + Version = $Feed.BuildSettings.$($Release.Value).$Item.latestVersion + Release = $Release.Name + Architecture = $Item + Type = Get-FileType -File $Feed.BuildSettings.$($Release.Value).$Item.buildLink + URI = $Feed.BuildSettings.$($Release.Value).$Item.buildLink } + Write-Output -InputObject $PSObject } } } diff --git a/Evergreen/Apps/Get-MicrosoftTeamsClassic.ps1 b/Evergreen/Apps/Get-MicrosoftTeamsClassic.ps1 new file mode 100644 index 00000000..2f15154a --- /dev/null +++ b/Evergreen/Apps/Get-MicrosoftTeamsClassic.ps1 @@ -0,0 +1,71 @@ +function Get-MicrosoftTeamsClassic { + <# + .SYNOPSIS + Returns the available Microsoft Teams versions and download URIs. + + .NOTES + Author: Aaron Parker + Twitter: @stealthpuppy + + https://teams.microsoft.com/desktopclient/installer/windows/x64 + https://teams.microsoft.com/desktopclient/installer/windows/x86 + https://teams.microsoft.com/desktopclient/installer/windows/arm64 + #> + [OutputType([System.Management.Automation.PSObject])] + [Diagnostics.CodeAnalysis.SuppressMessageAttribute("PSUseSingularNouns", "", Justification="Product name is a plural")] + [CmdletBinding(SupportsShouldProcess = $False)] + param ( + [Parameter(Mandatory = $False, Position = 0)] + [ValidateNotNull()] + [System.Management.Automation.PSObject] + $res = (Get-FunctionResource -AppName ("$($MyInvocation.MyCommand)".Split("-"))[1]) + ) + + # Step through each release ring + ForEach ($ring in $res.Get.Update.Rings.GetEnumerator()) { + + # Read the JSON and convert to a PowerShell object. Return the release version of Teams + Write-Verbose -Message "$($MyInvocation.MyCommand): Query ring: $($ring.Name): $($res.Get.Update.Rings[$ring.Key])." + $params = @{ + Uri = $res.Get.Update.Uri -replace $res.Get.Update.ReplaceText, $res.Get.Update.Rings[$ring.Key] + UserAgent = $res.Get.Update.UserAgent + } + $updateFeed = Invoke-EvergreenRestMethod @params + + # Read the JSON and build an array of platform, channel, version + If ($Null -ne $updateFeed) { + + # Match version number + $Version = [RegEx]::Match($updateFeed.releasesPath, $res.Get.Update.MatchVersion).Captures.Groups[1].Value + Write-Verbose -Message "$($MyInvocation.MyCommand): Found version: $Version." + + # Step through each architecture + ForEach ($Architecture in $res.Get.Download.Architecture) { + + # Query for the installer + $params = @{ + Uri = $res.Get.Download.Uri -replace $res.Get.Download.ReplaceText.architecture, $Architecture -replace $res.Get.Download.ReplaceText.ring, $res.Get.Update.Rings[$ring.Key] + UserAgent = $res.Get.Update.UserAgent + } + $Uri = Invoke-EvergreenRestMethod @params + Write-Verbose -Message "$($MyInvocation.MyCommand): Found installer: $Uri." + + # Build the output object and output object to the pipeline + If ($Null -ne $Uri) { + + ForEach ($extension in $res.Get.Download.Extensions) { + $Uri = $Uri -replace ".exe$", $extension + $PSObject = [PSCustomObject] @{ + Version = $Version + Ring = $ring.Name + Architecture = Get-Architecture -String $Uri + Type = [System.IO.Path]::GetExtension($Uri).Split(".")[-1] + URI = $Uri + } + Write-Output -InputObject $PSObject + } + } + } + } + } +} diff --git a/Evergreen/Apps/Get-MicrosoftTeamsPreview.ps1 b/Evergreen/Apps/Get-MicrosoftTeamsPreview.ps1 deleted file mode 100644 index e01dfc33..00000000 --- a/Evergreen/Apps/Get-MicrosoftTeamsPreview.ps1 +++ /dev/null @@ -1,39 +0,0 @@ -Function Get-MicrosoftTeamsPreview { - <# - .SYNOPSIS - Returns the available Microsoft Teams 2 Preview versions and download URIs. - #> - [OutputType([System.Management.Automation.PSObject])] - [Diagnostics.CodeAnalysis.SuppressMessageAttribute("PSUseSingularNouns", "", Justification = "Product name is a plural")] - [CmdletBinding(SupportsShouldProcess = $false)] - param ( - [Parameter(Mandatory = $false, Position = 0)] - [ValidateNotNull()] - [System.Management.Automation.PSObject] - $res = (Get-FunctionResource -AppName ("$($MyInvocation.MyCommand)".Split("-"))[1]) - ) - - Write-Warning -Message "This application function is subject to change and may change once Microsoft Teams 2.x is out of preview." - - # Query for the download/update feed - $Feed = Invoke-EvergreenRestMethod -Uri $res.Get.Update.Uri - if ($null -ne $Feed) { - - foreach ($Release in $res.Get.Update.Releases.GetEnumerator()) { - - # Query the feed for each release type and expand the architectures in that release - foreach ($Item in ($Feed.BuildSettings.$($Release.Value) | Get-Member -MemberType "NoteProperty" | Select-Object -ExpandProperty "Name")) { - - # Output the version object - $PSObject = [PSCustomObject] @{ - Version = $Feed.BuildSettings.$($Release.Value).$Item.latestVersion - Release = $Release.Name - Architecture = $Item - Type = Get-FileType -File $Feed.BuildSettings.$($Release.Value).$Item.buildLink - URI = $Feed.BuildSettings.$($Release.Value).$Item.buildLink - } - Write-Output -InputObject $PSObject - } - } - } -} diff --git a/Evergreen/Apps/Get-PlexDesktop.ps1 b/Evergreen/Apps/Get-PlexDesktop.ps1 new file mode 100644 index 00000000..a5d63e2c --- /dev/null +++ b/Evergreen/Apps/Get-PlexDesktop.ps1 @@ -0,0 +1,32 @@ +function Get-PlexDesktop { + <# + .NOTES + Author: Aaron Parker + Twitter: @stealthpuppy + #> + [OutputType([System.Management.Automation.PSObject])] + [CmdletBinding(SupportsShouldProcess = $False)] + param ( + [Parameter(Mandatory = $False, Position = 0)] + [ValidateNotNull()] + [System.Management.Automation.PSObject] + $res = (Get-FunctionResource -AppName ("$($MyInvocation.MyCommand)".Split("-"))[1]) + ) + + # Get the list of downloads + $params = @{ + Uri = $res.Get.Download.Uri + } + $Content = Invoke-EvergreenRestMethod @params + + # Return a releases object to the pipeline + foreach ($Release in $Content.computer.Windows.releases) { + $PSObject = [PSCustomObject] @{ + Version = $Content.computer.Windows.version + Architecture = Get-Architecture -String $Release.build + Checksum = $Release.checksum + URI = $Release.url + } + Write-Output -InputObject $PSObject + } +} diff --git a/Evergreen/Apps/Get-PlexHTPC.ps1 b/Evergreen/Apps/Get-PlexHTPC.ps1 new file mode 100644 index 00000000..0eebaf89 --- /dev/null +++ b/Evergreen/Apps/Get-PlexHTPC.ps1 @@ -0,0 +1,32 @@ +function Get-PlexHTPC { + <# + .NOTES + Author: Aaron Parker + Twitter: @stealthpuppy + #> + [OutputType([System.Management.Automation.PSObject])] + [CmdletBinding(SupportsShouldProcess = $False)] + param ( + [Parameter(Mandatory = $False, Position = 0)] + [ValidateNotNull()] + [System.Management.Automation.PSObject] + $res = (Get-FunctionResource -AppName ("$($MyInvocation.MyCommand)".Split("-"))[1]) + ) + + # Get the list of downloads + $params = @{ + Uri = $res.Get.Download.Uri + } + $Content = Invoke-EvergreenRestMethod @params + + # Return a releases object to the pipeline + foreach ($Release in $Content.computer.Windows.releases) { + $PSObject = [PSCustomObject] @{ + Version = $Content.computer.Windows.version + Architecture = Get-Architecture -String $Release.build + Checksum = $Release.checksum + URI = $Release.url + } + Write-Output -InputObject $PSObject + } +} diff --git a/Evergreen/Apps/Get-PlexMediaServer.ps1 b/Evergreen/Apps/Get-PlexMediaServer.ps1 new file mode 100644 index 00000000..8ed82fe3 --- /dev/null +++ b/Evergreen/Apps/Get-PlexMediaServer.ps1 @@ -0,0 +1,32 @@ +function Get-PlexMediaServer { + <# + .NOTES + Author: Aaron Parker + Twitter: @stealthpuppy + #> + [OutputType([System.Management.Automation.PSObject])] + [CmdletBinding(SupportsShouldProcess = $False)] + param ( + [Parameter(Mandatory = $False, Position = 0)] + [ValidateNotNull()] + [System.Management.Automation.PSObject] + $res = (Get-FunctionResource -AppName ("$($MyInvocation.MyCommand)".Split("-"))[1]) + ) + + # Get the list of downloads + $params = @{ + Uri = $res.Get.Download.Uri + } + $Content = Invoke-EvergreenRestMethod @params + + # Return a releases object to the pipeline + foreach ($Release in $Content.computer.Windows.releases) { + $PSObject = [PSCustomObject] @{ + Version = $Content.computer.Windows.version + Architecture = Get-Architecture -String $Release.build + Checksum = $Release.checksum + URI = $Release.url + } + Write-Output -InputObject $PSObject + } +} diff --git a/Evergreen/Apps/Get-ProtonDrive.ps1 b/Evergreen/Apps/Get-ProtonDrive.ps1 new file mode 100644 index 00000000..f9ca4964 --- /dev/null +++ b/Evergreen/Apps/Get-ProtonDrive.ps1 @@ -0,0 +1,35 @@ +function Get-ProtonDrive { + <# + #> + [OutputType([System.Management.Automation.PSObject])] + [CmdletBinding(SupportsShouldProcess = $False)] + param ( + [Parameter(Mandatory = $false, Position = 0)] + [ValidateNotNull()] + [System.Management.Automation.PSObject] + $res = (Get-FunctionResource -AppName ("$($MyInvocation.MyCommand)".Split("-"))[1]) + ) + + # Read the update source + $params = @{ + Uri = $res.Get.Update.Uri + } + $Updates = Invoke-EvergreenRestMethod @params + + # Sort for the latest version + $LatestVersion = $Updates.Releases | ` + Sort-Object -Property @{ Expression = { [System.Version]$_.Version }; Descending = $true } -ErrorAction "SilentlyContinue" | ` + Select-Object -First 1 + + + # Construct the output; Return the custom object to the pipeline + $PSObject = [PSCustomObject] @{ + Version = $LatestVersion.Version + Date = ConvertTo-DateTime -DateTime $LatestVersion.ReleaseDate -Pattern $res.Get.Update.DatePattern + Release = $LatestVersion.CategoryName + Sha512 = $LatestVersion.File.Sha512CheckSum + Type = Get-FileType -File $LatestVersion.File.Url + URI = $LatestVersion.File.Url + } + Write-Output -InputObject $PSObject +} diff --git a/Evergreen/Apps/Get-SUSERancherDesktop.ps1 b/Evergreen/Apps/Get-SUSERancherDesktop.ps1 new file mode 100644 index 00000000..ef7eff19 --- /dev/null +++ b/Evergreen/Apps/Get-SUSERancherDesktop.ps1 @@ -0,0 +1,24 @@ +function Get-SUSERancherDesktop { + <# + .NOTES + Author: Aaron Parker + Twitter: @stealthpuppy + #> + [OutputType([System.Management.Automation.PSObject])] + [CmdletBinding(SupportsShouldProcess = $False)] + param ( + [Parameter(Mandatory = $False, Position = 0)] + [ValidateNotNull()] + [System.Management.Automation.PSObject] + $res = (Get-FunctionResource -AppName ("$($MyInvocation.MyCommand)".Split("-"))[1]) + ) + + # Pass the repo releases API URL and return a formatted object + $params = @{ + Uri = $res.Get.Uri + MatchVersion = $res.Get.MatchVersion + Filter = $res.Get.MatchFileTypes + } + $object = Get-GitHubRepoRelease @params + Write-Output -InputObject $object +} diff --git a/Evergreen/Apps/Get-ScooterBeyondCompare.ps1 b/Evergreen/Apps/Get-ScooterBeyondCompare.ps1 index 9b8ceb88..0642c371 100644 --- a/Evergreen/Apps/Get-ScooterBeyondCompare.ps1 +++ b/Evergreen/Apps/Get-ScooterBeyondCompare.ps1 @@ -1,4 +1,4 @@ -Function Get-ScooterBeyondCompare { +function Get-ScooterBeyondCompare { <# .SYNOPSIS Returns the latest Beyond Compare and download URL. @@ -10,39 +10,47 @@ [OutputType([System.Management.Automation.PSObject])] [CmdletBinding(SupportsShouldProcess = $False)] param ( - [Parameter(Mandatory = $False, Position = 0)] + [Parameter(Mandatory = $false, Position = 0)] [ValidateNotNull()] [System.Management.Automation.PSObject] $res = (Get-FunctionResource -AppName ("$($MyInvocation.MyCommand)".Split("-"))[1]) ) - ForEach ($language in $res.Get.Uri.GetEnumerator()) { + foreach ($language in $res.Get.Uri.GetEnumerator()) { # Query the Beyond Compare update API - $iwcParams = @{ + $params = @{ Uri = $res.Get.Uri[$language.key] UserAgent = $res.Get.UserAgent } - $Content = Invoke-EvergreenRestMethod @iwcParams + $Content = Invoke-EvergreenRestMethod @params + if ($null -ne $Content) { - # If something is returned - If ($Null -ne $Content) { + if ($Content -is [System.Xml.XmlDocument]) { + $XmlContent = $Content + } + else { + # Normalize the XML content + $Content = $Content -replace "", "" + $XmlContent = New-Object -TypeName "System.Xml.XmlDocument" + $XmlContent.LoadXml($Content) + } # Build an array of the latest release and download URLs - ForEach ($update in $Content.Update) { - + foreach ($Update in $XmlContent.Update) { try { - $version = [RegEx]::Match($update.latestversion, $res.Get.MatchVersion).Captures.Value - $version = "$($version).$($update.latestBuild)" + $Version = [RegEx]::Match($Update.latestVersion, $res.Get.MatchVersion).Captures.Value + $Version = "$($Version).$($Update.latestBuild)" } catch { - $version = $update.latestVersion + $Version = $Update.latestVersion } $PSObject = [PSCustomObject] @{ - Version = $version + Version = $Version Language = $res.Get.Languages[$language.key] - URI = $update.download + Type = Get-FileType -File $Update.download + URI = $Update.download } Write-Output -InputObject $PSObject } diff --git a/Evergreen/Apps/Get-TeraTerm.ps1 b/Evergreen/Apps/Get-TeraTerm.ps1 new file mode 100644 index 00000000..ddd8a757 --- /dev/null +++ b/Evergreen/Apps/Get-TeraTerm.ps1 @@ -0,0 +1,27 @@ +Function Get-TeraTerm { + <# + .SYNOPSIS + Returns the available TeraTerm versions. + + .NOTES + Author: Jasper Metselaar + E-mail: jms@du.se + #> + [OutputType([System.Management.Automation.PSObject])] + [CmdletBinding(SupportsShouldProcess = $False)] + param ( + [Parameter(Mandatory = $False, Position = 0)] + [ValidateNotNull()] + [System.Management.Automation.PSObject] + $res = (Get-FunctionResource -AppName ("$($MyInvocation.MyCommand)".Split("-"))[1]) + ) + + # Pass the repo releases API URL and return a formatted object + $params = @{ + Uri = $res.Get.Uri + MatchVersion = $res.Get.MatchVersion + Filter = $res.Get.MatchFileTypes + } + $object = Get-GitHubRepoRelease @params + Write-Output -InputObject $object +} diff --git a/Evergreen/Manifests/1Password.json b/Evergreen/Manifests/1Password.json index 6d33e4c7..59d28f72 100644 --- a/Evergreen/Manifests/1Password.json +++ b/Evergreen/Manifests/1Password.json @@ -4,7 +4,11 @@ "Get": { "Update": { "Uri": "https://app-updates.agilebits.com/check/2/10.0.2009/x86_64/OPW8/en/80600098/A1/N", - "ContentType": "application/json; charset=utf-8" + "ContentType": "application/json; charset=utf-8", + "CDN": "AgileBits" + }, + "Download": { + "Uri": "https://downloads.1password.com/win/1PasswordSetup-latest.msi" } }, "Install": { diff --git a/Evergreen/Manifests/1PasswordCLI.json b/Evergreen/Manifests/1PasswordCLI.json new file mode 100644 index 00000000..8c679cc0 --- /dev/null +++ b/Evergreen/Manifests/1PasswordCLI.json @@ -0,0 +1,28 @@ +{ + "Name": "1Password CLI", + "Source": "https://developer.1password.com/docs/cli/", + "Get": { + "Update": { + "Uri": "https://app-updates.agilebits.com/check/2/10.0.2009/amd64/CLI2/en/2230/A1/N", + "ContentType": "application/json; charset=utf-8" + }, + "Download": { + "Uri": { + "x64": "https://cache.agilebits.com/dist/1P/op2/pkg/v#version/op_windows_amd64_v#version.zip", + "x86": "https://cache.agilebits.com/dist/1P/op2/pkg/v#version/op_windows_386_v#version.zip" + }, + "ReplaceText": "#version" + } + }, + "Install": { + "Setup": "", + "Physical": { + "Arguments": "", + "PostInstall": [] + }, + "Virtual": { + "Arguments": "", + "PostInstall": [] + } + } +} diff --git a/Evergreen/Manifests/ESETEndpointAntivirus.json b/Evergreen/Manifests/ESETEndpointAntivirus.json index 764e5e89..c76c9f5c 100644 --- a/Evergreen/Manifests/ESETEndpointAntivirus.json +++ b/Evergreen/Manifests/ESETEndpointAntivirus.json @@ -6,7 +6,7 @@ "Uri": "https://repository.eset.com/v1/com/eset/apps/business/eea/windows/metadata", "ContentType": "application/octet-stream", "MatchMetadata": "(?<={)(.*?)(?=}],\"switch\")')).Value)+'}]}", - "OS": "Windows 11, 10" + "OS": "Window*" }, "Download": { "Uri": "https://repository.eset.com/v1/com/eset/apps/business/eea/windows/#file" diff --git a/Evergreen/Manifests/ESETEndpointSecurity.json b/Evergreen/Manifests/ESETEndpointSecurity.json index ee7ad34d..b302a8da 100644 --- a/Evergreen/Manifests/ESETEndpointSecurity.json +++ b/Evergreen/Manifests/ESETEndpointSecurity.json @@ -6,7 +6,7 @@ "Uri": "https://repository.eset.com/v1/com/eset/apps/business/ees/windows/metadata", "ContentType": "application/octet-stream", "MatchMetadata": "(?<={)(.*?)(?=}],\"switch\")')).Value)+'}]}", - "OS": "Windows 11, 10" + "OS": "Windows*" }, "Download": { "Uri": "https://repository.eset.com/v1/com/eset/apps/business/ees/windows/#file" diff --git a/Evergreen/Manifests/ESETFullDiskEncryption.json b/Evergreen/Manifests/ESETFullDiskEncryption.json index 8e1de8f5..f688bd6d 100644 --- a/Evergreen/Manifests/ESETFullDiskEncryption.json +++ b/Evergreen/Manifests/ESETFullDiskEncryption.json @@ -6,7 +6,7 @@ "Uri": "https://repository.eset.com/v1/com/eset/apps/business/efde/windows/metadata", "ContentType": "application/octet-stream", "MatchMetadata": "(?<={)(.*?)(?=}],\"switch\")')).Value)+'}]}", - "OS": "Windows 10, 8, 7" + "OS": "Windows*" }, "Download": { "Uri": "https://repository.eset.com/v1/com/eset/apps/business/efde/windows/#file" diff --git a/Evergreen/Manifests/ESETInspectConnector.json b/Evergreen/Manifests/ESETInspectConnector.json index 6d1eef27..e8f46f24 100644 --- a/Evergreen/Manifests/ESETInspectConnector.json +++ b/Evergreen/Manifests/ESETInspectConnector.json @@ -6,7 +6,7 @@ "Uri": "https://repository.eset.com/v1/com/eset/apps/business/eei/agent/metadata", "ContentType": "application/octet-stream", "MatchMetadata": "(?<={)(.*?)(?=}],\"switch\")')).Value)+'}]}", - "OS": "Windows 11, 10, 8, 7, Windows Server 2022, 2004, 2009, 2019, 2016, 2012 R2, 2012, 2008 R2" + "OS": "Windows*" }, "Download": { "Uri": "https://repository.eset.com/v1/com/eset/apps/business/eei/agent/#file" diff --git a/Evergreen/Manifests/ESETPROTECTServer.json b/Evergreen/Manifests/ESETPROTECTServer.json index fa8dd1bc..36b30799 100644 --- a/Evergreen/Manifests/ESETPROTECTServer.json +++ b/Evergreen/Manifests/ESETPROTECTServer.json @@ -6,7 +6,7 @@ "Uri": "https://repository.eset.com/v1/com/eset/apps/business/era/server/windows/metadata", "ContentType": "application/octet-stream", "MatchMetadata": "(?<={)(.*?)(?=}],\"switch\")')).Value)+'}]}", - "OS": "Windows 11, 10, 8, 7, Windows Server 2022, 2004, 2009, 2019, 2016, 2012 R2, 2012, 2008 R2, 2008" + "OS": "Windows*" }, "Download": { "Uri": "https://repository.eset.com/v1/com/eset/apps/business/era/server/windows/#file" diff --git a/Evergreen/Manifests/ESETSecureAuthentication.json b/Evergreen/Manifests/ESETSecureAuthentication.json index d2350619..90d55cc5 100644 --- a/Evergreen/Manifests/ESETSecureAuthentication.json +++ b/Evergreen/Manifests/ESETSecureAuthentication.json @@ -6,7 +6,7 @@ "Uri": "https://repository.eset.com/v1/com/eset/apps/business/esa/windows/metadata", "ContentType": "application/octet-stream", "MatchMetadata": "(?<={)(.*?)(?=}],\"switch\")')).Value)+'}]}", - "OS": "Windows 11, 10, 8, 7, Windows Server 2022" + "OS": "Windows*" }, "Download": { "Uri": "https://repository.eset.com/v1/com/eset/apps/business/esa/windows/#file" diff --git a/Evergreen/Manifests/ESETServerSecurity.json b/Evergreen/Manifests/ESETServerSecurity.json index bbf90cfd..46309c56 100644 --- a/Evergreen/Manifests/ESETServerSecurity.json +++ b/Evergreen/Manifests/ESETServerSecurity.json @@ -6,7 +6,7 @@ "Uri": "https://repository.eset.com/v1/com/eset/apps/business/efs/windows/metadata", "ContentType": "application/octet-stream", "MatchMetadata": "(?<={)(.*?)(?=}],\"switch\")')).Value)+'}]}", - "OS": "Windows Server" + "OS": "Windows*" }, "Download": { "Uri": "https://repository.eset.com/v1/com/eset/apps/business/efs/windows/#file" diff --git a/Evergreen/Manifests/Flameshot.json b/Evergreen/Manifests/Flameshot.json new file mode 100644 index 00000000..7dc0007d --- /dev/null +++ b/Evergreen/Manifests/Flameshot.json @@ -0,0 +1,21 @@ +{ + "Name": "Flameshot", + "Source": "https://flameshot.org/", + + "Get": { + "Uri": "https://api.github.com/repos/flameshot-org/flameshot/releases/latest", + "MatchVersion": "(\\d+(\\.\\d+){1,4}).*", + "MatchFileTypes": "\\.exe$|\\.msi$|\\.zip$" + }, + "Install": { + "Setup": "", + "Physical": { + "Arguments": "", + "PostInstall": [] + }, + "Virtual": { + "Arguments": "", + "PostInstall": [] + } + } +} diff --git a/Evergreen/Manifests/GrafanaAgent.json b/Evergreen/Manifests/GrafanaAgent.json new file mode 100644 index 00000000..ebb095bf --- /dev/null +++ b/Evergreen/Manifests/GrafanaAgent.json @@ -0,0 +1,23 @@ +{ + "Name": "Grafana Agent", + "Source": "https://grafana.com/docs/agent/", + "Get": { + "Uri": "https://api.github.com/repos/grafana/agent/releases/latest", + "MatchVersion": "(\\d+(\\.\\d+){1,4}).*", + "MatchFileTypes": "\\.exe$|\\.msi$|\\.zip$" + }, + "Install": { + "Setup": "", + "Preinstall": "", + "Physical": { + "Arguments": "", + "PostInstall": [ + ] + }, + "Virtual": { + "Arguments": "", + "PostInstall": [ + ] + } + } +} diff --git a/Evergreen/Manifests/Microsoft365Apps.json b/Evergreen/Manifests/Microsoft365Apps.json index d2c89d24..f1150062 100644 --- a/Evergreen/Manifests/Microsoft365Apps.json +++ b/Evergreen/Manifests/Microsoft365Apps.json @@ -4,43 +4,9 @@ "Get": { "Update": { "Uri": "https://clients.config.office.net/releases/v1.0/OfficeReleases", - "ChannelNames": { - "BetaChannel": "Beta", - "CurrentPreview": "Current Channel (Preview)", - "Current": "Current Channel", - "MonthlyEnterprise": "Monthly Enterprise", - "SemiAnnualPreview": "Semi-Annual Channel Preview", - "SemiAnnual": "Semi-Annual Channel", - "PerpetualVL2021": "Office LTSC 2021 Perpetual Enterprise", - "PerpetualVL2019": "Office 2019 Perpetual Enterprise" - }, + "Channels": "https://config.office.com/api/filelist/channels", "ContentType": "application/json; charset=utf-8", - "DateTime": "MM/dd/yyyy HH:mm" - }, - "Update2": { - "Uri": "https://mrodevicemgr.officeapps.live.com/mrodevicemgrsvc/api/v2/C2RReleaseData?audienceFFN=", - "Channels": { - "BetaChannel": "5440fd1f-7ecb-4221-8110-145efaa6372f", - "CurrentPreview": "64256afe-f5d9-4f86-8936-8840a6a4f5be", - "Current": "492350f6-3a01-4f97-b9c0-c7c6ddf67d60", - "MonthlyEnterprise": "55336b82-a18d-4dd6-b5f6-9e5095c314a6", - "SemiAnnualPreview": "b8f9b850-328d-4355-9145-c59439a0c4cf", - "SemiAnnual": "7ffbc6bf-bc32-4f92-8982-f9dd17fd3114", - "PerpetualVL2021": "5030841d-c919-4594-8d2d-84ae4f96e58e", - "PerpetualVL2019": "f2e724c1-748f-4b47-8fb8-8e0d210e9208" - }, - "ChannelNames": { - "BetaChannel": "Beta", - "CurrentPreview": "Current Channel (Preview)", - "Current": "Current Channel", - "MonthlyEnterprise": "Monthly Enterprise", - "SemiAnnualPreview": "Semi-Annual Channel Preview", - "SemiAnnual": "Semi-Annual Channel", - "PerpetualVL2021": "Office LTSC 2021 Perpetual Enterprise", - "PerpetualVL2019": "Office 2019 Perpetual Enterprise" - }, - "ContentType": "application/json; charset=utf-8", - "DateTime": "MM/dd/yyyy HH:mm" + "DateTime": "dd/MM/yyyy HH:mm:ss a" }, "Download": { "Uri": "https://officecdn.microsoft.com/pr/wsus/setup.exe" diff --git a/Evergreen/Manifests/MicrosoftSsms.json b/Evergreen/Manifests/MicrosoftSsms.json index e8dac503..b26c8a0f 100644 --- a/Evergreen/Manifests/MicrosoftSsms.json +++ b/Evergreen/Manifests/MicrosoftSsms.json @@ -3,7 +3,7 @@ "Source": "https://go.microsoft.com/fwlink/?LinkId=531355", "Get": { "Update": { - "Uri": "https://go.microsoft.com/fwlink/?linkid=2251965", + "Uri": "https://go.microsoft.com/fwlink/?linkid=2264111", "DatePattern": "yyyy-MM-ddTHH:mm:ss" }, "Download": { diff --git a/Evergreen/Manifests/MicrosoftTeams.json b/Evergreen/Manifests/MicrosoftTeams.json index 99c276fb..9133929d 100644 --- a/Evergreen/Manifests/MicrosoftTeams.json +++ b/Evergreen/Manifests/MicrosoftTeams.json @@ -1,53 +1,36 @@ { - "Name": "Microsoft Teams", + "Name": "Microsoft Teams (new)", "Source": "https://www.microsoft.com/teams", "Get": { "Update": { - "Uri": "https://teams.microsoft.com/package/desktopclient/update/1.2.00.32462/windows/x64?ring=#ring", + "Uri": "https://config.teams.microsoft.com/config/v1/MicrosoftTeams/1415_1.0.0.0?environment=prod&audienceGroup=general&teamsRing=general&agent=TeamsBuilds", "ContentType": "application/json; charset=utf-8", - "UserAgent": "Mozilla/5.0 (Windows NT 6.1; WOW64) SkypeUriPreview Preview/0.5", - "MatchVersion": "(\\d+(\\.\\d+){1,4}).*", - "Rings": { - "General": "general", - "ITAdmins": "ring1_5", - "DeveloperPartners": "ring1_6", - "Dogfood": "ring2", - "TAP": "ring3", - "Preview": "ring3_6", - "OuterRing": "ring3_9", - "Public": "ring4" - }, - "ReplaceText": "#ring" + "Releases": { + "Consumer": "WebView2", + "Enterprise": "WebView2Canary" + } }, "Download": { - "Uri": "https://teams.microsoft.com/desktopclient/installer/windows/#architecture?ring=#ring", "Architecture": [ "x64", - "x32", + "x86", "arm64" ], - "ReplaceText": { - "architecture": "#architecture", - "ring": "#ring" - }, - "Extensions": [ - ".exe", - ".msi" + "Exclude": [ + "macOS" ] } }, "Install": { - "Setup": "Teams*.msi", + "Setup": "", "Physical": { "Arguments": "", "PostInstall": [ - "Remove-Item -Path \"$env:Public\\Desktop\\Microsoft Teams.lnk\" -Force -ErrorAction \"SilentlyContinue\"" ] }, "Virtual": { - "Arguments": "ALLUSER=1 ALLUSERS=1", + "Arguments": "", "PostInstall": [ - "Remove-Item -Path \"$env:Public\\Desktop\\Microsoft Teams.lnk\" -Force -ErrorAction \"SilentlyContinue\"" ] } } diff --git a/Evergreen/Manifests/MicrosoftTeamsClassic.json b/Evergreen/Manifests/MicrosoftTeamsClassic.json new file mode 100644 index 00000000..68e81495 --- /dev/null +++ b/Evergreen/Manifests/MicrosoftTeamsClassic.json @@ -0,0 +1,54 @@ +{ + "Name": "Microsoft Teams (classic)", + "Source": "https://www.microsoft.com/teams", + "Get": { + "Update": { + "Uri": "https://teams.microsoft.com/package/desktopclient/update/1.2.00.32462/windows/x64?ring=#ring", + "ContentType": "application/json; charset=utf-8", + "UserAgent": "Mozilla/5.0 (Windows NT 6.1; WOW64) SkypeUriPreview Preview/0.5", + "MatchVersion": "(\\d+(\\.\\d+){1,4}).*", + "Rings": { + "General": "general", + "ITAdmins": "ring1_5", + "DeveloperPartners": "ring1_6", + "Dogfood": "ring2", + "TAP": "ring3", + "Preview": "ring3_6", + "OuterRing": "ring3_9", + "Public": "ring4" + }, + "ReplaceText": "#ring" + }, + "Download": { + "Uri": "https://teams.microsoft.com/desktopclient/installer/windows/#architecture?ring=#ring", + "Architecture": [ + "x64", + "x32", + "arm64" + ], + "ReplaceText": { + "architecture": "#architecture", + "ring": "#ring" + }, + "Extensions": [ + ".exe", + ".msi" + ] + } + }, + "Install": { + "Setup": "Teams*.msi", + "Physical": { + "Arguments": "", + "PostInstall": [ + "Remove-Item -Path \"$env:Public\\Desktop\\Microsoft Teams.lnk\" -Force -ErrorAction \"SilentlyContinue\"" + ] + }, + "Virtual": { + "Arguments": "ALLUSER=1 ALLUSERS=1", + "PostInstall": [ + "Remove-Item -Path \"$env:Public\\Desktop\\Microsoft Teams.lnk\" -Force -ErrorAction \"SilentlyContinue\"" + ] + } + } +} \ No newline at end of file diff --git a/Evergreen/Manifests/MicrosoftTeamsPreview.json b/Evergreen/Manifests/MicrosoftTeamsPreview.json deleted file mode 100644 index c9b949c2..00000000 --- a/Evergreen/Manifests/MicrosoftTeamsPreview.json +++ /dev/null @@ -1,34 +0,0 @@ -{ - "Name": "Microsoft Teams 2 Preview", - "Source": "https://www.microsoft.com/teams", - "Get": { - "Update": { - "Uri": "https://config.teams.microsoft.com/config/v1/MicrosoftTeams/1415_1.0.0.0?environment=prod&audienceGroup=general&teamsRing=general&agent=TeamsBuilds", - "ContentType": "application/json; charset=utf-8", - "Releases": { - "Consumer": "WebView2", - "Enterprise": "WebView2Canary" - } - }, - "Download": { - "Architecture": [ - "x64", - "x86", - "arm64" - ] - } - }, - "Install": { - "Setup": "", - "Physical": { - "Arguments": "", - "PostInstall": [ - ] - }, - "Virtual": { - "Arguments": "", - "PostInstall": [ - ] - } - } -} \ No newline at end of file diff --git a/Evergreen/Manifests/PlexDesktop.json b/Evergreen/Manifests/PlexDesktop.json new file mode 100644 index 00000000..9c65d0c4 --- /dev/null +++ b/Evergreen/Manifests/PlexDesktop.json @@ -0,0 +1,22 @@ +{ + "Name": "Plex Media Desktop", + "Source": "https://www.plex.tv/media-server-downloads/", + "Get": { + "Update": { + }, + "Download": { + "Uri": "https://plex.tv/api/downloads/6.json" + } + }, + "Install": { + "Setup": "", + "Physical": { + "Arguments": "", + "PostInstall": [] + }, + "Virtual": { + "Arguments": "", + "PostInstall": [] + } + } +} diff --git a/Evergreen/Manifests/PlexHTPC.json b/Evergreen/Manifests/PlexHTPC.json new file mode 100644 index 00000000..3023e503 --- /dev/null +++ b/Evergreen/Manifests/PlexHTPC.json @@ -0,0 +1,22 @@ +{ + "Name": "Plex HTPC", + "Source": "https://www.plex.tv/media-server-downloads/", + "Get": { + "Update": { + }, + "Download": { + "Uri": "https://plex.tv/api/downloads/7.json" + } + }, + "Install": { + "Setup": "", + "Physical": { + "Arguments": "", + "PostInstall": [] + }, + "Virtual": { + "Arguments": "", + "PostInstall": [] + } + } +} diff --git a/Evergreen/Manifests/PlexMediaServer.json b/Evergreen/Manifests/PlexMediaServer.json new file mode 100644 index 00000000..9649c7c6 --- /dev/null +++ b/Evergreen/Manifests/PlexMediaServer.json @@ -0,0 +1,22 @@ +{ + "Name": "Plex Media ServerDesktop", + "Source": "https://www.plex.tv/media-server-downloads/", + "Get": { + "Update": { + }, + "Download": { + "Uri": "https://plex.tv/api/downloads/5.json" + } + }, + "Install": { + "Setup": "", + "Physical": { + "Arguments": "", + "PostInstall": [] + }, + "Virtual": { + "Arguments": "", + "PostInstall": [] + } + } +} diff --git a/Evergreen/Manifests/ProtonDrive.json b/Evergreen/Manifests/ProtonDrive.json new file mode 100644 index 00000000..e8c2e2e0 --- /dev/null +++ b/Evergreen/Manifests/ProtonDrive.json @@ -0,0 +1,21 @@ +{ + "Name": "Proton Drive", + "Source": "https://proton.me/drive/", + "Get": { + "Update": { + "Uri": "https://proton.me/download/drive/windows/version.json", + "DatePattern": "yyyy-MM-dd" + } + }, + "Install": { + "Setup": "", + "Physical": { + "Arguments": "", + "PostInstall": [] + }, + "Virtual": { + "Arguments": "", + "PostInstall": [] + } + } +} \ No newline at end of file diff --git a/Evergreen/Manifests/ProtonVPN.json b/Evergreen/Manifests/ProtonVPN.json index 1f454655..d876a536 100644 --- a/Evergreen/Manifests/ProtonVPN.json +++ b/Evergreen/Manifests/ProtonVPN.json @@ -1,5 +1,5 @@ { - "Name": "ProtonVPN", + "Name": "Proton VPN", "Source": "https://protonvpn.com/", "Get": { "Uri": "https://api.github.com/repos/ProtonVPN/win-app/releases/latest", diff --git a/Evergreen/Manifests/SUSERancherDesktop.json b/Evergreen/Manifests/SUSERancherDesktop.json new file mode 100644 index 00000000..9375cdc7 --- /dev/null +++ b/Evergreen/Manifests/SUSERancherDesktop.json @@ -0,0 +1,23 @@ +{ + "Name": "SUSE Rancher Desktop", + "Source": "https://rancherdesktop.io/", + "Get": { + "Uri": "https://api.github.com/repos/rancher-sandbox/rancher-desktop/releases/latest", + "MatchVersion": "(\\d+(\\.\\d+){1,4}).*", + "MatchFileTypes": "\\.exe$|\\.msi$" + }, + "Install": { + "Setup": "", + "Preinstall": "", + "Physical": { + "Arguments": "", + "PostInstall": [ + ] + }, + "Virtual": { + "Arguments": "", + "PostInstall": [ + ] + } + } +} diff --git a/Evergreen/Manifests/TeraTerm.json b/Evergreen/Manifests/TeraTerm.json new file mode 100644 index 00000000..c8db938d --- /dev/null +++ b/Evergreen/Manifests/TeraTerm.json @@ -0,0 +1,21 @@ +{ + "Name": "TeraTerm", + "Source": "https://teratermproject.github.io/index-en.html", + + "Get": { + "Uri": "https://api.github.com/repos/TeraTermProject/teraterm/releases/latest", + "MatchVersion": "(\\d+(\\.\\d+){1,4}).*", + "MatchFileTypes": "teraterm-.*(?