diff --git a/ee/maintained-apps/outputs/1password/windows.json b/ee/maintained-apps/outputs/1password/windows.json index 665e9002818..f25921d82b1 100644 --- a/ee/maintained-apps/outputs/1password/windows.json +++ b/ee/maintained-apps/outputs/1password/windows.json @@ -1,22 +1,22 @@ { "versions": [ { - "version": "8.12.24", + "version": "8.12.28", "queries": { "exists": "SELECT 1 FROM programs WHERE name = '1Password' AND publisher = 'Agilebits Inc.';", - "patched": "SELECT 1 WHERE NOT EXISTS (SELECT 1 FROM programs WHERE name = '1Password' AND publisher = 'Agilebits Inc.' AND version_compare(version, '8.12.24') < 0);" + "patched": "SELECT 1 WHERE NOT EXISTS (SELECT 1 FROM programs WHERE name = '1Password' AND publisher = 'Agilebits Inc.' AND version_compare(version, '8.12.28') < 0);" }, - "installer_url": "https://c.1password.com/dist/1P/win8/1PasswordSetup-8.12.24.msi", + "installer_url": "https://c.1password.com/dist/1P/win8/1PasswordSetup-8.12.28.msi", "install_script_ref": "8959087b", - "uninstall_script_ref": "eeb3b3d3", - "sha256": "d685551fc9769b68ae5ad68365abf609124f232fe4b313d87288fe89f3bb6813", + "uninstall_script_ref": "3ea05247", + "sha256": "c7fd4808fba19af902584551b0aac92b9cf16542ede546fbe42d65e286abde90", "default_categories": [ "Productivity" ] } ], "refs": { - "8959087b": "$logFile = \"${env:TEMP}/fleet-install-software.log\"\n\ntry {\n\n$installProcess = Start-Process msiexec.exe `\n -ArgumentList \"/quiet /norestart /lv ${logFile} /i `\"${env:INSTALLER_PATH}`\"\" `\n -PassThru -Verb RunAs -Wait\n\nGet-Content $logFile -Tail 500\n\nExit $installProcess.ExitCode\n\n} catch {\n Write-Host \"Error: $_\"\n Exit 1\n}\n", - "eeb3b3d3": "# 1Password Uninstall Script\n# Closes running processes before uninstalling to prevent hangs\n\n$product_code = '{D56E499A-302F-403E-A362-450BCE7AD94F}'\n$timeoutSeconds = 300 # 5 minute timeout\n\n# Close any running 1Password processes\nGet-Process -Name \"1Password*\" -ErrorAction SilentlyContinue | Stop-Process -Force -ErrorAction SilentlyContinue\nStart-Sleep -Seconds 2\n\n# Fleet uninstalls app using product code that's extracted on upload\n$process = Start-Process msiexec -ArgumentList @(\"/quiet\", \"/x\", $product_code, \"/norestart\") -PassThru\n\n# Wait for process with timeout\n$completed = $process.WaitForExit($timeoutSeconds * 1000)\n\nif (-not $completed) {\n Stop-Process -Id $process.Id -Force -ErrorAction SilentlyContinue\n Exit 1603 # ERROR_INSTALL_FAILURE\n}\n\n# Check exit code and output result\nif ($process.ExitCode -eq 0) {\n Write-Output \"Exit 0\"\n Exit 0\n} else {\n Write-Output \"Exit $($process.ExitCode)\"\n Exit $process.ExitCode\n}\n\n" + "3ea05247": "# 1Password Uninstall Script\n# Closes running processes before uninstalling to prevent hangs\n\n$product_code = '{C1935B55-A897-4171-B3EE-07E47C886A94}'\n$timeoutSeconds = 300 # 5 minute timeout\n\n# Close any running 1Password processes\nGet-Process -Name \"1Password*\" -ErrorAction SilentlyContinue | Stop-Process -Force -ErrorAction SilentlyContinue\nStart-Sleep -Seconds 2\n\n# Fleet uninstalls app using product code that's extracted on upload\n$process = Start-Process msiexec -ArgumentList @(\"/quiet\", \"/x\", $product_code, \"/norestart\") -PassThru\n\n# Wait for process with timeout\n$completed = $process.WaitForExit($timeoutSeconds * 1000)\n\nif (-not $completed) {\n Stop-Process -Id $process.Id -Force -ErrorAction SilentlyContinue\n Exit 1603 # ERROR_INSTALL_FAILURE\n}\n\n# Check exit code and output result\nif ($process.ExitCode -eq 0) {\n Write-Output \"Exit 0\"\n Exit 0\n} else {\n Write-Output \"Exit $($process.ExitCode)\"\n Exit $process.ExitCode\n}\n\n", + "8959087b": "$logFile = \"${env:TEMP}/fleet-install-software.log\"\n\ntry {\n\n$installProcess = Start-Process msiexec.exe `\n -ArgumentList \"/quiet /norestart /lv ${logFile} /i `\"${env:INSTALLER_PATH}`\"\" `\n -PassThru -Verb RunAs -Wait\n\nGet-Content $logFile -Tail 500\n\nExit $installProcess.ExitCode\n\n} catch {\n Write-Host \"Error: $_\"\n Exit 1\n}\n" } } diff --git a/ee/maintained-apps/outputs/3df-zephyr-free/windows.json b/ee/maintained-apps/outputs/3df-zephyr-free/windows.json index 9df23e3383c..7fda1ea6828 100644 --- a/ee/maintained-apps/outputs/3df-zephyr-free/windows.json +++ b/ee/maintained-apps/outputs/3df-zephyr-free/windows.json @@ -1,15 +1,15 @@ { "versions": [ { - "version": "8.038", + "version": "9.000", "queries": { "exists": "SELECT 1 FROM programs WHERE name LIKE '3DF Zephyr Free %' AND publisher = '3Dflow srl';", - "patched": "SELECT 1 WHERE NOT EXISTS (SELECT 1 FROM programs WHERE name LIKE '3DF Zephyr Free %' AND publisher = '3Dflow srl' AND version_compare(version, '8.038') < 0);" + "patched": "SELECT 1 WHERE NOT EXISTS (SELECT 1 FROM programs WHERE name LIKE '3DF Zephyr Free %' AND publisher = '3Dflow srl' AND version_compare(version, '9.000') < 0);" }, - "installer_url": "https://3df-eu.fra1.digitaloceanspaces.com/8.038/3DF%20Zephyr%20Free%20v8.038%20(x64).exe", + "installer_url": "https://3df-eu.fra1.digitaloceanspaces.com/9.000/3DF%20Zephyr%20Free%20v9.000%20(x64).exe", "install_script_ref": "df7f059c", "uninstall_script_ref": "740ec2ac", - "sha256": "1feb9e00eea123914f0705349185225d612e7d7204bf112b31d3b0c4d71f9838", + "sha256": "35e4dc6596149cc92ce63ac3074798f38184bb8ef4d72b081cf53bcc31b84c2c", "default_categories": [ "Productivity" ] diff --git a/ee/maintained-apps/outputs/affinity/windows.json b/ee/maintained-apps/outputs/affinity/windows.json index d54ba07d9c0..4f33faeddb9 100644 --- a/ee/maintained-apps/outputs/affinity/windows.json +++ b/ee/maintained-apps/outputs/affinity/windows.json @@ -1,15 +1,15 @@ { "versions": [ { - "version": "3.2.2.4557", + "version": "3.2.3.4646", "queries": { "exists": "SELECT 1 FROM programs WHERE name = 'Affinity' AND publisher = 'Canva';", - "patched": "SELECT 1 WHERE NOT EXISTS (SELECT 1 FROM programs WHERE name = 'Affinity' AND publisher = 'Canva' AND version_compare(version, '3.2.2.4557') < 0);" + "patched": "SELECT 1 WHERE NOT EXISTS (SELECT 1 FROM programs WHERE name = 'Affinity' AND publisher = 'Canva' AND version_compare(version, '3.2.3.4646') < 0);" }, - "installer_url": "https://affinity-update.serif.com/windows/3/studio/retail/Affinity-Affinity-Store-x64-4557-edef263cf88fb866afb3d227aef39230812deabc.msix", + "installer_url": "https://affinity-update.serif.com/windows/3/studio/retail/Affinity-Affinity-Store-x64-4646-3a9aed7b269d9fec6fddc78dd56847089f173fe7.msix", "install_script_ref": "9e9c1496", "uninstall_script_ref": "bde90d3c", - "sha256": "b15df22e96582de73bef487f202d063e884ff6c38d3699fabae96cc3988a049d", + "sha256": "d3baa74d30b7b41655651e6ea58a505a1bafeb33ec7576d52e625c147bae164c", "default_categories": [ "Productivity" ] diff --git a/ee/maintained-apps/outputs/asana/windows.json b/ee/maintained-apps/outputs/asana/windows.json index 05d65dbaa44..61a30c2af38 100644 --- a/ee/maintained-apps/outputs/asana/windows.json +++ b/ee/maintained-apps/outputs/asana/windows.json @@ -1,15 +1,15 @@ { "versions": [ { - "version": "2.7.1", + "version": "2.7.2", "queries": { "exists": "SELECT 1 FROM programs WHERE name = 'Asana' AND publisher = 'Asana, Inc.';", - "patched": "SELECT 1 WHERE NOT EXISTS (SELECT 1 FROM programs WHERE name = 'Asana' AND publisher = 'Asana, Inc.' AND version_compare(version, '2.7.1') < 0);" + "patched": "SELECT 1 WHERE NOT EXISTS (SELECT 1 FROM programs WHERE name = 'Asana' AND publisher = 'Asana, Inc.' AND version_compare(version, '2.7.2') < 0);" }, - "installer_url": "https://desktop-downloads.asana.com/win32_x64/prod/v2.7.1/AsanaSetup.exe", + "installer_url": "https://desktop-downloads.asana.com/win32_x64/prod/v2.7.2/AsanaSetup.exe", "install_script_ref": "7d7fdd9d", "uninstall_script_ref": "223f54f6", - "sha256": "33f5df50e930f38f05ffc4ff298adc2084f3254407f40101982b83c6d2ddd1d6", + "sha256": "9f5778c5bf886ce66c51a7719ab41bd91ad74e8f8735496843ead7bdc47030ff", "default_categories": [ "Productivity" ] diff --git a/ee/maintained-apps/outputs/audiveris/windows.json b/ee/maintained-apps/outputs/audiveris/windows.json index 7cf22bc3e53..70846113caa 100644 --- a/ee/maintained-apps/outputs/audiveris/windows.json +++ b/ee/maintained-apps/outputs/audiveris/windows.json @@ -1,22 +1,22 @@ { "versions": [ { - "version": "5.10.2", + "version": "5.11.0", "queries": { "exists": "SELECT 1 FROM programs WHERE name = 'Audiveris' AND publisher = 'audiveris.org';", - "patched": "SELECT 1 WHERE NOT EXISTS (SELECT 1 FROM programs WHERE name = 'Audiveris' AND publisher = 'audiveris.org' AND version_compare(version, '5.10.2') < 0);" + "patched": "SELECT 1 WHERE NOT EXISTS (SELECT 1 FROM programs WHERE name = 'Audiveris' AND publisher = 'audiveris.org' AND version_compare(version, '5.11.0') < 0);" }, - "installer_url": "https://github.com/Audiveris/audiveris/releases/download/5.10.2/Audiveris-5.10.2-windows-x86_64.msi", + "installer_url": "https://github.com/Audiveris/audiveris/releases/download/5.11.0/Audiveris-5.11.0-windows-x86_64.msi", "install_script_ref": "8959087b", - "uninstall_script_ref": "2039c645", - "sha256": "f321cbbfce3be0beb292129b76532373877a0586dd784977691b2deddc7d2f84", + "uninstall_script_ref": "181cdfd6", + "sha256": "ac221b0d39a90e32b7f43dbf9f5d5a45ff8b5424076af21b65278955688dac71", "default_categories": [ "Productivity" ] } ], "refs": { - "2039c645": "$product_code = '{43302F62-B1D7-3B3A-93A0-7C6C7A5D6F6F}'\n$timeoutSeconds = 300 # 5 minute timeout\n\n# Fleet uninstalls app using product code that's extracted on upload\n$process = Start-Process msiexec -ArgumentList @(\"/quiet\", \"/x\", $product_code, \"/norestart\") -PassThru\n\n# Wait for process with timeout\n$completed = $process.WaitForExit($timeoutSeconds * 1000)\n\nif (-not $completed) {\n Stop-Process -Id $process.Id -Force -ErrorAction SilentlyContinue\n Exit 1603 # ERROR_UNINSTALL_FAILURE\n}\n\n# MSI exit codes that indicate success. 3010 = ERROR_SUCCESS_REBOOT_REQUIRED,\n# 1641 = ERROR_SUCCESS_REBOOT_INITIATED. Treat these as success rather than failure.\n$successCodes = @(0, 3010, 1641)\n\n# Check exit code and output result\nif ($successCodes -contains $process.ExitCode) {\n Write-Output \"Exit 0\"\n Exit 0\n} else {\n Write-Output \"Exit $($process.ExitCode)\"\n Exit $process.ExitCode\n}\n", + "181cdfd6": "$product_code = '{E5BDDBBE-4DF2-39DE-8631-36D84D86B102}'\n$timeoutSeconds = 300 # 5 minute timeout\n\n# Fleet uninstalls app using product code that's extracted on upload\n$process = Start-Process msiexec -ArgumentList @(\"/quiet\", \"/x\", $product_code, \"/norestart\") -PassThru\n\n# Wait for process with timeout\n$completed = $process.WaitForExit($timeoutSeconds * 1000)\n\nif (-not $completed) {\n Stop-Process -Id $process.Id -Force -ErrorAction SilentlyContinue\n Exit 1603 # ERROR_UNINSTALL_FAILURE\n}\n\n# MSI exit codes that indicate success. 3010 = ERROR_SUCCESS_REBOOT_REQUIRED,\n# 1641 = ERROR_SUCCESS_REBOOT_INITIATED. Treat these as success rather than failure.\n$successCodes = @(0, 3010, 1641)\n\n# Check exit code and output result\nif ($successCodes -contains $process.ExitCode) {\n Write-Output \"Exit 0\"\n Exit 0\n} else {\n Write-Output \"Exit $($process.ExitCode)\"\n Exit $process.ExitCode\n}\n", "8959087b": "$logFile = \"${env:TEMP}/fleet-install-software.log\"\n\ntry {\n\n$installProcess = Start-Process msiexec.exe `\n -ArgumentList \"/quiet /norestart /lv ${logFile} /i `\"${env:INSTALLER_PATH}`\"\" `\n -PassThru -Verb RunAs -Wait\n\nGet-Content $logFile -Tail 500\n\nExit $installProcess.ExitCode\n\n} catch {\n Write-Host \"Error: $_\"\n Exit 1\n}\n" } } diff --git a/ee/maintained-apps/outputs/aws-cli/windows.json b/ee/maintained-apps/outputs/aws-cli/windows.json index ecfd224b6bb..5a94518bf26 100644 --- a/ee/maintained-apps/outputs/aws-cli/windows.json +++ b/ee/maintained-apps/outputs/aws-cli/windows.json @@ -1,15 +1,15 @@ { "versions": [ { - "version": "2.35.20", + "version": "2.35.23", "queries": { "exists": "SELECT 1 FROM programs WHERE name LIKE 'AWS Command Line Interface v2 %' AND publisher = 'Amazon Web Services';", - "patched": "SELECT 1 WHERE NOT EXISTS (SELECT 1 FROM programs WHERE name LIKE 'AWS Command Line Interface v2 %' AND publisher = 'Amazon Web Services' AND version_compare(version, '2.35.20') < 0);" + "patched": "SELECT 1 WHERE NOT EXISTS (SELECT 1 FROM programs WHERE name LIKE 'AWS Command Line Interface v2 %' AND publisher = 'Amazon Web Services' AND version_compare(version, '2.35.23') < 0);" }, - "installer_url": "https://awscli.amazonaws.com/AWSCLIV2-2.35.20.msi", + "installer_url": "https://awscli.amazonaws.com/AWSCLIV2-2.35.23.msi", "install_script_ref": "8959087b", "uninstall_script_ref": "58bcd016", - "sha256": "5bb6bd02a8e4ad024af889a992ed126fa0f85d5b972a6779c821c3af8b1ee60d", + "sha256": "b2c9fb3fdb37250807610c0bd2425a9529dc0137c97e8dc6ef98b7302eecc062", "default_categories": [ "Developer tools" ], diff --git a/ee/maintained-apps/outputs/bandiview/windows.json b/ee/maintained-apps/outputs/bandiview/windows.json index 970458818d0..fb9de93ffa3 100644 --- a/ee/maintained-apps/outputs/bandiview/windows.json +++ b/ee/maintained-apps/outputs/bandiview/windows.json @@ -1,10 +1,10 @@ { "versions": [ { - "version": "7.27", + "version": "7.28", "queries": { "exists": "SELECT 1 FROM programs WHERE name = 'BandiView' AND publisher = 'Bandisoft.com';", - "patched": "SELECT 1 WHERE NOT EXISTS (SELECT 1 FROM programs WHERE name = 'BandiView' AND publisher = 'Bandisoft.com' AND version_compare(version, '7.27') < 0);" + "patched": "SELECT 1 WHERE NOT EXISTS (SELECT 1 FROM programs WHERE name = 'BandiView' AND publisher = 'Bandisoft.com' AND version_compare(version, '7.28') < 0);" }, "installer_url": "https://bandisoft.app/bandiview/BANDIVIEW-SETUP-X64.EXE", "install_script_ref": "207f864e", diff --git a/ee/maintained-apps/outputs/bbedit/darwin.json b/ee/maintained-apps/outputs/bbedit/darwin.json index 37c6a0d98a7..9715f146086 100644 --- a/ee/maintained-apps/outputs/bbedit/darwin.json +++ b/ee/maintained-apps/outputs/bbedit/darwin.json @@ -1,15 +1,15 @@ { "versions": [ { - "version": "16.0.1", + "version": "16.0.2", "queries": { "exists": "SELECT 1 FROM apps WHERE bundle_identifier = 'com.barebones.bbedit';", - "patched": "SELECT 1 WHERE NOT EXISTS (SELECT 1 FROM apps WHERE bundle_identifier = 'com.barebones.bbedit' AND version_compare(bundle_short_version, '16.0.1') < 0);" + "patched": "SELECT 1 WHERE NOT EXISTS (SELECT 1 FROM apps WHERE bundle_identifier = 'com.barebones.bbedit' AND version_compare(bundle_short_version, '16.0.2') < 0);" }, - "installer_url": "https://s3.amazonaws.com/BBSW-download/BBEdit_16.0.1.dmg", + "installer_url": "https://s3.amazonaws.com/BBSW-download/BBEdit_16.0.2.dmg", "install_script_ref": "b133b44e", "uninstall_script_ref": "45bbb2ec", - "sha256": "e4ac925a2fecf4ed6f3d5b18bd77e223d1323994724adcb2fec764c984d6f689", + "sha256": "f63367b675245752bd6c74072bef840288444d04fc582f9a382112daa61b8874", "default_categories": [ "Developer tools" ] diff --git a/ee/maintained-apps/outputs/box-drive/windows.json b/ee/maintained-apps/outputs/box-drive/windows.json index 86afe6a5ed1..167a5a59341 100644 --- a/ee/maintained-apps/outputs/box-drive/windows.json +++ b/ee/maintained-apps/outputs/box-drive/windows.json @@ -1,15 +1,15 @@ { "versions": [ { - "version": "2.51.234", + "version": "2.52.315", "queries": { "exists": "SELECT 1 FROM programs WHERE name = 'Box' AND publisher = 'Box, Inc.';", - "patched": "SELECT 1 WHERE NOT EXISTS (SELECT 1 FROM programs WHERE name = 'Box' AND publisher = 'Box, Inc.' AND version_compare(version, '2.51.234') < 0);" + "patched": "SELECT 1 WHERE NOT EXISTS (SELECT 1 FROM programs WHERE name = 'Box' AND publisher = 'Box, Inc.' AND version_compare(version, '2.52.315') < 0);" }, - "installer_url": "https://e3.boxcdn.net/desktop/releases/win/BoxDrive-2.51.234.msi", + "installer_url": "https://e3.boxcdn.net/desktop/releases/win/BoxDrive-2.52.315.msi", "install_script_ref": "8959087b", "uninstall_script_ref": "13b5870c", - "sha256": "b45ed2dc6cd1ecfa901a93fbc9cb8b14d0ae77e486a3d40ef13d744bb2f2b840", + "sha256": "4033df7aa7533cd907bc2bfeeed0b05f3842f04cf40f343136eea19381acaa0e", "default_categories": [ "Productivity" ], diff --git a/ee/maintained-apps/outputs/brave-browser/darwin.json b/ee/maintained-apps/outputs/brave-browser/darwin.json index 0ca07eb5c7b..c73497ad70e 100644 --- a/ee/maintained-apps/outputs/brave-browser/darwin.json +++ b/ee/maintained-apps/outputs/brave-browser/darwin.json @@ -1,15 +1,15 @@ { "versions": [ { - "version": "150.1.92.139", + "version": "150.1.92.140", "queries": { "exists": "SELECT 1 FROM apps WHERE bundle_identifier = 'com.brave.Browser';", - "patched": "SELECT 1 WHERE NOT EXISTS (SELECT 1 FROM apps WHERE bundle_identifier = 'com.brave.Browser' AND version_compare(bundle_short_version, '150.1.92.139') < 0);" + "patched": "SELECT 1 WHERE NOT EXISTS (SELECT 1 FROM apps WHERE bundle_identifier = 'com.brave.Browser' AND version_compare(bundle_short_version, '150.1.92.140') < 0);" }, - "installer_url": "https://updates-cdn.bravesoftware.com/sparkle/Brave-Browser/stable-arm64/192.139/Brave-Browser-arm64.dmg", + "installer_url": "https://updates-cdn.bravesoftware.com/sparkle/Brave-Browser/stable-arm64/192.140/Brave-Browser-arm64.dmg", "install_script_ref": "013e53e8", "uninstall_script_ref": "9a376609", - "sha256": "77ba16752824ea8336cc33ecb5cc671b4b7041f7fc1c9be8a305af56b2e3b82d", + "sha256": "a87ec4d93e4d9867cb59e344c53b873fdef6e00d8ac76dea57243e645c5c9bbc", "default_categories": [ "Browsers" ] diff --git a/ee/maintained-apps/outputs/camtasia/windows.json b/ee/maintained-apps/outputs/camtasia/windows.json index 8255c9af4ba..15f7ee4cac5 100644 --- a/ee/maintained-apps/outputs/camtasia/windows.json +++ b/ee/maintained-apps/outputs/camtasia/windows.json @@ -1,15 +1,15 @@ { "versions": [ { - "version": "26.1.3.17772", + "version": "26.1.4.18353", "queries": { "exists": "SELECT 1 FROM programs WHERE name = 'Camtasia' AND publisher = 'TechSmith Corporation';", - "patched": "SELECT 1 WHERE NOT EXISTS (SELECT 1 FROM programs WHERE name = 'Camtasia' AND publisher = 'TechSmith Corporation' AND version_compare(version, '26.1.3.17772') < 0);" + "patched": "SELECT 1 WHERE NOT EXISTS (SELECT 1 FROM programs WHERE name = 'Camtasia' AND publisher = 'TechSmith Corporation' AND version_compare(version, '26.1.4.18353') < 0);" }, - "installer_url": "https://download.techsmith.com/camtasiastudio/releases/2613/camtasia.msi", + "installer_url": "https://download.techsmith.com/camtasiastudio/releases/2614/camtasia.msi", "install_script_ref": "8959087b", "uninstall_script_ref": "1c05707a", - "sha256": "f1f155f6ff43428ec608d051889d8fc0d22dcc5a5e76c3d54791abc33584fb8a", + "sha256": "7b9daf9cc4cd4b2a267ba284b93afd67eb10a66afeee86eb797f4c115a7b1ca7", "default_categories": [ "Productivity" ], diff --git a/ee/maintained-apps/outputs/camunda-modeler/darwin.json b/ee/maintained-apps/outputs/camunda-modeler/darwin.json index 8d557448b51..a1ed446ce0b 100644 --- a/ee/maintained-apps/outputs/camunda-modeler/darwin.json +++ b/ee/maintained-apps/outputs/camunda-modeler/darwin.json @@ -1,15 +1,15 @@ { "versions": [ { - "version": "5.48.0", + "version": "5.49.0", "queries": { "exists": "SELECT 1 FROM apps WHERE bundle_identifier = 'com.camunda.CamundaModeler';", - "patched": "SELECT 1 WHERE NOT EXISTS (SELECT 1 FROM apps WHERE bundle_identifier = 'com.camunda.CamundaModeler' AND version_compare(bundle_short_version, '5.48.0') < 0);" + "patched": "SELECT 1 WHERE NOT EXISTS (SELECT 1 FROM apps WHERE bundle_identifier = 'com.camunda.CamundaModeler' AND version_compare(bundle_short_version, '5.49.0') < 0);" }, - "installer_url": "https://downloads.camunda.cloud/release/camunda-modeler/5.48.0/camunda-modeler-5.48.0-mac-arm64.zip", + "installer_url": "https://downloads.camunda.cloud/release/camunda-modeler/5.49.0/camunda-modeler-5.49.0-mac-arm64.zip", "install_script_ref": "2b596ec1", "uninstall_script_ref": "68ff5179", - "sha256": "434ae64874410302068d820d63541bb2d2e7be8702f46c46bdf65e2bd2dc4e96", + "sha256": "858679164991a85fbf4977682319e9860ae7981a7c1ed15c2b16ff22425670bb", "default_categories": [ "Productivity" ] diff --git a/ee/maintained-apps/outputs/carbon-copy-cloner/darwin.json b/ee/maintained-apps/outputs/carbon-copy-cloner/darwin.json index 792d4e67968..29b683f6f5e 100644 --- a/ee/maintained-apps/outputs/carbon-copy-cloner/darwin.json +++ b/ee/maintained-apps/outputs/carbon-copy-cloner/darwin.json @@ -1,15 +1,15 @@ { "versions": [ { - "version": "7.1.5", + "version": "7.1.6", "queries": { "exists": "SELECT 1 FROM apps WHERE bundle_identifier = 'com.bombich.ccc';", - "patched": "SELECT 1 WHERE NOT EXISTS (SELECT 1 FROM apps WHERE bundle_identifier = 'com.bombich.ccc' AND version_compare(bundle_short_version, '7.1.5') < 0);" + "patched": "SELECT 1 WHERE NOT EXISTS (SELECT 1 FROM apps WHERE bundle_identifier = 'com.bombich.ccc' AND version_compare(bundle_short_version, '7.1.6') < 0);" }, - "installer_url": "https://bombich.scdn1.secure.raxcdn.com/software/files/ccc-7.1.5.8335.zip", + "installer_url": "https://bombich.scdn1.secure.raxcdn.com/software/files/ccc-7.1.6.8365.zip", "install_script_ref": "046a0bec", "uninstall_script_ref": "d66beab7", - "sha256": "27e272d5c692d4d3f018b77b2159103cb18f97ce5f0b45b263968135a770ed39", + "sha256": "ffd00a8f6d3050de5b352344d0cea76134d2aef3af6be122c22d5ea68ddeaca0", "default_categories": [ "Utilities" ] diff --git a/ee/maintained-apps/outputs/creative-force-kelvin/windows.json b/ee/maintained-apps/outputs/creative-force-kelvin/windows.json index f467415206a..60a84eb1274 100644 --- a/ee/maintained-apps/outputs/creative-force-kelvin/windows.json +++ b/ee/maintained-apps/outputs/creative-force-kelvin/windows.json @@ -1,15 +1,15 @@ { "versions": [ { - "version": "6.5.0", + "version": "6.6.0", "queries": { "exists": "SELECT 1 FROM programs WHERE name = 'Kelvin' AND publisher = 'Creative Force';", - "patched": "SELECT 1 WHERE NOT EXISTS (SELECT 1 FROM programs WHERE name = 'Kelvin' AND publisher = 'Creative Force' AND version_compare(version, '6.5.0') < 0);" + "patched": "SELECT 1 WHERE NOT EXISTS (SELECT 1 FROM programs WHERE name = 'Kelvin' AND publisher = 'Creative Force' AND version_compare(version, '6.6.0') < 0);" }, - "installer_url": "https://download.creativeforce.io/released-files.042024/prod/kelvin/win/Kelvin-6.5.0-win.msi", + "installer_url": "https://download.creativeforce.io/released-files.042024/prod/kelvin/win/Kelvin-6.6.0-win.msi", "install_script_ref": "8959087b", "uninstall_script_ref": "afce06ed", - "sha256": "e3c89b7fc3af69aa2a5c4afeed7d2133f24a28340693d7fe47a014bdf971f42f", + "sha256": "a65473fc49c433f8445e9545c4299b67b48d7c916a03d7ec52b97cb748db29ea", "default_categories": [ "Productivity" ], diff --git a/ee/maintained-apps/outputs/dbeaverlite/windows.json b/ee/maintained-apps/outputs/dbeaverlite/windows.json index c9f3b6a8442..80471185e8c 100644 --- a/ee/maintained-apps/outputs/dbeaverlite/windows.json +++ b/ee/maintained-apps/outputs/dbeaverlite/windows.json @@ -9,7 +9,7 @@ "installer_url": "https://downloads.dbeaver.net/lite/26.1.0/dbeaver-le-26.1.0-windows-x86_64.exe", "install_script_ref": "f305c446", "uninstall_script_ref": "6763cb51", - "sha256": "a95241f4f482f8fd552c018f29166ff5f2329102c848eb2787264e88991def41", + "sha256": "113e374c69a7f08b26a99879207c8e40b2dfb612f10c90e7df9d17fec7781465", "default_categories": [ "Developer tools" ] diff --git a/ee/maintained-apps/outputs/devknife/darwin.json b/ee/maintained-apps/outputs/devknife/darwin.json index 510b8b5032b..d4fdebe79a9 100644 --- a/ee/maintained-apps/outputs/devknife/darwin.json +++ b/ee/maintained-apps/outputs/devknife/darwin.json @@ -1,15 +1,15 @@ { "versions": [ { - "version": "1.15.4", + "version": "1.16.0", "queries": { "exists": "SELECT 1 FROM apps WHERE bundle_identifier = 'com.solotuna.devknife';", - "patched": "SELECT 1 WHERE NOT EXISTS (SELECT 1 FROM apps WHERE bundle_identifier = 'com.solotuna.devknife' AND version_compare(bundle_short_version, '1.15.4') < 0);" + "patched": "SELECT 1 WHERE NOT EXISTS (SELECT 1 FROM apps WHERE bundle_identifier = 'com.solotuna.devknife' AND version_compare(bundle_short_version, '1.16.0') < 0);" }, - "installer_url": "https://files.solotuna.com/devknife/DevKnife-1.15.4.dmg", + "installer_url": "https://files.solotuna.com/devknife/DevKnife-1.16.0.dmg", "install_script_ref": "35f5d59e", "uninstall_script_ref": "34c288a4", - "sha256": "dd382a46dabe24b72c504be7803056c9607cbdd30ea59e6e1d1fc2684edc5b6d", + "sha256": "ce91719791e25e191822126840a7638930c76cc528bc7bc6396eb8c030d79c3a", "default_categories": [ "Developer tools" ] diff --git a/ee/maintained-apps/outputs/devolutions-launcher/windows.json b/ee/maintained-apps/outputs/devolutions-launcher/windows.json index be2c85af35f..05ef5a9d9ac 100644 --- a/ee/maintained-apps/outputs/devolutions-launcher/windows.json +++ b/ee/maintained-apps/outputs/devolutions-launcher/windows.json @@ -1,15 +1,15 @@ { "versions": [ { - "version": "2026.2.13.0", + "version": "2026.2.14.0", "queries": { "exists": "SELECT 1 FROM programs WHERE name = 'Devolutions Launcher' AND publisher = 'Devolutions inc.';", - "patched": "SELECT 1 WHERE NOT EXISTS (SELECT 1 FROM programs WHERE name = 'Devolutions Launcher' AND publisher = 'Devolutions inc.' AND version_compare(version, '2026.2.13.0') < 0);" + "patched": "SELECT 1 WHERE NOT EXISTS (SELECT 1 FROM programs WHERE name = 'Devolutions Launcher' AND publisher = 'Devolutions inc.' AND version_compare(version, '2026.2.14.0') < 0);" }, - "installer_url": "https://cdn.devolutions.net/download/Setup.Devolutions.Launcher.2026.2.13.0.msi", + "installer_url": "https://cdn.devolutions.net/download/Setup.Devolutions.Launcher.2026.2.14.0.msi", "install_script_ref": "8959087b", "uninstall_script_ref": "532bd615", - "sha256": "ab7e5eba45c784c055f69406ca9f9efd1e3b9228ff52cff4c108eeb99a81da3a", + "sha256": "b372e0dd767dcff116ef56ef405553da836ab0843d5c018eb005e77de66ec99b", "default_categories": [ "Productivity" ], diff --git a/ee/maintained-apps/outputs/drawio/windows.json b/ee/maintained-apps/outputs/drawio/windows.json index 004a30bfe1a..1541ad53b29 100644 --- a/ee/maintained-apps/outputs/drawio/windows.json +++ b/ee/maintained-apps/outputs/drawio/windows.json @@ -1,15 +1,15 @@ { "versions": [ { - "version": "30.3.6", + "version": "30.3.11", "queries": { "exists": "SELECT 1 FROM programs WHERE name = 'draw.io' AND publisher = 'JGraph';", - "patched": "SELECT 1 WHERE NOT EXISTS (SELECT 1 FROM programs WHERE name = 'draw.io' AND publisher = 'JGraph' AND version_compare(version, '30.3.6') < 0);" + "patched": "SELECT 1 WHERE NOT EXISTS (SELECT 1 FROM programs WHERE name = 'draw.io' AND publisher = 'JGraph' AND version_compare(version, '30.3.11') < 0);" }, - "installer_url": "https://github.com/jgraph/drawio-desktop/releases/download/v30.3.6/draw.io-30.3.6-windows-installer.exe", + "installer_url": "https://github.com/jgraph/drawio-desktop/releases/download/v30.3.11/draw.io-30.3.11-windows-installer.exe", "install_script_ref": "51038703", "uninstall_script_ref": "63a061f9", - "sha256": "f4be779073073b9748b838ffc234a982cbad22279cabd2cd11438ca6cfc62f9b", + "sha256": "6af60487c9beffc5bc4ff749d9a1922d14e8698184feccd8c0e4357414a460e9", "default_categories": [ "Productivity" ] diff --git a/ee/maintained-apps/outputs/firefox/windows.json b/ee/maintained-apps/outputs/firefox/windows.json index 2cdb18b4098..bcaad3ad258 100644 --- a/ee/maintained-apps/outputs/firefox/windows.json +++ b/ee/maintained-apps/outputs/firefox/windows.json @@ -1,15 +1,15 @@ { "versions": [ { - "version": "152.0.5", + "version": "152.0.6", "queries": { "exists": "SELECT 1 FROM programs WHERE name = 'Mozilla Firefox (x64 en-US)' AND publisher = 'Mozilla';", - "patched": "SELECT 1 WHERE NOT EXISTS (SELECT 1 FROM programs WHERE name = 'Mozilla Firefox (x64 en-US)' AND publisher = 'Mozilla' AND version_compare(version, '152.0.5') < 0);" + "patched": "SELECT 1 WHERE NOT EXISTS (SELECT 1 FROM programs WHERE name = 'Mozilla Firefox (x64 en-US)' AND publisher = 'Mozilla' AND version_compare(version, '152.0.6') < 0);" }, - "installer_url": "https://download-installer.cdn.mozilla.net/pub/firefox/releases/152.0.5/win64/en-US/Firefox%20Setup%20152.0.5.exe", + "installer_url": "https://download-installer.cdn.mozilla.net/pub/firefox/releases/152.0.6/win64/en-US/Firefox%20Setup%20152.0.6.exe", "install_script_ref": "80fb9175", "uninstall_script_ref": "8b5e20e4", - "sha256": "6fe5df6fd8abf6b9a4de021c904ffd03cbf09ddc41aea6d4aaf333ee39ec3373", + "sha256": "3d4fcc5370bb183c9535d64b98d946c2dacf664a394ebcc02844e361d58d59b4", "default_categories": [ "Browsers" ] diff --git a/ee/maintained-apps/outputs/google-chrome/windows.json b/ee/maintained-apps/outputs/google-chrome/windows.json index f5506d91760..168ba3239fd 100644 --- a/ee/maintained-apps/outputs/google-chrome/windows.json +++ b/ee/maintained-apps/outputs/google-chrome/windows.json @@ -1,10 +1,10 @@ { "versions": [ { - "version": "150.0.7871.115", + "version": "150.0.7871.125", "queries": { "exists": "SELECT 1 FROM programs WHERE name = 'Google Chrome' AND publisher = 'Google LLC';", - "patched": "SELECT 1 WHERE NOT EXISTS (SELECT 1 FROM programs WHERE name = 'Google Chrome' AND publisher = 'Google LLC' AND version_compare(version, '150.0.7871.115') < 0);" + "patched": "SELECT 1 WHERE NOT EXISTS (SELECT 1 FROM programs WHERE name = 'Google Chrome' AND publisher = 'Google LLC' AND version_compare(version, '150.0.7871.125') < 0);" }, "installer_url": "https://dl.google.com/dl/chrome/install/googlechromestandaloneenterprise64.msi", "install_script_ref": "8959087b", diff --git a/ee/maintained-apps/outputs/grammarly-desktop/darwin.json b/ee/maintained-apps/outputs/grammarly-desktop/darwin.json index b6acac026ab..c54aeb7cc90 100644 --- a/ee/maintained-apps/outputs/grammarly-desktop/darwin.json +++ b/ee/maintained-apps/outputs/grammarly-desktop/darwin.json @@ -1,15 +1,15 @@ { "versions": [ { - "version": "1.174.1", + "version": "1.175.0", "queries": { "exists": "SELECT 1 FROM apps WHERE bundle_identifier = 'com.grammarly.ProjectLlama';", - "patched": "SELECT 1 WHERE NOT EXISTS (SELECT 1 FROM apps WHERE bundle_identifier = 'com.grammarly.ProjectLlama' AND version_compare(bundle_short_version, '1.174.1') < 0);" + "patched": "SELECT 1 WHERE NOT EXISTS (SELECT 1 FROM apps WHERE bundle_identifier = 'com.grammarly.ProjectLlama' AND version_compare(bundle_short_version, '1.175.0') < 0);" }, - "installer_url": "https://download-mac.grammarly.com/versions/1.174.1.0/Grammarly.dmg", + "installer_url": "https://download-mac.grammarly.com/versions/1.175.0.0/Grammarly.dmg", "install_script_ref": "df3d0525", "uninstall_script_ref": "e14b2d61", - "sha256": "673d99f3a3e058efff41400c54332ebe6d942d73029e0ef60fcd8b465dd12365", + "sha256": "bc43b9388da66272aac240892798e6e35a1d0230e9846622e57a74b2e24d3cc2", "default_categories": [ "Productivity" ] diff --git a/ee/maintained-apps/outputs/jetbrains-toolbox/darwin.json b/ee/maintained-apps/outputs/jetbrains-toolbox/darwin.json index 732330cbd8d..3049bef9deb 100644 --- a/ee/maintained-apps/outputs/jetbrains-toolbox/darwin.json +++ b/ee/maintained-apps/outputs/jetbrains-toolbox/darwin.json @@ -1,15 +1,15 @@ { "versions": [ { - "version": "3.6.1", + "version": "3.6.2", "queries": { "exists": "SELECT 1 FROM apps WHERE bundle_identifier = 'com.jetbrains.toolbox';", - "patched": "SELECT 1 WHERE NOT EXISTS (SELECT 1 FROM apps WHERE bundle_identifier = 'com.jetbrains.toolbox' AND version_compare(bundle_short_version, '3.6.1') < 0);" + "patched": "SELECT 1 WHERE NOT EXISTS (SELECT 1 FROM apps WHERE bundle_identifier = 'com.jetbrains.toolbox' AND version_compare(bundle_short_version, '3.6.2') < 0);" }, - "installer_url": "https://download.jetbrains.com/toolbox/jetbrains-toolbox-3.6.1.85592-arm64.dmg", + "installer_url": "https://download.jetbrains.com/toolbox/jetbrains-toolbox-3.6.2.85969-arm64.dmg", "install_script_ref": "9dbacbdd", "uninstall_script_ref": "276d8363", - "sha256": "8ac97276b7ebd63d8e942df0cb31acb3e365ce3732accc9d612bfa7e315fe03d", + "sha256": "7ac7ff01f4431a8595d392966fb09f241450be472cddb1b9fc895d713b8d64e0", "default_categories": [ "Developer tools" ] diff --git a/ee/maintained-apps/outputs/kiro/windows.json b/ee/maintained-apps/outputs/kiro/windows.json index f885b69446f..dfa474bc25d 100644 --- a/ee/maintained-apps/outputs/kiro/windows.json +++ b/ee/maintained-apps/outputs/kiro/windows.json @@ -1,15 +1,15 @@ { "versions": [ { - "version": "1.0.116", + "version": "1.0.138", "queries": { "exists": "SELECT 1 FROM programs WHERE name = 'Kiro (User)' AND publisher = 'Amazon Web Services';", - "patched": "SELECT 1 WHERE NOT EXISTS (SELECT 1 FROM programs WHERE name = 'Kiro (User)' AND publisher = 'Amazon Web Services' AND version_compare(version, '1.0.116') < 0);" + "patched": "SELECT 1 WHERE NOT EXISTS (SELECT 1 FROM programs WHERE name = 'Kiro (User)' AND publisher = 'Amazon Web Services' AND version_compare(version, '1.0.138') < 0);" }, - "installer_url": "https://prod.download.desktop.kiro.dev/releases/stable/win32-x64/signed/1.0.116/kiro-ide-1.0.116-stable-win32-x64.exe", + "installer_url": "https://prod.download.desktop.kiro.dev/releases/stable/win32-x64/signed/1.0.138/kiro-ide-1.0.138-stable-win32-x64.exe", "install_script_ref": "c5bc3c21", "uninstall_script_ref": "afe8f2fa", - "sha256": "49eef30b675ee3d0fd74e822a96c1da196d570539a83c055087e264cf7b04f46", + "sha256": "0685795fcdaa10d8950a4bbdac47deb997885472500b5e0d3f714f7930bf5004", "default_categories": [ "Developer tools" ] diff --git a/ee/maintained-apps/outputs/lastpass/windows.json b/ee/maintained-apps/outputs/lastpass/windows.json index cd7fb6b0b8d..5eea7832ccd 100644 --- a/ee/maintained-apps/outputs/lastpass/windows.json +++ b/ee/maintained-apps/outputs/lastpass/windows.json @@ -1,15 +1,15 @@ { "versions": [ { - "version": "5.4.3.1481", + "version": "5.4.4.1499", "queries": { "exists": "SELECT 1 FROM programs WHERE name = 'LastPass' AND publisher = 'LastPass US LP.';", - "patched": "SELECT 1 WHERE NOT EXISTS (SELECT 1 FROM programs WHERE name = 'LastPass' AND publisher = 'LastPass US LP.' AND version_compare(version, '5.4.3.1481') < 0);" + "patched": "SELECT 1 WHERE NOT EXISTS (SELECT 1 FROM programs WHERE name = 'LastPass' AND publisher = 'LastPass US LP.' AND version_compare(version, '5.4.4.1499') < 0);" }, "installer_url": "https://download.cloud.lastpass.com/windows_installer/LastPassInstaller.msi", "install_script_ref": "8959087b", "uninstall_script_ref": "62d1f9f2", - "sha256": "d94cfacfb9613bc374b509e701c1ec93525968c237213cd55904fbd7a1584f9e", + "sha256": "8f43f47bb330ffd3e475e551d3b610030fe1f014f8ef4045245338298fae0d68", "default_categories": [ "Productivity" ], diff --git a/ee/maintained-apps/outputs/mendeley-reference-manager/darwin.json b/ee/maintained-apps/outputs/mendeley-reference-manager/darwin.json index 4ab0a783935..2e53e6cbebc 100644 --- a/ee/maintained-apps/outputs/mendeley-reference-manager/darwin.json +++ b/ee/maintained-apps/outputs/mendeley-reference-manager/darwin.json @@ -1,15 +1,15 @@ { "versions": [ { - "version": "2.146.1", + "version": "2.148.0", "queries": { "exists": "SELECT 1 FROM apps WHERE bundle_identifier = 'com.elsevier.mendeley';", - "patched": "SELECT 1 WHERE NOT EXISTS (SELECT 1 FROM apps WHERE bundle_identifier = 'com.elsevier.mendeley' AND version_compare(bundle_short_version, '2.146.1') < 0);" + "patched": "SELECT 1 WHERE NOT EXISTS (SELECT 1 FROM apps WHERE bundle_identifier = 'com.elsevier.mendeley' AND version_compare(bundle_short_version, '2.148.0') < 0);" }, - "installer_url": "https://static.mendeley.com/bin/desktop/mendeley-reference-manager-2.146.1-universal.dmg", + "installer_url": "https://static.mendeley.com/bin/desktop/mendeley-reference-manager-2.148.0-universal.dmg", "install_script_ref": "005bec93", "uninstall_script_ref": "1f744b0c", - "sha256": "346d809e539cecc883aafeec6efaefbc39ffe9bdba5bb5be8a2e22681e82215f", + "sha256": "2fe21cba5e9dac0c5037731ef588515d518518d132686acbf85a1faadba6b61f", "default_categories": [ "Productivity" ] diff --git a/ee/maintained-apps/outputs/microsoft-dotnet-runtime-10/windows.json b/ee/maintained-apps/outputs/microsoft-dotnet-runtime-10/windows.json index e4bb984f880..7b238359255 100644 --- a/ee/maintained-apps/outputs/microsoft-dotnet-runtime-10/windows.json +++ b/ee/maintained-apps/outputs/microsoft-dotnet-runtime-10/windows.json @@ -1,15 +1,15 @@ { "versions": [ { - "version": "10.0.9", + "version": "10.0.10", "queries": { "exists": "SELECT 1 FROM programs WHERE name LIKE 'Microsoft .NET Runtime - 10.%' AND name LIKE '%(x64)' AND publisher = 'Microsoft Corporation';", - "patched": "SELECT 1 WHERE NOT EXISTS (SELECT 1 FROM programs WHERE name LIKE 'Microsoft .NET Runtime - 10.%' AND name LIKE '%(x64)' AND publisher = 'Microsoft Corporation' AND version_compare(version, '10.0.9') < 0);" + "patched": "SELECT 1 WHERE NOT EXISTS (SELECT 1 FROM programs WHERE name LIKE 'Microsoft .NET Runtime - 10.%' AND name LIKE '%(x64)' AND publisher = 'Microsoft Corporation' AND version_compare(version, '10.0.10') < 0);" }, - "installer_url": "https://builds.dotnet.microsoft.com/dotnet/Runtime/10.0.9/dotnet-runtime-10.0.9-win-x64.exe", + "installer_url": "https://builds.dotnet.microsoft.com/dotnet/Runtime/10.0.10/dotnet-runtime-10.0.10-win-x64.exe", "install_script_ref": "13facdef", - "uninstall_script_ref": "8d137fbb", - "sha256": "660deef297846eaea0275ddabbecb3872c5bd8157df2ea9cbab03d286d1c71bc", + "uninstall_script_ref": "9da7afd4", + "sha256": "38cf0578b18f98febbb9fe63fc12671afe951d12bb5f2f3eff3f801cc0d37993", "default_categories": [ "Developer tools" ] @@ -17,6 +17,6 @@ ], "refs": { "13facdef": "# Learn more about .exe install scripts:\n# http://fleetdm.com/learn-more-about/exe-install-scripts\n#\n# The .NET Runtime ships as a WiX \"burn\" bootstrapper (.exe). It installs\n# machine-wide and registers its own ARP entry. Silent switches come from the\n# winget installer manifest (Silent: /quiet, Custom: /norestart).\n\n$exeFilePath = \"${env:INSTALLER_PATH}\"\n\ntry {\n if (-not (Test-Path $exeFilePath)) {\n Write-Host \"Error: Installer file not found at: $exeFilePath\"\n Exit 1\n }\n\n $processOptions = @{\n FilePath = \"$exeFilePath\"\n ArgumentList = \"/quiet /norestart\"\n PassThru = $true\n Wait = $true\n NoNewWindow = $true\n }\n\n $process = Start-Process @processOptions\n $exitCode = $process.ExitCode\n Write-Host \"Install exit code: $exitCode\"\n\n # 0 = success, 3010 = success but reboot required, 1641 = reboot initiated\n if ($exitCode -eq 3010 -or $exitCode -eq 1641) {\n Exit 0\n }\n\n Exit $exitCode\n\n} catch {\n Write-Host \"Error: $_\"\n Exit 1\n}\n", - "8d137fbb": "# Uninstalls the Microsoft .NET Runtime WiX \"burn\" bundle.\n#\n# The runtime installs as a burn bootstrapper that registers a *bundle* ARP entry\n# (keyed by the bundle ProductCode) alongside several MSI component entries that\n# share the same DisplayName. Only the bundle entry removes the whole runtime, and\n# it uninstalls by running its cached bootstrapper .exe with /uninstall -- never via\n# msiexec (see https://silentinstallhq.com/net-runtime-8-0-silent-uninstall-powershell/).\n# We target the bundle by its ProductCode (injected by the ingester) and fall back\n# to the cached bootstrapper in the Package Cache.\n\n$productCode = '{0EE1CA63-7D41-454E-9108-AC904CB35652}'\n\nfunction Invoke-Uninstaller {\n param([string]$exe, [string]$exeArgs)\n if ($exeArgs -notmatch '/uninstall') { $exeArgs = \"/uninstall $exeArgs\" }\n if ($exeArgs -notmatch '/quiet') { $exeArgs = \"$exeArgs /quiet\" }\n if ($exeArgs -notmatch '/norestart') { $exeArgs = \"$exeArgs /norestart\" }\n $exeArgs = $exeArgs.Trim()\n Write-Host \"Uninstall command: $exe\"\n Write-Host \"Uninstall args: $exeArgs\"\n $process = Start-Process -FilePath $exe -ArgumentList $exeArgs -NoNewWindow -PassThru -Wait\n return $process.ExitCode\n}\n\n$exitCode = $null\n\n# 1) Preferred: the bundle ARP entry, looked up by the bundle ProductCode. Its\n# UninstallString/QuietUninstallString points to the cached bootstrapper .exe.\n$keys = @(\n \"HKLM:\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\$productCode\",\n \"HKLM:\\SOFTWARE\\WOW6432Node\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\$productCode\"\n)\n\nforeach ($key in $keys) {\n if (-not (Test-Path $key)) { continue }\n $entry = Get-ItemProperty $key -ErrorAction SilentlyContinue\n if (-not $entry) { continue }\n\n $raw = $entry.QuietUninstallString\n if (-not $raw) { $raw = $entry.UninstallString }\n if (-not $raw) { continue }\n\n # Parse into executable + args, handling quoted/unquoted/bare shapes.\n if ($raw -match '^\\s*\"([^\"]+)\"\\s*(.*)$') {\n $exe = $matches[1]; $exeArgs = $matches[2].Trim()\n } elseif ($raw -match '(?i)^\\s*(.+?\\.exe)\\s*(.*)$') {\n $exe = $matches[1]; $exeArgs = $matches[2].Trim()\n } else {\n $exe = $raw; $exeArgs = \"\"\n }\n\n $exitCode = Invoke-Uninstaller -exe $exe -exeArgs $exeArgs\n break\n}\n\n# 2) Fallback: run the cached bootstrapper directly from the Package Cache, which\n# burn names after the bundle ProductCode.\nif ($null -eq $exitCode) {\n $cached = Get-ChildItem -Path \"C:\\ProgramData\\Package Cache\\$productCode\" -Filter *.exe -ErrorAction SilentlyContinue | Select-Object -First 1\n if ($cached) {\n $exitCode = Invoke-Uninstaller -exe $cached.FullName -exeArgs \"\"\n }\n}\n\nif ($null -eq $exitCode) {\n Write-Host \"Uninstall entry not found for product code: $productCode\"\n Exit 0\n}\n\nWrite-Host \"Uninstall exit code: $exitCode\"\n# 0 = success, 3010 = success but reboot required, 1641 = reboot initiated\nif ($exitCode -eq 3010 -or $exitCode -eq 1641) { Exit 0 }\nExit $exitCode\n" + "9da7afd4": "# Uninstalls the Microsoft .NET Runtime WiX \"burn\" bundle.\n#\n# The runtime installs as a burn bootstrapper that registers a *bundle* ARP entry\n# (keyed by the bundle ProductCode) alongside several MSI component entries that\n# share the same DisplayName. Only the bundle entry removes the whole runtime, and\n# it uninstalls by running its cached bootstrapper .exe with /uninstall -- never via\n# msiexec (see https://silentinstallhq.com/net-runtime-8-0-silent-uninstall-powershell/).\n# We target the bundle by its ProductCode (injected by the ingester) and fall back\n# to the cached bootstrapper in the Package Cache.\n\n$productCode = '{086851AF-5BEF-47A0-95C5-A8EED09F3F36}'\n\nfunction Invoke-Uninstaller {\n param([string]$exe, [string]$exeArgs)\n if ($exeArgs -notmatch '/uninstall') { $exeArgs = \"/uninstall $exeArgs\" }\n if ($exeArgs -notmatch '/quiet') { $exeArgs = \"$exeArgs /quiet\" }\n if ($exeArgs -notmatch '/norestart') { $exeArgs = \"$exeArgs /norestart\" }\n $exeArgs = $exeArgs.Trim()\n Write-Host \"Uninstall command: $exe\"\n Write-Host \"Uninstall args: $exeArgs\"\n $process = Start-Process -FilePath $exe -ArgumentList $exeArgs -NoNewWindow -PassThru -Wait\n return $process.ExitCode\n}\n\n$exitCode = $null\n\n# 1) Preferred: the bundle ARP entry, looked up by the bundle ProductCode. Its\n# UninstallString/QuietUninstallString points to the cached bootstrapper .exe.\n$keys = @(\n \"HKLM:\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\$productCode\",\n \"HKLM:\\SOFTWARE\\WOW6432Node\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\$productCode\"\n)\n\nforeach ($key in $keys) {\n if (-not (Test-Path $key)) { continue }\n $entry = Get-ItemProperty $key -ErrorAction SilentlyContinue\n if (-not $entry) { continue }\n\n $raw = $entry.QuietUninstallString\n if (-not $raw) { $raw = $entry.UninstallString }\n if (-not $raw) { continue }\n\n # Parse into executable + args, handling quoted/unquoted/bare shapes.\n if ($raw -match '^\\s*\"([^\"]+)\"\\s*(.*)$') {\n $exe = $matches[1]; $exeArgs = $matches[2].Trim()\n } elseif ($raw -match '(?i)^\\s*(.+?\\.exe)\\s*(.*)$') {\n $exe = $matches[1]; $exeArgs = $matches[2].Trim()\n } else {\n $exe = $raw; $exeArgs = \"\"\n }\n\n $exitCode = Invoke-Uninstaller -exe $exe -exeArgs $exeArgs\n break\n}\n\n# 2) Fallback: run the cached bootstrapper directly from the Package Cache, which\n# burn names after the bundle ProductCode.\nif ($null -eq $exitCode) {\n $cached = Get-ChildItem -Path \"C:\\ProgramData\\Package Cache\\$productCode\" -Filter *.exe -ErrorAction SilentlyContinue | Select-Object -First 1\n if ($cached) {\n $exitCode = Invoke-Uninstaller -exe $cached.FullName -exeArgs \"\"\n }\n}\n\nif ($null -eq $exitCode) {\n Write-Host \"Uninstall entry not found for product code: $productCode\"\n Exit 0\n}\n\nWrite-Host \"Uninstall exit code: $exitCode\"\n# 0 = success, 3010 = success but reboot required, 1641 = reboot initiated\nif ($exitCode -eq 3010 -or $exitCode -eq 1641) { Exit 0 }\nExit $exitCode\n" } } diff --git a/ee/maintained-apps/outputs/mullvad-browser/windows.json b/ee/maintained-apps/outputs/mullvad-browser/windows.json index 22185308ecc..93982d69030 100644 --- a/ee/maintained-apps/outputs/mullvad-browser/windows.json +++ b/ee/maintained-apps/outputs/mullvad-browser/windows.json @@ -1,15 +1,15 @@ { "versions": [ { - "version": "15.0.16", + "version": "15.0.18", "queries": { "exists": "SELECT 1 FROM programs WHERE name = 'Mullvad Browser' AND publisher = 'Mullvad VPN';", - "patched": "SELECT 1 WHERE NOT EXISTS (SELECT 1 FROM programs WHERE name = 'Mullvad Browser' AND publisher = 'Mullvad VPN' AND version_compare(version, '15.0.16') < 0);" + "patched": "SELECT 1 WHERE NOT EXISTS (SELECT 1 FROM programs WHERE name = 'Mullvad Browser' AND publisher = 'Mullvad VPN' AND version_compare(version, '15.0.18') < 0);" }, - "installer_url": "https://github.com/mullvad/mullvad-browser/releases/download/15.0.16/mullvad-browser-windows-x86_64-15.0.16.exe", + "installer_url": "https://github.com/mullvad/mullvad-browser/releases/download/15.0.18/mullvad-browser-windows-x86_64-15.0.18.exe", "install_script_ref": "de703749", "uninstall_script_ref": "77ded4aa", - "sha256": "72f10b35a388c5f14ebff0eadc32b2a84b70f6e459f801f8fc9d8a21c398329a", + "sha256": "b45d52abf6bd5bd03388189856e7b77e712bd8424b0c973eeb63376601519839", "default_categories": [ "Browsers" ] diff --git a/ee/maintained-apps/outputs/nessus-agent/windows.json b/ee/maintained-apps/outputs/nessus-agent/windows.json index b526d34f512..d9c552e5717 100644 --- a/ee/maintained-apps/outputs/nessus-agent/windows.json +++ b/ee/maintained-apps/outputs/nessus-agent/windows.json @@ -1,15 +1,15 @@ { "versions": [ { - "version": "11.2.0.20301", + "version": "11.2.1.20008", "queries": { "exists": "SELECT 1 FROM programs WHERE name = 'Nessus Agent (x64)' AND publisher = 'Tenable';", - "patched": "SELECT 1 WHERE NOT EXISTS (SELECT 1 FROM programs WHERE name = 'Nessus Agent (x64)' AND publisher = 'Tenable' AND version_compare(version, '11.2.0.20301') < 0);" + "patched": "SELECT 1 WHERE NOT EXISTS (SELECT 1 FROM programs WHERE name = 'Nessus Agent (x64)' AND publisher = 'Tenable' AND version_compare(version, '11.2.1.20008') < 0);" }, - "installer_url": "https://www.tenable.com/downloads/api/v2/pages/nessus-agents/files/NessusAgent-11.2.0-x64.msi", + "installer_url": "https://www.tenable.com/downloads/api/v2/pages/nessus-agents/files/NessusAgent-11.2.1-x64.msi", "install_script_ref": "8959087b", "uninstall_script_ref": "8ceaf69e", - "sha256": "a2a7e6356e34d75c9ce3a5c05cb19da0d3b8f1678950097c83db554ff0453a52", + "sha256": "b975cf8aff97fb54d07043047ed1ab2044c7ccbbd4ded49ee881d9242acb1f6b", "default_categories": [ "Security" ], diff --git a/ee/maintained-apps/outputs/opencode-desktop/darwin.json b/ee/maintained-apps/outputs/opencode-desktop/darwin.json index 89c5368d050..666ab764b74 100644 --- a/ee/maintained-apps/outputs/opencode-desktop/darwin.json +++ b/ee/maintained-apps/outputs/opencode-desktop/darwin.json @@ -1,15 +1,15 @@ { "versions": [ { - "version": "1.18.1", + "version": "1.18.2", "queries": { "exists": "SELECT 1 FROM apps WHERE bundle_identifier = 'ai.opencode.desktop';", - "patched": "SELECT 1 WHERE NOT EXISTS (SELECT 1 FROM apps WHERE bundle_identifier = 'ai.opencode.desktop' AND version_compare(bundle_short_version, '1.18.1') < 0);" + "patched": "SELECT 1 WHERE NOT EXISTS (SELECT 1 FROM apps WHERE bundle_identifier = 'ai.opencode.desktop' AND version_compare(bundle_short_version, '1.18.2') < 0);" }, - "installer_url": "https://github.com/anomalyco/opencode/releases/download/v1.18.1/opencode-desktop-mac-arm64.dmg", + "installer_url": "https://github.com/anomalyco/opencode/releases/download/v1.18.2/opencode-desktop-mac-arm64.dmg", "install_script_ref": "727dc41e", "uninstall_script_ref": "ad62b190", - "sha256": "c46cd0af463bac62d6e5500cf1e0f4822afa8388ae4ee00a0cc28c8e69fcd22c", + "sha256": "77d6c79d56c57d7367c557f8a19ed2fe909216aad35bc8717fb6f0fde51e4c33", "default_categories": [ "Productivity" ] diff --git a/ee/maintained-apps/outputs/prisma-browser/windows.json b/ee/maintained-apps/outputs/prisma-browser/windows.json index 34918962b01..020a434bbce 100644 --- a/ee/maintained-apps/outputs/prisma-browser/windows.json +++ b/ee/maintained-apps/outputs/prisma-browser/windows.json @@ -1,15 +1,15 @@ { "versions": [ { - "version": "150.41.2.115", + "version": "150.49.4.125", "queries": { "exists": "SELECT 1 FROM programs WHERE name = 'Prisma Access Browser' AND publisher = 'Palo Alto Networks Inc';", - "patched": "SELECT 1 WHERE NOT EXISTS (SELECT 1 FROM programs WHERE name = 'Prisma Access Browser' AND publisher = 'Palo Alto Networks Inc' AND version_compare(version, '150.41.2.115') < 0);" + "patched": "SELECT 1 WHERE NOT EXISTS (SELECT 1 FROM programs WHERE name = 'Prisma Access Browser' AND publisher = 'Palo Alto Networks Inc' AND version_compare(version, '150.49.4.125') < 0);" }, - "installer_url": "https://updates.talon-sec.com/releases/Prisma%20Access%20Browser/win/packaged/x64/crx_signed_o4_stable_prisma_access_browser_installer_150_41_2_115-150.41.2.115-af0d7600.msi", + "installer_url": "https://updates.talon-sec.com/releases/Prisma%20Access%20Browser/win/packaged/x64/crx_signed_o4_stable_prisma_access_browser_installer_150_49_4_125-150.49.4.125-b23f35c2.msi", "install_script_ref": "8959087b", "uninstall_script_ref": "84194ed8", - "sha256": "78e7608185a133e1b034ecc847004eea3da407a7fa0bedf23e3448dde8e8f292", + "sha256": "b5659cae0fe1c933179c95b3a54d654b45434d78908a4de1451897ad98ba2b58", "default_categories": [ "Browsers" ], diff --git a/ee/maintained-apps/outputs/pritunl/windows.json b/ee/maintained-apps/outputs/pritunl/windows.json index 3efe75a46f3..f99339e77a7 100644 --- a/ee/maintained-apps/outputs/pritunl/windows.json +++ b/ee/maintained-apps/outputs/pritunl/windows.json @@ -1,15 +1,15 @@ { "versions": [ { - "version": "1.3.4655.98", + "version": "1.3.4686.95", "queries": { "exists": "SELECT 1 FROM programs WHERE name LIKE 'Pritunl %' AND publisher = 'Pritunl';", - "patched": "SELECT 1 WHERE NOT EXISTS (SELECT 1 FROM programs WHERE name LIKE 'Pritunl %' AND publisher = 'Pritunl' AND version_compare(version, '1.3.4655.98') < 0);" + "patched": "SELECT 1 WHERE NOT EXISTS (SELECT 1 FROM programs WHERE name LIKE 'Pritunl %' AND publisher = 'Pritunl' AND version_compare(version, '1.3.4686.95') < 0);" }, - "installer_url": "https://github.com/pritunl/pritunl-client/releases/download/1.3.4655.98/Pritunl.exe", + "installer_url": "https://github.com/pritunl/pritunl-client/releases/download/1.3.4686.95/Pritunl.exe", "install_script_ref": "83fd35ff", "uninstall_script_ref": "c81cc77c", - "sha256": "86555e22045e5ddd2cbefca58a91ed5d2d6035e23b34e819c84f6e99985d77a7", + "sha256": "95cd503daa00c043e0b20c4a7a39271495f0253e354387625218a7eaf1142577", "default_categories": [ "Productivity" ] diff --git a/ee/maintained-apps/outputs/proton-meet/darwin.json b/ee/maintained-apps/outputs/proton-meet/darwin.json index 1809af87165..19de34ae7b2 100644 --- a/ee/maintained-apps/outputs/proton-meet/darwin.json +++ b/ee/maintained-apps/outputs/proton-meet/darwin.json @@ -1,15 +1,15 @@ { "versions": [ { - "version": "1.0.9", + "version": "1.0.10", "queries": { "exists": "SELECT 1 FROM apps WHERE bundle_identifier = 'ch.protonmeet.desktop';", - "patched": "SELECT 1 WHERE NOT EXISTS (SELECT 1 FROM apps WHERE bundle_identifier = 'ch.protonmeet.desktop' AND version_compare(bundle_short_version, '1.0.9') < 0);" + "patched": "SELECT 1 WHERE NOT EXISTS (SELECT 1 FROM apps WHERE bundle_identifier = 'ch.protonmeet.desktop' AND version_compare(bundle_short_version, '1.0.10') < 0);" }, - "installer_url": "https://proton.me/download/meet/macos/1.0.9/ProtonMeet-desktop.dmg", + "installer_url": "https://proton.me/download/meet/macos/1.0.10/ProtonMeet-desktop.dmg", "install_script_ref": "335a5366", "uninstall_script_ref": "55f817b5", - "sha256": "b3fe9148e9e5f56afe233dfee76c5bad4653b3e0be49843412208c40aac2ce13", + "sha256": "377e8f644dbfb6b8a4dc69a38d2618a496bd14ad47d28b9eb01009ec1b729ce1", "default_categories": [ "Productivity" ] diff --git a/ee/maintained-apps/outputs/spamsieve/darwin.json b/ee/maintained-apps/outputs/spamsieve/darwin.json index 6fb1300e7a7..722926d61bf 100644 --- a/ee/maintained-apps/outputs/spamsieve/darwin.json +++ b/ee/maintained-apps/outputs/spamsieve/darwin.json @@ -1,15 +1,15 @@ { "versions": [ { - "version": "3.3", + "version": "3.3.1", "queries": { "exists": "SELECT 1 FROM apps WHERE bundle_identifier = 'com.c-command.SpamSieve';", - "patched": "SELECT 1 WHERE NOT EXISTS (SELECT 1 FROM apps WHERE bundle_identifier = 'com.c-command.SpamSieve' AND version_compare(bundle_short_version, '3.3') < 0);" + "patched": "SELECT 1 WHERE NOT EXISTS (SELECT 1 FROM apps WHERE bundle_identifier = 'com.c-command.SpamSieve' AND version_compare(bundle_short_version, '3.3.1') < 0);" }, - "installer_url": "https://c-command.com/downloads/SpamSieve-3.3.dmg", + "installer_url": "https://c-command.com/downloads/SpamSieve-3.3.1.dmg", "install_script_ref": "6a5849eb", "uninstall_script_ref": "e50636cd", - "sha256": "f0d42efafe6c0dced578e5421e797495b90700aeba6519548516bb11017685c9", + "sha256": "a3f6a5d1b0ca309d39210a4717554e96d7ccd55fa37b667f90ced2a8b9517b2c", "default_categories": [ "Productivity" ] diff --git a/ee/maintained-apps/outputs/spokenly/darwin.json b/ee/maintained-apps/outputs/spokenly/darwin.json index a03c4e9e1fe..8ce23079f2f 100644 --- a/ee/maintained-apps/outputs/spokenly/darwin.json +++ b/ee/maintained-apps/outputs/spokenly/darwin.json @@ -1,15 +1,15 @@ { "versions": [ { - "version": "2.24.3", + "version": "2.25.0", "queries": { "exists": "SELECT 1 FROM apps WHERE bundle_identifier = 'app.spokenly';", - "patched": "SELECT 1 WHERE NOT EXISTS (SELECT 1 FROM apps WHERE bundle_identifier = 'app.spokenly' AND version_compare(bundle_short_version, '2.24.3') < 0);" + "patched": "SELECT 1 WHERE NOT EXISTS (SELECT 1 FROM apps WHERE bundle_identifier = 'app.spokenly' AND version_compare(bundle_short_version, '2.25.0') < 0);" }, - "installer_url": "https://cdn.spokenly.app/releases/macos/Spokenly-2.24.3.dmg", + "installer_url": "https://cdn.spokenly.app/releases/macos/Spokenly-2.25.0.dmg", "install_script_ref": "5f8295ce", "uninstall_script_ref": "a5d6883d", - "sha256": "aeebc56544d5adf81c95422811b838b74ecb55fd252c76460f57ec42a9a2793d", + "sha256": "b3d31118bf7eda804bb5eb8cd1cfe29d5a94dd5d4ddd95de089781e7c734bfb8", "default_categories": [ "Productivity" ] diff --git a/ee/maintained-apps/outputs/tailscale-app/darwin.json b/ee/maintained-apps/outputs/tailscale-app/darwin.json index 1873dbeb3dc..c7f79069858 100644 --- a/ee/maintained-apps/outputs/tailscale-app/darwin.json +++ b/ee/maintained-apps/outputs/tailscale-app/darwin.json @@ -1,15 +1,15 @@ { "versions": [ { - "version": "1.98.8", + "version": "1.98.9", "queries": { "exists": "SELECT 1 FROM apps WHERE bundle_identifier = 'io.tailscale.ipn.macsys';", - "patched": "SELECT 1 WHERE NOT EXISTS (SELECT 1 FROM apps WHERE bundle_identifier = 'io.tailscale.ipn.macsys' AND version_compare(bundle_short_version, '1.98.8') < 0);" + "patched": "SELECT 1 WHERE NOT EXISTS (SELECT 1 FROM apps WHERE bundle_identifier = 'io.tailscale.ipn.macsys' AND version_compare(bundle_short_version, '1.98.9') < 0);" }, - "installer_url": "https://pkgs.tailscale.com/stable/Tailscale-1.98.8-macos.pkg", - "install_script_ref": "c084062d", + "installer_url": "https://pkgs.tailscale.com/stable/Tailscale-1.98.9-macos.pkg", + "install_script_ref": "92413a45", "uninstall_script_ref": "3e9b0078", - "sha256": "140090acbc9911967bff294572656f3b367c395be85e8427ee2249d412279864", + "sha256": "9fe6de851e04fd16d474b9a566622e0ccc640fd0a3c3b047516167f442da7b0e", "default_categories": [ "Productivity" ] @@ -17,6 +17,6 @@ ], "refs": { "3e9b0078": "#!/bin/bash\n\n# variables\nLOGGED_IN_USER=$(scutil <<< \"show State:/Users/ConsoleUser\" | awk '/Name :/ { print $3 }')\n# functions\n\nexpand_pkgid_and_map() {\n local PKGID=\"$1\"\n local FUNC=\"$2\"\n if [[ \"$PKGID\" == *\"*\" ]]; then\n local prefix=\"${PKGID%\\*}\"\n echo \"Expanding wildcard for PKGID: $PKGID\"\n for receipt in $(pkgutil --pkgs | grep \"^${prefix}\"); do\n echo \"Processing $receipt\"\n \"$FUNC\" \"$receipt\"\n done\n else\n \"$FUNC\" \"$PKGID\"\n fi\n}\n\nforget_pkg() {\n local PKGID=\"$1\"\n expand_pkgid_and_map \"$PKGID\" forget_receipt\n}\n\nforget_receipt() {\n local PKGID=\"$1\"\n sudo pkgutil --forget \"$PKGID\"\n}\n\nquit_application() {\n local bundle_id=\"$1\"\n local timeout_duration=10\n\n # check if the application is running\n local app_running\n app_running=$(osascript -e \"application id \\\"$bundle_id\\\" is running\" 2>/dev/null)\n if [[ \"$app_running\" != \"true\" ]]; then\n return\n fi\n\n local console_user\n console_user=$(stat -f \"%Su\" /dev/console)\n if [[ -z \"$console_user\" || \"$console_user\" == \"root\" || \"$console_user\" == \"loginwindow\" ]]; then\n echo \"Not logged into a non-root GUI; skipping quitting application ID '$bundle_id'.\"\n return\n fi\n\n echo \"Quitting application '$bundle_id'...\"\n\n # try to quit the application within the timeout period\n local quit_success=false\n SECONDS=0\n while (( SECONDS < timeout_duration )); do\n if osascript -e \"tell application id \\\"$bundle_id\\\" to quit\" >/dev/null 2>&1; then\n if ! pgrep -f \"$bundle_id\" >/dev/null 2>&1; then\n echo \"Application '$bundle_id' quit successfully.\"\n quit_success=true\n break\n fi\n fi\n sleep 1\n done\n\n if [[ \"$quit_success\" = false ]]; then\n echo \"Application '$bundle_id' did not quit.\"\n fi\n}\n\n\nremove_pkg_files() {\n local PKGID=\"$1\"\n expand_pkgid_and_map \"$PKGID\" remove_receipt_files\n}\n\nremove_receipt_files() {\n local PKGID=\"$1\"\n local PKGINFO VOLUME INSTALL_LOCATION FULL_INSTALL_LOCATION\n\n echo \"pkgutil --pkg-info-plist \\\"$PKGID\\\"\"\n PKGINFO=$(pkgutil --pkg-info-plist \"$PKGID\")\n VOLUME=$(echo \"$PKGINFO\" | awk '/volume<\\/key>/ {getline; gsub(/.*|<\\/string>.*/, \"\"); print}')\n INSTALL_LOCATION=$(echo \"$PKGINFO\" | awk '/install-location<\\/key>/ {getline; gsub(/.*|<\\/string>.*/, \"\"); print}')\n\n if [ -z \"$INSTALL_LOCATION\" ] || [ \"$INSTALL_LOCATION\" = \"/\" ]; then\n FULL_INSTALL_LOCATION=\"$VOLUME\"\n else\n FULL_INSTALL_LOCATION=\"$VOLUME/$INSTALL_LOCATION\"\n FULL_INSTALL_LOCATION=$(echo \"$FULL_INSTALL_LOCATION\" | sed 's|//|/|g')\n fi\n\n echo \"sudo pkgutil --only-files --files \\\"$PKGID\\\" | sed \\\"s|^|${FULL_INSTALL_LOCATION}/|\\\" | tr '\\\\\\\\n' '\\\\\\\\0' | /usr/bin/sudo -u root -E -- /usr/bin/xargs -0 -- /bin/rm -rf\"\n sudo pkgutil --only-files --files \"$PKGID\" | sed \"s|^|/${INSTALL_LOCATION}/|\" | tr '\\n' '\\0' | /usr/bin/sudo -u root -E -- /usr/bin/xargs -0 -- /bin/rm -rf\n\n echo \"sudo pkgutil --only-dirs --files \\\"$PKGID\\\" | sed \\\"s|^|${FULL_INSTALL_LOCATION}/|\\\" | grep '\\\\.app$' | tr '\\\\\\\\n' '\\\\\\\\0' | /usr/bin/sudo -u root -E -- /usr/bin/xargs -0 -- /bin/rm -rf\"\n sudo pkgutil --only-dirs --files \"$PKGID\" | sed \"s|^|${FULL_INSTALL_LOCATION}/|\" | grep '\\.app$' | tr '\\n' '\\0' | /usr/bin/sudo -u root -E -- /usr/bin/xargs -0 -- /bin/rm -rf\n\n root_app_dir=$(\n sudo pkgutil --only-dirs --files \"$PKGID\" \\\n | sed \"s|^|${FULL_INSTALL_LOCATION}/|\" \\\n | grep 'Applications' \\\n | awk '{ print length, $0 }' \\\n | sort -n \\\n | head -n1 \\\n | cut -d' ' -f2-\n )\n if [ -n \"$root_app_dir\" ]; then\n echo \"sudo rmdir -p \\\"$root_app_dir\\\" 2>/dev/null || :\"\n sudo rmdir -p \"$root_app_dir\" 2>/dev/null || :\n fi\n}\n\ntrash() {\n local logged_in_user=\"$1\"\n local target_file=\"$2\"\n local timestamp=\"$(date +%Y-%m-%d-%s)\"\n local rand=\"$(jot -r 1 0 99999)\"\n\n # replace ~ with /Users/$logged_in_user\n if [[ \"$target_file\" == ~* ]]; then\n target_file=\"/Users/$logged_in_user${target_file:1}\"\n fi\n\n local trash=\"/Users/$logged_in_user/.Trash\"\n\n # If the target contains glob characters, expand it and move each match.\n if [[ \"$target_file\" == *[*?[]* ]]; then\n local file file_name\n local matched=false\n local i=0\n # compgen -G expands the (quoted) pattern itself, so paths containing\n # spaces glob correctly; reading line by line keeps each match intact.\n while IFS= read -r file; do\n [[ -n \"$file\" ]] || continue\n [[ -e \"$file\" || -L \"$file\" ]] || continue\n matched=true\n i=$((i + 1))\n file_name=\"$(basename \"$file\")\"\n echo \"removing $file.\"\n # The per-match counter keeps matches that share a basename from\n # overwriting each other in the trash.\n mv -f \"$file\" \"$trash/${file_name}_${timestamp}_${rand}_${i}\"\n done < <(compgen -G \"$target_file\" 2>/dev/null)\n if [[ \"$matched\" == false ]]; then\n echo \"$target_file doesn't exist.\"\n fi\n return\n fi\n\n local file_name=\"$(basename \"${target_file}\")\"\n\n if [[ -e \"$target_file\" ]]; then\n echo \"removing $target_file.\"\n mv -f \"$target_file\" \"$trash/${file_name}_${timestamp}_${rand}\"\n else\n echo \"$target_file doesn't exist.\"\n fi\n}\n\nquit_application 'io.tailscale.ipn.macsys'\nremove_pkg_files 'com.tailscale.ipn.macsys'\nforget_pkg 'com.tailscale.ipn.macsys'\nsudo rm -rf '/usr/local/bin/tailscale'\nsudo rm -rf '/usr/local/share/man/man8/tssentineld.8'\ntrash $LOGGED_IN_USER '/Library/Tailscale'\ntrash $LOGGED_IN_USER '~/Library/Application Scripts/*.io.tailscale.ipn.macsys'\ntrash $LOGGED_IN_USER '~/Library/Application Scripts/io.tailscale.ipn.macsys'\ntrash $LOGGED_IN_USER '~/Library/Application Scripts/io.tailscale.ipn.macsys.login-item-helper'\ntrash $LOGGED_IN_USER '~/Library/Application Scripts/io.tailscale.ipn.macsys.share-extension'\ntrash $LOGGED_IN_USER '~/Library/Caches/io.tailscale.ipn.macsys'\ntrash $LOGGED_IN_USER '~/Library/Containers/io.tailscale.ipn.macos.network-extension'\ntrash $LOGGED_IN_USER '~/Library/Containers/io.tailscale.ipn.macsys'\ntrash $LOGGED_IN_USER '~/Library/Containers/io.tailscale.ipn.macsys.login-item-helper'\ntrash $LOGGED_IN_USER '~/Library/Containers/io.tailscale.ipn.macsys.share-extension'\ntrash $LOGGED_IN_USER '~/Library/Containers/Tailscale'\ntrash $LOGGED_IN_USER '~/Library/Group Containers/*.io.tailscale.ipn.macsys'\ntrash $LOGGED_IN_USER '~/Library/HTTPStorages/io.tailscale.ipn.macsys'\ntrash $LOGGED_IN_USER '~/Library/HTTPStorages/io.tailscale.ipn.macsys.binarycookies'\ntrash $LOGGED_IN_USER '~/Library/Preferences/io.tailscale.ipn.macsys.plist'\n", - "c084062d": "#!/bin/bash\n\n# variables\nAPPDIR=\"/Applications/\"\nTMPDIR=$(dirname \"$(realpath \"$INSTALLER_PATH\")\")\n# functions\n\nquit_and_track_application() {\n local bundle_id=\"$1\"\n local var_name=\"APP_WAS_RUNNING_$(echo \"$bundle_id\" | tr '.-' '__')\"\n local timeout_duration=10\n\n # check if the application is running\n local app_running\n app_running=$(osascript -e \"application id \\\"$bundle_id\\\" is running\" 2>/dev/null)\n if [[ \"$app_running\" != \"true\" ]]; then\n eval \"export $var_name=0\"\n return\n fi\n\n local console_user\n console_user=$(stat -f \"%Su\" /dev/console)\n if [[ -z \"$console_user\" || \"$console_user\" == \"root\" || \"$console_user\" == \"loginwindow\" ]]; then\n echo \"Not logged into a non-root GUI; skipping quitting application ID '$bundle_id'.\"\n eval \"export $var_name=0\"\n return\n fi\n\n # App was running, mark it for relaunch\n eval \"export $var_name=1\"\n echo \"Application '$bundle_id' was running; will relaunch after installation.\"\n\n echo \"Quitting application '$bundle_id'...\"\n\n # try to quit the application within the timeout period\n local quit_success=false\n SECONDS=0\n while (( SECONDS < timeout_duration )); do\n if osascript -e \"tell application id \\\"$bundle_id\\\" to quit\" >/dev/null 2>&1; then\n if ! pgrep -f \"$bundle_id\" >/dev/null 2>&1; then\n echo \"Application '$bundle_id' quit successfully.\"\n quit_success=true\n break\n fi\n fi\n sleep 1\n done\n\n if [[ \"$quit_success\" = false ]]; then\n echo \"Application '$bundle_id' did not quit.\"\n fi\n}\n\n\nrelaunch_application() {\n local bundle_id=\"$1\"\n local var_name=\"APP_WAS_RUNNING_$(echo \"$bundle_id\" | tr '.-' '__')\"\n local was_running\n\n # Check if the app was running before installation\n eval \"was_running=\\$$var_name\"\n if [[ \"$was_running\" != \"1\" ]]; then\n return\n fi\n\n local console_user\n console_user=$(stat -f \"%Su\" /dev/console)\n if [[ -z \"$console_user\" || \"$console_user\" == \"root\" || \"$console_user\" == \"loginwindow\" ]]; then\n echo \"Not logged into a non-root GUI; skipping relaunching application ID '$bundle_id'.\"\n return\n fi\n\n echo \"Relaunching application '$bundle_id'...\"\n\n # Launch the app in the logged-in user's GUI session. Apps launched by root\n # won't register with the user's Dock/GUI, so run 'open' as the console user.\n # Use 'launchctl asuser' to bootstrap into the console user's Mach namespace\n # and GUI session — 'sudo -u' alone doesn't do this, which can cause\n # LSOpenURLsWithRole() failures even when 'open' exits 0.\n local open_status=0\n if [[ $EUID -eq 0 ]]; then\n local console_uid\n console_uid=$(id -u \"$console_user\")\n /bin/launchctl asuser \"$console_uid\" sudo -u \"$console_user\" open -b \"$bundle_id\" >/dev/null 2>&1 || open_status=$?\n else\n open -b \"$bundle_id\" >/dev/null 2>&1 || open_status=$?\n fi\n\n if [[ $open_status -eq 0 ]]; then\n echo \"Application '$bundle_id' relaunched successfully.\"\n else\n echo \"Failed to relaunch application '$bundle_id'.\"\n fi\n}\n\n\n# install pkg files\nquit_and_track_application 'io.tailscale.ipn.macsys'\nsudo installer -pkg \"$TMPDIR/Tailscale-1.98.8-macos.pkg\" -target /\nrelaunch_application 'io.tailscale.ipn.macsys'\n" + "92413a45": "#!/bin/bash\n\n# variables\nAPPDIR=\"/Applications/\"\nTMPDIR=$(dirname \"$(realpath \"$INSTALLER_PATH\")\")\n# functions\n\nquit_and_track_application() {\n local bundle_id=\"$1\"\n local var_name=\"APP_WAS_RUNNING_$(echo \"$bundle_id\" | tr '.-' '__')\"\n local timeout_duration=10\n\n # check if the application is running\n local app_running\n app_running=$(osascript -e \"application id \\\"$bundle_id\\\" is running\" 2>/dev/null)\n if [[ \"$app_running\" != \"true\" ]]; then\n eval \"export $var_name=0\"\n return\n fi\n\n local console_user\n console_user=$(stat -f \"%Su\" /dev/console)\n if [[ -z \"$console_user\" || \"$console_user\" == \"root\" || \"$console_user\" == \"loginwindow\" ]]; then\n echo \"Not logged into a non-root GUI; skipping quitting application ID '$bundle_id'.\"\n eval \"export $var_name=0\"\n return\n fi\n\n # App was running, mark it for relaunch\n eval \"export $var_name=1\"\n echo \"Application '$bundle_id' was running; will relaunch after installation.\"\n\n echo \"Quitting application '$bundle_id'...\"\n\n # try to quit the application within the timeout period\n local quit_success=false\n SECONDS=0\n while (( SECONDS < timeout_duration )); do\n if osascript -e \"tell application id \\\"$bundle_id\\\" to quit\" >/dev/null 2>&1; then\n if ! pgrep -f \"$bundle_id\" >/dev/null 2>&1; then\n echo \"Application '$bundle_id' quit successfully.\"\n quit_success=true\n break\n fi\n fi\n sleep 1\n done\n\n if [[ \"$quit_success\" = false ]]; then\n echo \"Application '$bundle_id' did not quit.\"\n fi\n}\n\n\nrelaunch_application() {\n local bundle_id=\"$1\"\n local var_name=\"APP_WAS_RUNNING_$(echo \"$bundle_id\" | tr '.-' '__')\"\n local was_running\n\n # Check if the app was running before installation\n eval \"was_running=\\$$var_name\"\n if [[ \"$was_running\" != \"1\" ]]; then\n return\n fi\n\n local console_user\n console_user=$(stat -f \"%Su\" /dev/console)\n if [[ -z \"$console_user\" || \"$console_user\" == \"root\" || \"$console_user\" == \"loginwindow\" ]]; then\n echo \"Not logged into a non-root GUI; skipping relaunching application ID '$bundle_id'.\"\n return\n fi\n\n echo \"Relaunching application '$bundle_id'...\"\n\n # Launch the app in the logged-in user's GUI session. Apps launched by root\n # won't register with the user's Dock/GUI, so run 'open' as the console user.\n # Use 'launchctl asuser' to bootstrap into the console user's Mach namespace\n # and GUI session — 'sudo -u' alone doesn't do this, which can cause\n # LSOpenURLsWithRole() failures even when 'open' exits 0.\n local open_status=0\n if [[ $EUID -eq 0 ]]; then\n local console_uid\n console_uid=$(id -u \"$console_user\")\n /bin/launchctl asuser \"$console_uid\" sudo -u \"$console_user\" open -b \"$bundle_id\" >/dev/null 2>&1 || open_status=$?\n else\n open -b \"$bundle_id\" >/dev/null 2>&1 || open_status=$?\n fi\n\n if [[ $open_status -eq 0 ]]; then\n echo \"Application '$bundle_id' relaunched successfully.\"\n else\n echo \"Failed to relaunch application '$bundle_id'.\"\n fi\n}\n\n\n# install pkg files\nquit_and_track_application 'io.tailscale.ipn.macsys'\nsudo installer -pkg \"$TMPDIR/Tailscale-1.98.9-macos.pkg\" -target /\nrelaunch_application 'io.tailscale.ipn.macsys'\n" } } diff --git a/ee/maintained-apps/outputs/tower/windows.json b/ee/maintained-apps/outputs/tower/windows.json index 611230dbb87..c42feb3c65b 100644 --- a/ee/maintained-apps/outputs/tower/windows.json +++ b/ee/maintained-apps/outputs/tower/windows.json @@ -1,23 +1,23 @@ { "versions": [ { - "version": "12.4.565", + "version": "13.0.575", "queries": { "exists": "SELECT 1 FROM programs WHERE name LIKE 'Tower %' AND publisher = 'SaaS.Group';", - "patched": "SELECT 1 WHERE NOT EXISTS (SELECT 1 FROM programs WHERE name LIKE 'Tower %' AND publisher = 'SaaS.Group' AND version_compare(version, '12.4.565') < 0);" + "patched": "SELECT 1 WHERE NOT EXISTS (SELECT 1 FROM programs WHERE name LIKE 'Tower %' AND publisher = 'SaaS.Group' AND version_compare(version, '13.0.575') < 0);" }, - "installer_url": "https://www.git-tower.com/apps/tower3-win/565-c26aeb25/Tower-12.4.565.msi", + "installer_url": "https://www.git-tower.com/apps/tower3-win/575-0cb979c0/Tower-13.0.575.msi", "install_script_ref": "8959087b", - "uninstall_script_ref": "8940833c", - "sha256": "a6ae4f15f60d13035df994df3226a6dc34c528bdc6a71bb5bb8a4bdc6739311e", + "uninstall_script_ref": "d6c5c5e5", + "sha256": "8bda6db9d7cc891c27903e7a91a788e988d8af993e52934dd1b49fb7bba19dd9", "default_categories": [ "Developer tools" ], - "upgrade_code": "{3B1FBA9F-260D-5585-9DF1-C642CA263F35}" + "upgrade_code": "{871FD9D0-41D3-52BE-AF69-12F8B08740C0}" } ], "refs": { - "8940833c": "# Fleet uninstalls app by finding all related product codes for the specified upgrade code\n$inst = New-Object -ComObject \"WindowsInstaller.Installer\"\n$timeoutSeconds = 300 # 5 minute timeout per product\n\n# MSI exit codes that indicate success. 3010 = ERROR_SUCCESS_REBOOT_REQUIRED,\n# 1641 = ERROR_SUCCESS_REBOOT_INITIATED. Treat these as success rather than failure.\n$successCodes = @(0, 3010, 1641)\n\nforeach ($product_code in $inst.RelatedProducts('{3B1FBA9F-260D-5585-9DF1-C642CA263F35}')) {\n $process = Start-Process msiexec -ArgumentList @(\"/quiet\", \"/x\", $product_code, \"/norestart\") -PassThru\n\n # Wait for process with timeout\n $completed = $process.WaitForExit($timeoutSeconds * 1000)\n\n if (-not $completed) {\n Stop-Process -Id $process.Id -Force -ErrorAction SilentlyContinue\n Exit 1603 # ERROR_UNINSTALL_FAILURE\n }\n\n # If the uninstall failed, bail\n if ($successCodes -notcontains $process.ExitCode) {\n Write-Output \"Uninstall for $($product_code) exited $($process.ExitCode)\"\n Exit $process.ExitCode\n }\n}\n\n# All uninstalls succeeded; exit success\nExit 0\n", - "8959087b": "$logFile = \"${env:TEMP}/fleet-install-software.log\"\n\ntry {\n\n$installProcess = Start-Process msiexec.exe `\n -ArgumentList \"/quiet /norestart /lv ${logFile} /i `\"${env:INSTALLER_PATH}`\"\" `\n -PassThru -Verb RunAs -Wait\n\nGet-Content $logFile -Tail 500\n\nExit $installProcess.ExitCode\n\n} catch {\n Write-Host \"Error: $_\"\n Exit 1\n}\n" + "8959087b": "$logFile = \"${env:TEMP}/fleet-install-software.log\"\n\ntry {\n\n$installProcess = Start-Process msiexec.exe `\n -ArgumentList \"/quiet /norestart /lv ${logFile} /i `\"${env:INSTALLER_PATH}`\"\" `\n -PassThru -Verb RunAs -Wait\n\nGet-Content $logFile -Tail 500\n\nExit $installProcess.ExitCode\n\n} catch {\n Write-Host \"Error: $_\"\n Exit 1\n}\n", + "d6c5c5e5": "# Fleet uninstalls app by finding all related product codes for the specified upgrade code\n$inst = New-Object -ComObject \"WindowsInstaller.Installer\"\n$timeoutSeconds = 300 # 5 minute timeout per product\n\n# MSI exit codes that indicate success. 3010 = ERROR_SUCCESS_REBOOT_REQUIRED,\n# 1641 = ERROR_SUCCESS_REBOOT_INITIATED. Treat these as success rather than failure.\n$successCodes = @(0, 3010, 1641)\n\nforeach ($product_code in $inst.RelatedProducts('{871FD9D0-41D3-52BE-AF69-12F8B08740C0}')) {\n $process = Start-Process msiexec -ArgumentList @(\"/quiet\", \"/x\", $product_code, \"/norestart\") -PassThru\n\n # Wait for process with timeout\n $completed = $process.WaitForExit($timeoutSeconds * 1000)\n\n if (-not $completed) {\n Stop-Process -Id $process.Id -Force -ErrorAction SilentlyContinue\n Exit 1603 # ERROR_UNINSTALL_FAILURE\n }\n\n # If the uninstall failed, bail\n if ($successCodes -notcontains $process.ExitCode) {\n Write-Output \"Uninstall for $($product_code) exited $($process.ExitCode)\"\n Exit $process.ExitCode\n }\n}\n\n# All uninstalls succeeded; exit success\nExit 0\n" } } diff --git a/ee/maintained-apps/outputs/vellum/darwin.json b/ee/maintained-apps/outputs/vellum/darwin.json index ea1ecba0c3d..edb56479ac0 100644 --- a/ee/maintained-apps/outputs/vellum/darwin.json +++ b/ee/maintained-apps/outputs/vellum/darwin.json @@ -1,15 +1,15 @@ { "versions": [ { - "version": "4.1.3", + "version": "4.1.4", "queries": { "exists": "SELECT 1 FROM apps WHERE bundle_identifier = 'co.180g.Vellum';", - "patched": "SELECT 1 WHERE NOT EXISTS (SELECT 1 FROM apps WHERE bundle_identifier = 'co.180g.Vellum' AND version_compare(bundle_short_version, '4.1.3') < 0);" + "patched": "SELECT 1 WHERE NOT EXISTS (SELECT 1 FROM apps WHERE bundle_identifier = 'co.180g.Vellum' AND version_compare(bundle_short_version, '4.1.4') < 0);" }, - "installer_url": "https://180g.s3.amazonaws.com/downloads/Vellum-41300.zip", + "installer_url": "https://180g.s3.amazonaws.com/downloads/Vellum-41400.zip", "install_script_ref": "c835bd77", "uninstall_script_ref": "9259a70c", - "sha256": "d67e379aba6f741dcfca2f75e2b86a3c15d76cca395fce6b26b51a0877f7ed22", + "sha256": "3750ea467e2f368d24b60cd18241cc3f40bafa46bc564b949fd3dc49dce9f511", "default_categories": [ "Productivity" ] diff --git a/ee/maintained-apps/outputs/workflowy/darwin.json b/ee/maintained-apps/outputs/workflowy/darwin.json index dac9b20ccb0..53a5a8b4a03 100644 --- a/ee/maintained-apps/outputs/workflowy/darwin.json +++ b/ee/maintained-apps/outputs/workflowy/darwin.json @@ -1,15 +1,15 @@ { "versions": [ { - "version": "4.3.2607080959", + "version": "4.3.2607151451", "queries": { "exists": "SELECT 1 FROM apps WHERE bundle_identifier = 'com.workflowy.desktop';", - "patched": "SELECT 1 WHERE NOT EXISTS (SELECT 1 FROM apps WHERE bundle_identifier = 'com.workflowy.desktop' AND version_compare(bundle_short_version, '4.3.2607080959') < 0);" + "patched": "SELECT 1 WHERE NOT EXISTS (SELECT 1 FROM apps WHERE bundle_identifier = 'com.workflowy.desktop' AND version_compare(bundle_short_version, '4.3.2607151451') < 0);" }, - "installer_url": "https://github.com/workflowy/desktop/releases/download/v4.3.2607080959/WorkFlowy.zip", + "installer_url": "https://github.com/workflowy/desktop/releases/download/v4.3.2607151451/WorkFlowy.zip", "install_script_ref": "467dafec", "uninstall_script_ref": "effe5345", - "sha256": "1bb7cbdbca0d3e4d30caa962e3fb3d0780fc732b8189892181c4531cf6901b69", + "sha256": "a5144fd3081ef1765a5a4f89367c942ba75803ccad0bff4a8a6790ad052ca52b", "default_categories": [ "Productivity" ] diff --git a/ee/maintained-apps/outputs/zed/darwin.json b/ee/maintained-apps/outputs/zed/darwin.json index 18371c0a6e9..7c94f57ed1e 100644 --- a/ee/maintained-apps/outputs/zed/darwin.json +++ b/ee/maintained-apps/outputs/zed/darwin.json @@ -1,15 +1,15 @@ { "versions": [ { - "version": "1.10.3", + "version": "1.11.3", "queries": { "exists": "SELECT 1 FROM apps WHERE bundle_identifier = 'dev.zed.Zed';", - "patched": "SELECT 1 WHERE NOT EXISTS (SELECT 1 FROM apps WHERE bundle_identifier = 'dev.zed.Zed' AND version_compare(bundle_short_version, '1.10.3') < 0);" + "patched": "SELECT 1 WHERE NOT EXISTS (SELECT 1 FROM apps WHERE bundle_identifier = 'dev.zed.Zed' AND version_compare(bundle_short_version, '1.11.3') < 0);" }, - "installer_url": "https://zed.dev/api/releases/stable/1.10.3/Zed-aarch64.dmg", + "installer_url": "https://zed.dev/api/releases/stable/1.11.3/Zed-aarch64.dmg", "install_script_ref": "ad597b79", "uninstall_script_ref": "2a2c7eb8", - "sha256": "717ab14826889b83ffb46992b5155cf3e32e801805044d5d739d893ffb19a1a0", + "sha256": "0a4957f81595056a80088a2f9f52e9d16e8d0e94bc0cc0f2b2d1d40615bb8d35", "default_categories": [ "Developer tools" ]