$scriptName = "Start Vivaldi"
$scriptVersion = "0.5"
#This script checks if a new version of Vivaldi is available.
#If so, it starts Vivaldi outside the sandbox so it can update.
#Otherwise it will start it in the sandbox.
#Required PowerShell version: 5 (later version are not supported)
#Modify this path to point to where vivaldi.exe is installed:
$vivaldiExePath = "C:\Users\Techie\AppData\Local\Vivaldi\Application\vivaldi.exe"
if(-not (Test-Path -Path $vivaldiExePath))
{
Write-Host "Failed to find $($vivaldiExePath)."
Write-Host "Press Enter to exit."
Read-Host
exit
}
$sandboxieStartExePath = "C:\Program Files\Sandboxie-Plus\Start.exe"
if(-not (Test-Path -Path $sandboxieStartExePath))
{
Write-Host "Failed to find $($sandboxieStartExePath)."
Write-Host "Press Enter to exit."
Read-Host
exit
}
$vivaldiExeVersion = (Get-Item $vivaldiExePath).VersionInfo.FileVersion
Write-Host "Currently installed Vivaldi version: $($vivaldiExeVersion)"
$sandboxieStartExeArgumentsDisableForce = "/disable_force $($vivaldiExePath)"
$sandboxieStartExeArgumentsEnableForce = "$($vivaldiExePath)"
$vivaldiUri = "https://vivaldi.com/blog/"
try
{
Write-Host "Checking for updates on $vivaldiUri."
$webResponse = Invoke-WebRequest -Uri $vivaldiUri
}
catch
{
Write-Host "Failed to check for updates."
Write-Host "Failed to connect to $($vivaldiUri)."
Write-Host "Error: $($PSItem)"
Write-Host "Starting Vivaldi sandboxed."
Start-Sleep -Seconds 4
Start-Process $sandboxieStartExePath -ArgumentList $sandboxieStartExeArgumentsEnableForce
exit
}
foreach($link in $webResponse.Links)
{
if($link.href.contains("https://vivaldi.com/download/"))
{
$webVersion = $link.innerText -replace "Stable - ", "" -replace " \(", "." -replace "\)", ""
if($vivaldiExeVersion -ne $webVersion)
{
Write-Host "A new version is available: $($webVersion)"
Write-host "Starting Vivaldi unsandboxed to install the update."
Write-Host "Please wait and then click on `"Restart Required`" > `"Restart`" in Vivaldi."
Write-Host "Wait for it to restart and then close it."
Write-Host "Press Enter to continue."
Read-Host
Start-Process -Wait $sandboxieStartExePath -ArgumentList $sandboxieStartExeArgumentsDisableForce
Write-Host "Update installed."
Write-Host "Starting Vivaldi sandboxed."
Start-Sleep -Seconds 4
Start-Process $sandboxieStartExePath -ArgumentList $sandboxieStartExeArgumentsEnableForce
exit
}
else
{
Write-host "The installed version is up-to-date."
Write-Host "Starting Vivaldi standboxed."
Start-Process $sandboxieStartExePath -ArgumentList $sandboxieStartExeArgumentsEnableForce
exit
}
}
}
Write-Host "Failed to check for updates."
Write-Host "Couldn't locate the latest version number on $($vivaldiUri)."
Write-Host "Starting Vivaldi sandboxed."
Start-Sleep -Seconds 4
Start-Process $sandboxieStartExePath -ArgumentList $sandboxieStartExeArgumentsEnableForce