Update Fleet-maintained apps (#49732)
Automated ingestion of latest Fleet-maintained app data. <!-- This is an auto-generated comment: release notes by coderabbit.ai --> ## Summary by CodeRabbit * **New Features** * Added support for the latest releases of numerous desktop applications across macOS and Windows, including Amazon Corretto, Claude, Kiro, Postman, Tableau, Thunderbird, and others. * Updated installer downloads and integrity checks for newly available versions. * **Bug Fixes** * Improved app removal by quitting running applications before cleanup for select apps. * Updated uninstall cleanup paths for newer application versions. * **Maintenance** * Refreshed version detection and upgrade checks across the maintained application catalog. * Updated Telegram’s download source for improved installation reliability. <!-- end of auto-generated comment: release notes by coderabbit.ai --> --------- Co-authored-by: allenhouchins <32207388+allenhouchins@users.noreply.github.com>
This commit is contained in:
co-authored by
allenhouchins
parent
2bf0340abc
commit
09ec5d0cc3
@@ -1,10 +1,10 @@
|
||||
{
|
||||
"versions": [
|
||||
{
|
||||
"version": "2.1.8.8",
|
||||
"version": "2.1.8.9",
|
||||
"queries": {
|
||||
"exists": "SELECT 1 FROM apps WHERE bundle_identifier = 'com.hankuper.adlock.desktop';",
|
||||
"patched": "SELECT 1 WHERE NOT EXISTS (SELECT 1 FROM apps WHERE bundle_identifier = 'com.hankuper.adlock.desktop' AND version_compare(bundle_short_version, '2.1.8.8') < 0);"
|
||||
"patched": "SELECT 1 WHERE NOT EXISTS (SELECT 1 FROM apps WHERE bundle_identifier = 'com.hankuper.adlock.desktop' AND version_compare(bundle_short_version, '2.1.8.9') < 0);"
|
||||
},
|
||||
"installer_url": "https://downloads.adlock.com/mac/AdLock_Installer.dmg",
|
||||
"install_script_ref": "ec52d1d9",
|
||||
|
||||
@@ -1,15 +1,15 @@
|
||||
{
|
||||
"versions": [
|
||||
{
|
||||
"version": "11.0.31.11",
|
||||
"version": "11.0.32.9",
|
||||
"queries": {
|
||||
"exists": "SELECT 1 FROM programs WHERE name = 'Amazon Corretto (x64)' AND publisher = 'Amazon' AND version LIKE '11.%';",
|
||||
"patched": "SELECT 1 WHERE NOT EXISTS (SELECT 1 FROM programs WHERE name = 'Amazon Corretto (x64)' AND publisher = 'Amazon' AND version LIKE '11.%' AND version_compare(version, '11.0.31.11') < 0);"
|
||||
"patched": "SELECT 1 WHERE NOT EXISTS (SELECT 1 FROM programs WHERE name = 'Amazon Corretto (x64)' AND publisher = 'Amazon' AND version LIKE '11.%' AND version_compare(version, '11.0.32.9') < 0);"
|
||||
},
|
||||
"installer_url": "https://corretto.aws/downloads/resources/11.0.31.11.1/amazon-corretto-11.0.31.11.1-windows-x64.msi",
|
||||
"installer_url": "https://corretto.aws/downloads/resources/11.0.32.9.1/amazon-corretto-11.0.32.9.1-windows-x64.msi",
|
||||
"install_script_ref": "8959087b",
|
||||
"uninstall_script_ref": "ea6e5144",
|
||||
"sha256": "c941f6d876cda84e7d7bbad78df2f27fcb75f5d68dec276c38f2408fbe0f1286",
|
||||
"sha256": "e621ee7dc09dbfef27fdd0374f228c8987620833fe05114931c7e35cd0408776",
|
||||
"default_categories": [
|
||||
"Developer tools"
|
||||
],
|
||||
|
||||
@@ -1,15 +1,15 @@
|
||||
{
|
||||
"versions": [
|
||||
{
|
||||
"version": "17.0.19.10",
|
||||
"version": "17.0.20.8",
|
||||
"queries": {
|
||||
"exists": "SELECT 1 FROM programs WHERE name = 'Amazon Corretto (x64)' AND publisher = 'Amazon' AND version LIKE '17.%';",
|
||||
"patched": "SELECT 1 WHERE NOT EXISTS (SELECT 1 FROM programs WHERE name = 'Amazon Corretto (x64)' AND publisher = 'Amazon' AND version LIKE '17.%' AND version_compare(version, '17.0.19.10') < 0);"
|
||||
"patched": "SELECT 1 WHERE NOT EXISTS (SELECT 1 FROM programs WHERE name = 'Amazon Corretto (x64)' AND publisher = 'Amazon' AND version LIKE '17.%' AND version_compare(version, '17.0.20.8') < 0);"
|
||||
},
|
||||
"installer_url": "https://corretto.aws/downloads/resources/17.0.19.10.1/amazon-corretto-17.0.19.10.1-windows-x64.msi",
|
||||
"installer_url": "https://corretto.aws/downloads/resources/17.0.20.8.1/amazon-corretto-17.0.20.8.1-windows-x64.msi",
|
||||
"install_script_ref": "8959087b",
|
||||
"uninstall_script_ref": "d85741a4",
|
||||
"sha256": "7ecbfdd4b9897eed776df131c84fb128f5091aa482dec7e41aadf1979072c93d",
|
||||
"sha256": "ed15f0773a080771e5d183db8be7ac43eae468082d800c0563f67ce954b9a0ad",
|
||||
"default_categories": [
|
||||
"Developer tools"
|
||||
],
|
||||
|
||||
@@ -1,15 +1,15 @@
|
||||
{
|
||||
"versions": [
|
||||
{
|
||||
"version": "21.0.11.10",
|
||||
"version": "21.0.12.8",
|
||||
"queries": {
|
||||
"exists": "SELECT 1 FROM programs WHERE name = 'Amazon Corretto (x64)' AND publisher = 'Amazon' AND version LIKE '21.%';",
|
||||
"patched": "SELECT 1 WHERE NOT EXISTS (SELECT 1 FROM programs WHERE name = 'Amazon Corretto (x64)' AND publisher = 'Amazon' AND version LIKE '21.%' AND version_compare(version, '21.0.11.10') < 0);"
|
||||
"patched": "SELECT 1 WHERE NOT EXISTS (SELECT 1 FROM programs WHERE name = 'Amazon Corretto (x64)' AND publisher = 'Amazon' AND version LIKE '21.%' AND version_compare(version, '21.0.12.8') < 0);"
|
||||
},
|
||||
"installer_url": "https://corretto.aws/downloads/resources/21.0.11.10.1/amazon-corretto-21.0.11.10.1-windows-x64.msi",
|
||||
"installer_url": "https://corretto.aws/downloads/resources/21.0.12.8.1/amazon-corretto-21.0.12.8.1-windows-x64.msi",
|
||||
"install_script_ref": "8959087b",
|
||||
"uninstall_script_ref": "291bae71",
|
||||
"sha256": "df8d443f0ab1eca0d1b95177d3d45a100616ecfab93226a2f126dd1f3baafb50",
|
||||
"sha256": "c74844499e9c234050b1fbd89027fee94f99a0139dc4648acc2b461a63d333c0",
|
||||
"default_categories": [
|
||||
"Developer tools"
|
||||
],
|
||||
|
||||
@@ -1,15 +1,15 @@
|
||||
{
|
||||
"versions": [
|
||||
{
|
||||
"version": "25.0.3.9",
|
||||
"version": "25.0.4.7",
|
||||
"queries": {
|
||||
"exists": "SELECT 1 FROM programs WHERE name = 'Amazon Corretto (x64)' AND publisher = 'Amazon' AND version LIKE '25.%';",
|
||||
"patched": "SELECT 1 WHERE NOT EXISTS (SELECT 1 FROM programs WHERE name = 'Amazon Corretto (x64)' AND publisher = 'Amazon' AND version LIKE '25.%' AND version_compare(version, '25.0.3.9') < 0);"
|
||||
"patched": "SELECT 1 WHERE NOT EXISTS (SELECT 1 FROM programs WHERE name = 'Amazon Corretto (x64)' AND publisher = 'Amazon' AND version LIKE '25.%' AND version_compare(version, '25.0.4.7') < 0);"
|
||||
},
|
||||
"installer_url": "https://corretto.aws/downloads/resources/25.0.3.9.1/amazon-corretto-25.0.3.9.1-windows-x64.msi",
|
||||
"installer_url": "https://corretto.aws/downloads/resources/25.0.4.7.1/amazon-corretto-25.0.4.7.1-windows-x64.msi",
|
||||
"install_script_ref": "8959087b",
|
||||
"uninstall_script_ref": "59d14df9",
|
||||
"sha256": "41af78c39715773ae153b9147a0bcaef6cc408d69423437a5d07c1c67613762d",
|
||||
"sha256": "253ec64847a11444d3a5e70b15e56cced476b61c5eac40a3b7488b6679c720ac",
|
||||
"default_categories": [
|
||||
"Developer tools"
|
||||
],
|
||||
|
||||
@@ -1,15 +1,15 @@
|
||||
{
|
||||
"versions": [
|
||||
{
|
||||
"version": "26.0.1.8",
|
||||
"version": "26.0.2.10",
|
||||
"queries": {
|
||||
"exists": "SELECT 1 FROM programs WHERE name = 'Amazon Corretto (x64)' AND publisher = 'Amazon' AND version LIKE '26.%';",
|
||||
"patched": "SELECT 1 WHERE NOT EXISTS (SELECT 1 FROM programs WHERE name = 'Amazon Corretto (x64)' AND publisher = 'Amazon' AND version LIKE '26.%' AND version_compare(version, '26.0.1.8') < 0);"
|
||||
"patched": "SELECT 1 WHERE NOT EXISTS (SELECT 1 FROM programs WHERE name = 'Amazon Corretto (x64)' AND publisher = 'Amazon' AND version LIKE '26.%' AND version_compare(version, '26.0.2.10') < 0);"
|
||||
},
|
||||
"installer_url": "https://corretto.aws/downloads/resources/26.0.1.8.1/amazon-corretto-26.0.1.8.1-windows-x64.msi",
|
||||
"installer_url": "https://corretto.aws/downloads/resources/26.0.2.10.1/amazon-corretto-26.0.2.10.1-windows-x64.msi",
|
||||
"install_script_ref": "8959087b",
|
||||
"uninstall_script_ref": "f237f56e",
|
||||
"sha256": "a1085f5c34196c080b196881d13bc92e022759743d18829f10c962419ad683ad",
|
||||
"sha256": "e5bf4c5879cd76ec53e70c74375f9a3fddcb27df32aeaa9ee6f941a954c6c346",
|
||||
"default_categories": [
|
||||
"Developer tools"
|
||||
],
|
||||
|
||||
@@ -1,15 +1,15 @@
|
||||
{
|
||||
"versions": [
|
||||
{
|
||||
"version": "1.8.0.492",
|
||||
"version": "1.8.0.502",
|
||||
"queries": {
|
||||
"exists": "SELECT 1 FROM programs WHERE name = 'Amazon Corretto 8 (x64)' AND publisher = 'Amazon';",
|
||||
"patched": "SELECT 1 WHERE NOT EXISTS (SELECT 1 FROM programs WHERE name = 'Amazon Corretto 8 (x64)' AND publisher = 'Amazon' AND version_compare(version, '1.8.0.492') < 0);"
|
||||
"patched": "SELECT 1 WHERE NOT EXISTS (SELECT 1 FROM programs WHERE name = 'Amazon Corretto 8 (x64)' AND publisher = 'Amazon' AND version_compare(version, '1.8.0.502') < 0);"
|
||||
},
|
||||
"installer_url": "https://corretto.aws/downloads/resources/8.492.09.2/amazon-corretto-8.492.09.2-windows-x64-jdk.msi",
|
||||
"installer_url": "https://corretto.aws/downloads/resources/8.502.07.1/amazon-corretto-8.502.07.1-windows-x64-jdk.msi",
|
||||
"install_script_ref": "8959087b",
|
||||
"uninstall_script_ref": "1586ea27",
|
||||
"sha256": "b091276b5fc250597b0a940473c10f72d4f37a8aac86eca5f7cd652a45890071",
|
||||
"sha256": "b13b5787b60715aabf0fbafe3ee18efa824c5f633ded0756c7e17a9cac48386e",
|
||||
"default_categories": [
|
||||
"Developer tools"
|
||||
],
|
||||
|
||||
@@ -1,15 +1,15 @@
|
||||
{
|
||||
"versions": [
|
||||
{
|
||||
"version": "1.8.0.492",
|
||||
"version": "1.8.0.502",
|
||||
"queries": {
|
||||
"exists": "SELECT 1 FROM programs WHERE name = 'Amazon Corretto JRE 8 (x64)' AND publisher = 'Amazon';",
|
||||
"patched": "SELECT 1 WHERE NOT EXISTS (SELECT 1 FROM programs WHERE name = 'Amazon Corretto JRE 8 (x64)' AND publisher = 'Amazon' AND version_compare(version, '1.8.0.492') < 0);"
|
||||
"patched": "SELECT 1 WHERE NOT EXISTS (SELECT 1 FROM programs WHERE name = 'Amazon Corretto JRE 8 (x64)' AND publisher = 'Amazon' AND version_compare(version, '1.8.0.502') < 0);"
|
||||
},
|
||||
"installer_url": "https://corretto.aws/downloads/resources/8.492.09.2/amazon-corretto-8.492.09.2-windows-x64-jre.msi",
|
||||
"installer_url": "https://corretto.aws/downloads/resources/8.502.07.1/amazon-corretto-8.502.07.1-windows-x64-jre.msi",
|
||||
"install_script_ref": "8959087b",
|
||||
"uninstall_script_ref": "a91b27a6",
|
||||
"sha256": "9777acb74091b23f075e0bfb98326c44c0e84e698c8d916c3582d3fdcd0cd37c",
|
||||
"sha256": "c3cc682c34fd9cf1a50606f9185f97abc1a2ff11323456b070034357bb049063",
|
||||
"default_categories": [
|
||||
"Developer tools"
|
||||
],
|
||||
|
||||
@@ -1,15 +1,15 @@
|
||||
{
|
||||
"versions": [
|
||||
{
|
||||
"version": "2.36.4",
|
||||
"version": "2.36.5",
|
||||
"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.36.4') < 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.36.5') < 0);"
|
||||
},
|
||||
"installer_url": "https://awscli.amazonaws.com/AWSCLIV2-2.36.4.msi",
|
||||
"installer_url": "https://awscli.amazonaws.com/AWSCLIV2-2.36.5.msi",
|
||||
"install_script_ref": "8959087b",
|
||||
"uninstall_script_ref": "58bcd016",
|
||||
"sha256": "efd30424b75807bd0f4b79f090cedcec8a370fdd030e7c0d3514a42c6d9a22c7",
|
||||
"sha256": "8e8e680058fa17e0a4c71c8dcce4c51463095f23c776a8dd6d44f00c9fe1b390",
|
||||
"default_categories": [
|
||||
"Developer tools"
|
||||
],
|
||||
|
||||
@@ -1,22 +1,22 @@
|
||||
{
|
||||
"versions": [
|
||||
{
|
||||
"version": "25.34.17",
|
||||
"version": "25.36.15",
|
||||
"queries": {
|
||||
"exists": "SELECT 1 FROM programs WHERE name LIKE 'Azul Zulu JDK %' AND publisher = 'Azul Systems, Inc.' AND version LIKE '25.%';",
|
||||
"patched": "SELECT 1 WHERE NOT EXISTS (SELECT 1 FROM programs WHERE name LIKE 'Azul Zulu JDK %' AND publisher = 'Azul Systems, Inc.' AND version LIKE '25.%' AND version_compare(version, '25.34.17') < 0);"
|
||||
"patched": "SELECT 1 WHERE NOT EXISTS (SELECT 1 FROM programs WHERE name LIKE 'Azul Zulu JDK %' AND publisher = 'Azul Systems, Inc.' AND version LIKE '25.%' AND version_compare(version, '25.36.15') < 0);"
|
||||
},
|
||||
"installer_url": "https://cdn.azul.com/zulu/bin/zulu25.34.17-ca-jdk25.0.3-win_x64.msi",
|
||||
"installer_url": "https://cdn.azul.com/zulu/bin/zulu25.36.15-ca-jdk25.0.4-win_x64.msi",
|
||||
"install_script_ref": "8959087b",
|
||||
"uninstall_script_ref": "a2dce35a",
|
||||
"sha256": "e92ebafaa1166fde201e556b2885a68bba276a1837975947c0d3899b8f5b8d97",
|
||||
"uninstall_script_ref": "86b4409e",
|
||||
"sha256": "91a9518d9b9723d48330d52b6c149758e2d3b896542c77d3e3c2ab0fd30c9200",
|
||||
"default_categories": [
|
||||
"Developer tools"
|
||||
]
|
||||
}
|
||||
],
|
||||
"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",
|
||||
"a2dce35a": "$product_code = '{78F5F8F4-405D-4479-9797-23AD3914CA77}'\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"
|
||||
"86b4409e": "$product_code = '{EBD36C05-81B7-43E4-BF66-33A0F793234B}'\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"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,15 +1,15 @@
|
||||
{
|
||||
"versions": [
|
||||
{
|
||||
"version": "1.14.0",
|
||||
"version": "1.14.1",
|
||||
"queries": {
|
||||
"exists": "SELECT 1 FROM apps WHERE bundle_identifier = 'studio.techflow.badgeify';",
|
||||
"patched": "SELECT 1 WHERE NOT EXISTS (SELECT 1 FROM apps WHERE bundle_identifier = 'studio.techflow.badgeify' AND version_compare(bundle_short_version, '1.14.0') < 0);"
|
||||
"patched": "SELECT 1 WHERE NOT EXISTS (SELECT 1 FROM apps WHERE bundle_identifier = 'studio.techflow.badgeify' AND version_compare(bundle_short_version, '1.14.1') < 0);"
|
||||
},
|
||||
"installer_url": "https://api.badgeify.app/release/download/darwin/universal/1.14.0",
|
||||
"installer_url": "https://api.badgeify.app/release/download/darwin/universal/1.14.1",
|
||||
"install_script_ref": "c91686bf",
|
||||
"uninstall_script_ref": "9d0f29ae",
|
||||
"sha256": "54edec479637c89bb1bde509e93d78cb41252d389535847c723305bd6aa2fa11",
|
||||
"sha256": "3d0bd3620e3703d76ec1fc83432858fae93eb3c4e97f7e2d410f6346f4dd32e0",
|
||||
"default_categories": [
|
||||
"Utilities"
|
||||
]
|
||||
|
||||
@@ -1,15 +1,15 @@
|
||||
{
|
||||
"versions": [
|
||||
{
|
||||
"version": "2.3.1",
|
||||
"version": "2.4.1",
|
||||
"queries": {
|
||||
"exists": "SELECT 1 FROM apps WHERE bundle_identifier = 'com.binance.BinanceDesktop';",
|
||||
"patched": "SELECT 1 WHERE NOT EXISTS (SELECT 1 FROM apps WHERE bundle_identifier = 'com.binance.BinanceDesktop' AND version_compare(bundle_short_version, '2.3.1') < 0);"
|
||||
"patched": "SELECT 1 WHERE NOT EXISTS (SELECT 1 FROM apps WHERE bundle_identifier = 'com.binance.BinanceDesktop' AND version_compare(bundle_short_version, '2.4.1') < 0);"
|
||||
},
|
||||
"installer_url": "https://ftp.binance.com/electron-desktop/mac/production/binance-2.3.1-arm64.dmg",
|
||||
"installer_url": "https://ftp.binance.com/electron-desktop/mac/production/binance-2.4.1-arm64.dmg",
|
||||
"install_script_ref": "ca033eac",
|
||||
"uninstall_script_ref": "6006366b",
|
||||
"sha256": "3671790022117d6cd584fc70c3d55b15ea78759c4ff3819cf22ab7c05878981a",
|
||||
"sha256": "19564f74e7d9d6cacd326d0ba2b64cef8aa24d47d78bdf3bd44bd513730919b8",
|
||||
"default_categories": [
|
||||
"Productivity"
|
||||
]
|
||||
|
||||
@@ -1,15 +1,15 @@
|
||||
{
|
||||
"versions": [
|
||||
{
|
||||
"version": "26.715.70719",
|
||||
"version": "26.715.72359",
|
||||
"queries": {
|
||||
"exists": "SELECT 1 FROM apps WHERE bundle_identifier = 'com.openai.chat';",
|
||||
"patched": "SELECT 1 WHERE NOT EXISTS (SELECT 1 FROM apps WHERE bundle_identifier = 'com.openai.chat' AND version_compare(bundle_short_version, '26.715.70719') < 0);"
|
||||
"patched": "SELECT 1 WHERE NOT EXISTS (SELECT 1 FROM apps WHERE bundle_identifier = 'com.openai.chat' AND version_compare(bundle_short_version, '26.715.72359') < 0);"
|
||||
},
|
||||
"installer_url": "https://persistent.oaistatic.com/codex-app-prod/ChatGPT-darwin-arm64-26.715.70719.zip",
|
||||
"installer_url": "https://persistent.oaistatic.com/codex-app-prod/ChatGPT-darwin-arm64-26.715.72359.zip",
|
||||
"install_script_ref": "6872008e",
|
||||
"uninstall_script_ref": "678e6cf0",
|
||||
"sha256": "ef4a5cc09e546ca1f89c5c3e88f50b9d46847e7da21369944980806078c27ee2",
|
||||
"sha256": "bb599bc22331bebb6ca85e8e9493433a495d44f461efcede3e7054f326b047ef",
|
||||
"default_categories": [
|
||||
"Productivity"
|
||||
]
|
||||
|
||||
@@ -1,15 +1,15 @@
|
||||
{
|
||||
"versions": [
|
||||
{
|
||||
"version": "15.2.3.61008",
|
||||
"version": "15.3.0.61167",
|
||||
"queries": {
|
||||
"exists": "SELECT 1 FROM programs WHERE name = 'Cisco Jabber' AND publisher = 'Cisco Systems, Inc';",
|
||||
"patched": "SELECT 1 WHERE NOT EXISTS (SELECT 1 FROM programs WHERE name = 'Cisco Jabber' AND publisher = 'Cisco Systems, Inc' AND version_compare(version, '15.2.3.61008') < 0);"
|
||||
"patched": "SELECT 1 WHERE NOT EXISTS (SELECT 1 FROM programs WHERE name = 'Cisco Jabber' AND publisher = 'Cisco Systems, Inc' AND version_compare(version, '15.3.0.61167') < 0);"
|
||||
},
|
||||
"installer_url": "https://binaries.webex.com/jabberclientwindows/20260527035625/CiscoJabberSetup.msi",
|
||||
"installer_url": "https://binaries.webex.com/jabberclientwindows/20260721091017/CiscoJabberSetup.msi",
|
||||
"install_script_ref": "8959087b",
|
||||
"uninstall_script_ref": "45ec9a61",
|
||||
"sha256": "1390c7ce325ab92ae52d194ace1b84e7667d80a0d290ab7a22f089579ba1e4ce",
|
||||
"sha256": "0a6f8305cd3c01e63ae1eb468e5b8d17376f167ed7d801ec6c7b8127fa75b46e",
|
||||
"default_categories": [
|
||||
"Communication"
|
||||
],
|
||||
|
||||
@@ -1,15 +1,15 @@
|
||||
{
|
||||
"versions": [
|
||||
{
|
||||
"version": "1.24012.0",
|
||||
"version": "1.24012.1",
|
||||
"queries": {
|
||||
"exists": "SELECT 1 FROM apps WHERE bundle_identifier = 'com.anthropic.claudefordesktop';",
|
||||
"patched": "SELECT 1 WHERE NOT EXISTS (SELECT 1 FROM apps WHERE bundle_identifier = 'com.anthropic.claudefordesktop' AND version_compare(bundle_short_version, '1.24012.0') < 0);"
|
||||
"patched": "SELECT 1 WHERE NOT EXISTS (SELECT 1 FROM apps WHERE bundle_identifier = 'com.anthropic.claudefordesktop' AND version_compare(bundle_short_version, '1.24012.1') < 0);"
|
||||
},
|
||||
"installer_url": "https://downloads.claude.ai/releases/darwin/universal/1.24012.0/Claude-44be967d07ffab39b371cc3297a6a71a5ef92fa9.zip",
|
||||
"installer_url": "https://downloads.claude.ai/releases/darwin/universal/1.24012.1/Claude-0adcaed55041a881be363f2c4a4729f67a8b27d7.zip",
|
||||
"install_script_ref": "8b957973",
|
||||
"uninstall_script_ref": "421baa98",
|
||||
"sha256": "769efc63a1c91ac8a6894b453f279a1ce4a01d19aae9bc0ebf4797a6aaa4cb10",
|
||||
"sha256": "de2833b60daabdbf0e9237d9f8f3b8102ef19418e354117b19b321d0a3a12e6f",
|
||||
"default_categories": [
|
||||
"Developer tools"
|
||||
]
|
||||
|
||||
@@ -1,15 +1,15 @@
|
||||
{
|
||||
"versions": [
|
||||
{
|
||||
"version": "1.22209.3",
|
||||
"version": "1.24012.0",
|
||||
"queries": {
|
||||
"exists": "SELECT 1 FROM programs WHERE name = 'Claude' AND publisher = 'Anthropic, PBC';",
|
||||
"patched": "SELECT 1 WHERE NOT EXISTS (SELECT 1 FROM programs WHERE name = 'Claude' AND publisher = 'Anthropic, PBC' AND version_compare(version, '1.22209.3') < 0);"
|
||||
"patched": "SELECT 1 WHERE NOT EXISTS (SELECT 1 FROM programs WHERE name = 'Claude' AND publisher = 'Anthropic, PBC' AND version_compare(version, '1.24012.0') < 0);"
|
||||
},
|
||||
"installer_url": "https://downloads.claude.ai/releases/win32/x64/1.22209.3/Claude-babe11577dfefe3e209c06bd674628d862f0dbae.msix",
|
||||
"installer_url": "https://downloads.claude.ai/releases/win32/x64/1.24012.0/Claude-44be967d07ffab39b371cc3297a6a71a5ef92fa9.msix",
|
||||
"install_script_ref": "16c020cc",
|
||||
"uninstall_script_ref": "03f72055",
|
||||
"sha256": "8fbe26fea90c5077de6bfe4848748ff7ca7646475a713b6b997acf14d5a64dcd",
|
||||
"sha256": "7600470f2e94fecf67030ae4595b116613941291dbebcebcaaf4ce0047946284",
|
||||
"default_categories": [
|
||||
"Productivity"
|
||||
]
|
||||
|
||||
@@ -1,15 +1,15 @@
|
||||
{
|
||||
"versions": [
|
||||
{
|
||||
"version": "2026.2.14.0",
|
||||
"version": "2026.2.16.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.14.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.16.0') < 0);"
|
||||
},
|
||||
"installer_url": "https://cdn.devolutions.net/download/Setup.Devolutions.Launcher.2026.2.14.0.msi",
|
||||
"installer_url": "https://cdn.devolutions.net/download/Setup.Devolutions.Launcher.2026.2.16.0.msi",
|
||||
"install_script_ref": "8959087b",
|
||||
"uninstall_script_ref": "532bd615",
|
||||
"sha256": "b372e0dd767dcff116ef56ef405553da836ab0843d5c018eb005e77de66ec99b",
|
||||
"sha256": "dcc93186906171c38212fbf9540c685a831274c6085d8fd22904eb361d4d1f72",
|
||||
"default_categories": [
|
||||
"Productivity"
|
||||
],
|
||||
|
||||
@@ -1,15 +1,15 @@
|
||||
{
|
||||
"versions": [
|
||||
{
|
||||
"version": "30.3.14",
|
||||
"version": "30.4.1",
|
||||
"queries": {
|
||||
"exists": "SELECT 1 FROM apps WHERE bundle_identifier = 'com.jgraph.drawio.desktop';",
|
||||
"patched": "SELECT 1 WHERE NOT EXISTS (SELECT 1 FROM apps WHERE bundle_identifier = 'com.jgraph.drawio.desktop' AND version_compare(bundle_short_version, '30.3.14') < 0);"
|
||||
"patched": "SELECT 1 WHERE NOT EXISTS (SELECT 1 FROM apps WHERE bundle_identifier = 'com.jgraph.drawio.desktop' AND version_compare(bundle_short_version, '30.4.1') < 0);"
|
||||
},
|
||||
"installer_url": "https://github.com/jgraph/drawio-desktop/releases/download/v30.3.14/draw.io-arm64-30.3.14.dmg",
|
||||
"installer_url": "https://github.com/jgraph/drawio-desktop/releases/download/v30.4.1/draw.io-arm64-30.4.1.dmg",
|
||||
"install_script_ref": "1f3003b7",
|
||||
"uninstall_script_ref": "19c87f7a",
|
||||
"sha256": "2d695296b4eaf90efd38aacd9110e488c18c5896e75b1fd55c6a27b09747f244",
|
||||
"sha256": "445ef3db8ce81e3e0c337cac404baefeb4715efd47ca0b048c5deb48ad842fb9",
|
||||
"default_categories": [
|
||||
"Productivity"
|
||||
]
|
||||
|
||||
@@ -1,15 +1,15 @@
|
||||
{
|
||||
"versions": [
|
||||
{
|
||||
"version": "10.4.5608",
|
||||
"version": "10.4.5642",
|
||||
"queries": {
|
||||
"exists": "SELECT 1 FROM apps WHERE bundle_identifier = 'com.emclient.mail.client';",
|
||||
"patched": "SELECT 1 WHERE NOT EXISTS (SELECT 1 FROM apps WHERE bundle_identifier = 'com.emclient.mail.client' AND version_compare(bundle_short_version, '10.4.5608') < 0);"
|
||||
"patched": "SELECT 1 WHERE NOT EXISTS (SELECT 1 FROM apps WHERE bundle_identifier = 'com.emclient.mail.client' AND version_compare(bundle_short_version, '10.4.5642') < 0);"
|
||||
},
|
||||
"installer_url": "https://cdn-dist.emclient.com/dist/v10.4.5608_Mac/setup.pkg",
|
||||
"installer_url": "https://cdn-dist.emclient.com/dist/v10.4.5642_Mac/setup.pkg",
|
||||
"install_script_ref": "82810e95",
|
||||
"uninstall_script_ref": "eded2ade",
|
||||
"sha256": "646bcf6b01a2d3735356ff90c726e257616ddc1c9fd8f791f6f590e803fe2506",
|
||||
"sha256": "5efe5170e12b971c859f4059cbd8ad5bc1e1e4669492794ed65a019d05c34a08",
|
||||
"default_categories": [
|
||||
"Communication"
|
||||
]
|
||||
|
||||
@@ -1,15 +1,15 @@
|
||||
{
|
||||
"versions": [
|
||||
{
|
||||
"version": "10.4.5606",
|
||||
"version": "10.4.5642",
|
||||
"queries": {
|
||||
"exists": "SELECT 1 FROM programs WHERE name = 'eM Client' AND publisher = 'eM Client s.r.o.';",
|
||||
"patched": "SELECT 1 WHERE NOT EXISTS (SELECT 1 FROM programs WHERE name = 'eM Client' AND publisher = 'eM Client s.r.o.' AND version_compare(version, '10.4.5606') < 0);"
|
||||
"patched": "SELECT 1 WHERE NOT EXISTS (SELECT 1 FROM programs WHERE name = 'eM Client' AND publisher = 'eM Client s.r.o.' AND version_compare(version, '10.4.5642') < 0);"
|
||||
},
|
||||
"installer_url": "https://www.emclient.com/dist/v10.4.5606/setup.msi",
|
||||
"installer_url": "https://www.emclient.com/dist/v10.4.5642/setup.msi",
|
||||
"install_script_ref": "8959087b",
|
||||
"uninstall_script_ref": "04c930bd",
|
||||
"sha256": "9f08f2cbb5a87c1c4950788f4fceffb4edfbe96d8e0940487b28c0884f99b993",
|
||||
"sha256": "6598b679ed601b88a5009ccd3cd085972a8e621698c29c198a60d528a7274b1b",
|
||||
"default_categories": [
|
||||
"Communication"
|
||||
],
|
||||
|
||||
@@ -1,15 +1,15 @@
|
||||
{
|
||||
"versions": [
|
||||
{
|
||||
"version": "126.7.6",
|
||||
"version": "126.7.8",
|
||||
"queries": {
|
||||
"exists": "SELECT 1 FROM programs WHERE name = 'Figma' AND publisher = 'Figma, Inc.';",
|
||||
"patched": "SELECT 1 WHERE NOT EXISTS (SELECT 1 FROM programs WHERE name = 'Figma' AND publisher = 'Figma, Inc.' AND version_compare(version, '126.7.6') < 0);"
|
||||
"patched": "SELECT 1 WHERE NOT EXISTS (SELECT 1 FROM programs WHERE name = 'Figma' AND publisher = 'Figma, Inc.' AND version_compare(version, '126.7.8') < 0);"
|
||||
},
|
||||
"installer_url": "https://desktop.figma.com/win/build/Figma-126.7.6.exe",
|
||||
"installer_url": "https://desktop.figma.com/win/build/Figma-126.7.8.exe",
|
||||
"install_script_ref": "442d71b3",
|
||||
"uninstall_script_ref": "e33afd6b",
|
||||
"sha256": "d403632410e40023f32439ac660c316a3194001a0540ce91b1c2e603fd3e8b5f",
|
||||
"sha256": "27b1550172b4e18054ae03a8e8691e786fa45d3a13fa1643b3f35ea261a9f484",
|
||||
"default_categories": [
|
||||
"Productivity"
|
||||
]
|
||||
|
||||
@@ -1,15 +1,15 @@
|
||||
{
|
||||
"versions": [
|
||||
{
|
||||
"version": "3.0.52",
|
||||
"version": "3.0.53",
|
||||
"queries": {
|
||||
"exists": "SELECT 1 FROM apps WHERE bundle_identifier = 'io.filen.desktop';",
|
||||
"patched": "SELECT 1 WHERE NOT EXISTS (SELECT 1 FROM apps WHERE bundle_identifier = 'io.filen.desktop' AND version_compare(bundle_short_version, '3.0.52') < 0);"
|
||||
"patched": "SELECT 1 WHERE NOT EXISTS (SELECT 1 FROM apps WHERE bundle_identifier = 'io.filen.desktop' AND version_compare(bundle_short_version, '3.0.53') < 0);"
|
||||
},
|
||||
"installer_url": "https://cdn.filen.io/@filen/desktop/release/v3.0.52/Filen_mac_arm64.dmg",
|
||||
"installer_url": "https://cdn.filen.io/@filen/desktop/release/v3.0.53/Filen_mac_arm64.dmg",
|
||||
"install_script_ref": "a77addd7",
|
||||
"uninstall_script_ref": "357adb6a",
|
||||
"sha256": "8ce4e9cba97686b4715d3c261dd1b93a36299e90b0ade9b66ed283859ac228bd",
|
||||
"sha256": "d2a34dc111746abacdf27a684d8e7f9987e0d7279d1989d89a6dcef25842b233",
|
||||
"default_categories": [
|
||||
"Productivity"
|
||||
]
|
||||
|
||||
@@ -6,10 +6,10 @@
|
||||
"exists": "SELECT 1 FROM apps WHERE bundle_identifier = 'org.mozilla.nightly';",
|
||||
"patched": "SELECT 1 WHERE NOT EXISTS (SELECT 1 FROM apps WHERE bundle_identifier = 'org.mozilla.nightly' AND version_compare(bundle_version, '15526.7.21') < 0);"
|
||||
},
|
||||
"installer_url": "https://ftp.mozilla.org/pub/firefox/nightly/2026/07/2026-07-21-09-46-48-mozilla-central/firefox-155.0a1.en-US.mac.dmg",
|
||||
"installer_url": "https://ftp.mozilla.org/pub/firefox/nightly/2026/07/2026-07-21-20-23-27-mozilla-central/firefox-155.0a1.en-US.mac.dmg",
|
||||
"install_script_ref": "418c9331",
|
||||
"uninstall_script_ref": "d7c711ad",
|
||||
"sha256": "9d33b42372f73ee68c76b7c7ea3247a3ef2590ab44bed743efcbab154f525d7c",
|
||||
"sha256": "7aed87246486b561daa4a72dc6165acdbd1a767fdb6174d506dce10d372caadd",
|
||||
"default_categories": [
|
||||
"Browsers"
|
||||
]
|
||||
|
||||
@@ -1,15 +1,15 @@
|
||||
{
|
||||
"versions": [
|
||||
{
|
||||
"version": "154.2607.2009.0",
|
||||
"version": "155.2607.2120.0",
|
||||
"queries": {
|
||||
"exists": "SELECT 1 FROM programs WHERE name = 'Firefox Nightly' AND publisher = 'Mozilla Corporation';",
|
||||
"patched": "SELECT 1 WHERE NOT EXISTS (SELECT 1 FROM programs WHERE name = 'Firefox Nightly' AND publisher = 'Mozilla Corporation' AND version_compare(version, '154.2607.2009.0') < 0);"
|
||||
"patched": "SELECT 1 WHERE NOT EXISTS (SELECT 1 FROM programs WHERE name = 'Firefox Nightly' AND publisher = 'Mozilla Corporation' AND version_compare(version, '155.2607.2120.0') < 0);"
|
||||
},
|
||||
"installer_url": "https://ftp.mozilla.org/pub/firefox/nightly/2026/07/2026-07-20-09-21-50-mozilla-central/firefox-154.0a1.multi.win64.installer.msix",
|
||||
"installer_url": "https://ftp.mozilla.org/pub/firefox/nightly/2026/07/2026-07-21-20-23-27-mozilla-central/firefox-155.0a1.multi.win64.installer.msix",
|
||||
"install_script_ref": "255e7c51",
|
||||
"uninstall_script_ref": "f0d0fed1",
|
||||
"sha256": "dd09241635cdb4f82ea57dea0b32654ae2d106e9584099901f321d93a331e3f9",
|
||||
"sha256": "1a2dbd9e870f921cc511a04864624a83abc9fcab2fc2a4b9af9a45299753c391",
|
||||
"default_categories": [
|
||||
"Browsers"
|
||||
]
|
||||
|
||||
@@ -1,15 +1,15 @@
|
||||
{
|
||||
"versions": [
|
||||
{
|
||||
"version": "5.65.1-latest",
|
||||
"version": "5.66.0-latest",
|
||||
"queries": {
|
||||
"exists": "SELECT 1 FROM apps WHERE bundle_identifier = 'net.flexoptix.flexoptix.app';",
|
||||
"patched": "SELECT 1 WHERE NOT EXISTS (SELECT 1 FROM apps WHERE bundle_identifier = 'net.flexoptix.flexoptix.app' AND version_compare(bundle_short_version, '5.65.1-latest') < 0);"
|
||||
"patched": "SELECT 1 WHERE NOT EXISTS (SELECT 1 FROM apps WHERE bundle_identifier = 'net.flexoptix.flexoptix.app' AND version_compare(bundle_short_version, '5.66.0-latest') < 0);"
|
||||
},
|
||||
"installer_url": "https://flexbox.reconfigure.me/download/electron/mac/arm64/FLEXOPTIX%20App-5.65.1-latest-arm64.dmg",
|
||||
"installer_url": "https://flexbox.reconfigure.me/download/electron/mac/arm64/FLEXOPTIX%20App-5.66.0-latest-arm64.dmg",
|
||||
"install_script_ref": "f02733f2",
|
||||
"uninstall_script_ref": "38a5d563",
|
||||
"sha256": "415ee5dc9c0e2ea22f885ec587006ba59f4eda0e959668fdf10577270b246dce",
|
||||
"sha256": "86749fee72e420611191ba9e52bec5101aec5fc105f34df63309c3662fa79eb0",
|
||||
"default_categories": [
|
||||
"Productivity"
|
||||
]
|
||||
|
||||
@@ -1,15 +1,15 @@
|
||||
{
|
||||
"versions": [
|
||||
{
|
||||
"version": "6.20.0",
|
||||
"version": "7.0.0",
|
||||
"queries": {
|
||||
"exists": "SELECT 1 FROM apps WHERE bundle_identifier = 'com.electron.gitify';",
|
||||
"patched": "SELECT 1 WHERE NOT EXISTS (SELECT 1 FROM apps WHERE bundle_identifier = 'com.electron.gitify' AND version_compare(bundle_short_version, '6.20.0') < 0);"
|
||||
"patched": "SELECT 1 WHERE NOT EXISTS (SELECT 1 FROM apps WHERE bundle_identifier = 'com.electron.gitify' AND version_compare(bundle_short_version, '7.0.0') < 0);"
|
||||
},
|
||||
"installer_url": "https://github.com/gitify-app/gitify/releases/download/v6.20.0/Gitify-6.20.0-universal-mac.zip",
|
||||
"installer_url": "https://github.com/gitify-app/gitify/releases/download/v7.0.0/Gitify-7.0.0-universal-mac.zip",
|
||||
"install_script_ref": "4dfde5cf",
|
||||
"uninstall_script_ref": "65bf9482",
|
||||
"sha256": "8fc383a66b7190e33b488bdd208178e35e4cbc9d22eb8bd3d3931ab9f3e77a1b",
|
||||
"sha256": "2c6f2a64323cedc5b02edfc8798908457f93930e5e97dc80c75b557ae6dbd91b",
|
||||
"default_categories": [
|
||||
"Utilities"
|
||||
]
|
||||
|
||||
@@ -1,10 +1,10 @@
|
||||
{
|
||||
"versions": [
|
||||
{
|
||||
"version": "150.0.7871.129",
|
||||
"version": "150.0.7871.182",
|
||||
"queries": {
|
||||
"exists": "SELECT 1 FROM apps WHERE bundle_identifier = 'com.google.Chrome';",
|
||||
"patched": "SELECT 1 WHERE NOT EXISTS (SELECT 1 FROM apps WHERE bundle_identifier = 'com.google.Chrome' AND version_compare(bundle_short_version, '150.0.7871.129') < 0);"
|
||||
"patched": "SELECT 1 WHERE NOT EXISTS (SELECT 1 FROM apps WHERE bundle_identifier = 'com.google.Chrome' AND version_compare(bundle_short_version, '150.0.7871.182') < 0);"
|
||||
},
|
||||
"installer_url": "https://dl.google.com/dl/chrome/mac/universal/stable/gcem/GoogleChrome.pkg",
|
||||
"install_script_ref": "bf744c88",
|
||||
|
||||
@@ -1,10 +1,10 @@
|
||||
{
|
||||
"versions": [
|
||||
{
|
||||
"version": "150.0.7871.129",
|
||||
"version": "150.0.7871.182",
|
||||
"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.129') < 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.182') < 0);"
|
||||
},
|
||||
"installer_url": "https://dl.google.com/dl/chrome/install/googlechromestandaloneenterprise64.msi",
|
||||
"install_script_ref": "8959087b",
|
||||
|
||||
@@ -1,15 +1,15 @@
|
||||
{
|
||||
"versions": [
|
||||
{
|
||||
"version": "1.2.19",
|
||||
"version": "1.2.20",
|
||||
"queries": {
|
||||
"exists": "SELECT 1 FROM apps WHERE bundle_identifier = 'com.hive.app';",
|
||||
"patched": "SELECT 1 WHERE NOT EXISTS (SELECT 1 FROM apps WHERE bundle_identifier = 'com.hive.app' AND version_compare(bundle_short_version, '1.2.19') < 0);"
|
||||
"patched": "SELECT 1 WHERE NOT EXISTS (SELECT 1 FROM apps WHERE bundle_identifier = 'com.hive.app' AND version_compare(bundle_short_version, '1.2.20') < 0);"
|
||||
},
|
||||
"installer_url": "https://github.com/morapelker/hive/releases/download/v1.2.19/Hive-1.2.19-arm64.dmg",
|
||||
"installer_url": "https://github.com/morapelker/hive/releases/download/v1.2.20/Hive-1.2.20-arm64.dmg",
|
||||
"install_script_ref": "6b39e7ad",
|
||||
"uninstall_script_ref": "78bb4e43",
|
||||
"sha256": "3990dc3c56c60a32a5693f3ad9b507ef56798b2bf5dec59b26d87d39eb061a1f",
|
||||
"sha256": "e0023d701ba2fc8f195dcee11624e0e46fed86888f8c1ed73fffb4d53d9b96e7",
|
||||
"default_categories": [
|
||||
"Productivity"
|
||||
]
|
||||
|
||||
@@ -1,15 +1,15 @@
|
||||
{
|
||||
"versions": [
|
||||
{
|
||||
"version": "1.0.182",
|
||||
"version": "1.0.198",
|
||||
"queries": {
|
||||
"exists": "SELECT 1 FROM apps WHERE bundle_identifier = 'dev.kiro.desktop';",
|
||||
"patched": "SELECT 1 WHERE NOT EXISTS (SELECT 1 FROM apps WHERE bundle_identifier = 'dev.kiro.desktop' AND version_compare(bundle_short_version, '1.0.182') < 0);"
|
||||
"patched": "SELECT 1 WHERE NOT EXISTS (SELECT 1 FROM apps WHERE bundle_identifier = 'dev.kiro.desktop' AND version_compare(bundle_short_version, '1.0.198') < 0);"
|
||||
},
|
||||
"installer_url": "https://prod.download.desktop.kiro.dev/releases/stable/darwin-arm64/signed/1.0.182/kiro-ide-1.0.182-stable-darwin-arm64.dmg",
|
||||
"installer_url": "https://prod.download.desktop.kiro.dev/releases/stable/darwin-arm64/signed/1.0.198/kiro-ide-1.0.198-stable-darwin-arm64.dmg",
|
||||
"install_script_ref": "28c3d1eb",
|
||||
"uninstall_script_ref": "b5d79db0",
|
||||
"sha256": "afe063cafd94622daf9844b37572826948a096cb46754a3ce3cd4bc131bd0dea",
|
||||
"sha256": "172605f2faf84ec4047d5e7890306fda2df5149a8ee9abd52bbd848bcc7ba556",
|
||||
"default_categories": [
|
||||
"Developer tools"
|
||||
]
|
||||
|
||||
@@ -1,15 +1,15 @@
|
||||
{
|
||||
"versions": [
|
||||
{
|
||||
"version": "1.0.182",
|
||||
"version": "1.0.198",
|
||||
"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.182') < 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.198') < 0);"
|
||||
},
|
||||
"installer_url": "https://prod.download.desktop.kiro.dev/releases/stable/win32-x64/signed/1.0.182/kiro-ide-1.0.182-stable-win32-x64.exe",
|
||||
"installer_url": "https://prod.download.desktop.kiro.dev/releases/stable/win32-x64/signed/1.0.198/kiro-ide-1.0.198-stable-win32-x64.exe",
|
||||
"install_script_ref": "c5bc3c21",
|
||||
"uninstall_script_ref": "afe8f2fa",
|
||||
"sha256": "8e82d97f492961fbeef41db2bb0636a7e173b1ea05402eb744068d994f1c687d",
|
||||
"sha256": "b7614f5c9b11df95c8628d70c54b038ec02415555699dcb081ba86199b2c7f77",
|
||||
"default_categories": [
|
||||
"Developer tools"
|
||||
]
|
||||
|
||||
@@ -1,15 +1,15 @@
|
||||
{
|
||||
"versions": [
|
||||
{
|
||||
"version": "1.22.0",
|
||||
"version": "1.23.0",
|
||||
"queries": {
|
||||
"exists": "SELECT 1 FROM apps WHERE bundle_identifier = 'com.mailspring.mailspring';",
|
||||
"patched": "SELECT 1 WHERE NOT EXISTS (SELECT 1 FROM apps WHERE bundle_identifier = 'com.mailspring.mailspring' AND version_compare(bundle_short_version, '1.22.0') < 0);"
|
||||
"patched": "SELECT 1 WHERE NOT EXISTS (SELECT 1 FROM apps WHERE bundle_identifier = 'com.mailspring.mailspring' AND version_compare(bundle_short_version, '1.23.0') < 0);"
|
||||
},
|
||||
"installer_url": "https://github.com/Foundry376/Mailspring/releases/download/1.22.0/Mailspring-AppleSilicon.zip",
|
||||
"installer_url": "https://github.com/Foundry376/Mailspring/releases/download/1.23.0/Mailspring-AppleSilicon.zip",
|
||||
"install_script_ref": "486cead2",
|
||||
"uninstall_script_ref": "d87f7bb0",
|
||||
"sha256": "c1097dd6f520c4e245f0b08014ed24ee544b7990332463b512970d13d0cd8be3",
|
||||
"sha256": "a9f641d9dfc9a5f0a3ecb87b3492ab416c0a8cbdfcd3ec424d7ae99e180886ea",
|
||||
"default_categories": [
|
||||
"Productivity"
|
||||
]
|
||||
|
||||
@@ -1,10 +1,10 @@
|
||||
{
|
||||
"versions": [
|
||||
{
|
||||
"version": "6.4.0.2",
|
||||
"version": "6.5.0.2",
|
||||
"queries": {
|
||||
"exists": "SELECT 1 FROM apps WHERE bundle_identifier = 'mega.mac';",
|
||||
"patched": "SELECT 1 WHERE NOT EXISTS (SELECT 1 FROM apps WHERE bundle_identifier = 'mega.mac' AND version_compare(bundle_short_version, '6.4.0.2') < 0);"
|
||||
"patched": "SELECT 1 WHERE NOT EXISTS (SELECT 1 FROM apps WHERE bundle_identifier = 'mega.mac' AND version_compare(bundle_short_version, '6.5.0.2') < 0);"
|
||||
},
|
||||
"installer_url": "https://mega.nz/MEGAsyncSetupArm64.dmg",
|
||||
"install_script_ref": "eabe95a2",
|
||||
|
||||
@@ -1,10 +1,10 @@
|
||||
{
|
||||
"versions": [
|
||||
{
|
||||
"version": "16.111",
|
||||
"version": "16.111.1",
|
||||
"queries": {
|
||||
"exists": "SELECT 1 FROM apps WHERE bundle_identifier = 'com.microsoft.Excel';",
|
||||
"patched": "SELECT 1 WHERE NOT EXISTS (SELECT 1 FROM apps WHERE bundle_identifier = 'com.microsoft.Excel' AND version_compare(bundle_short_version, '16.111') < 0);"
|
||||
"patched": "SELECT 1 WHERE NOT EXISTS (SELECT 1 FROM apps WHERE bundle_identifier = 'com.microsoft.Excel' AND version_compare(bundle_short_version, '16.111.1') < 0);"
|
||||
},
|
||||
"installer_url": "https://res.public.onecdn.static.microsoft/mro1cdnstorage/C1297A47-86C4-4C1F-97FA-950631F94777/MacAutoupdate/Microsoft_Excel_16.111.26071913_Installer.pkg",
|
||||
"install_script_ref": "a058ee4b",
|
||||
|
||||
@@ -1,10 +1,10 @@
|
||||
{
|
||||
"versions": [
|
||||
{
|
||||
"version": "16.111",
|
||||
"version": "16.111.1",
|
||||
"queries": {
|
||||
"exists": "SELECT 1 FROM apps WHERE bundle_identifier = 'com.microsoft.onenote.mac';",
|
||||
"patched": "SELECT 1 WHERE NOT EXISTS (SELECT 1 FROM apps WHERE bundle_identifier = 'com.microsoft.onenote.mac' AND version_compare(bundle_short_version, '16.111') < 0);"
|
||||
"patched": "SELECT 1 WHERE NOT EXISTS (SELECT 1 FROM apps WHERE bundle_identifier = 'com.microsoft.onenote.mac' AND version_compare(bundle_short_version, '16.111.1') < 0);"
|
||||
},
|
||||
"installer_url": "https://res.public.onecdn.static.microsoft/mro1cdnstorage/C1297A47-86C4-4C1F-97FA-950631F94777/MacAutoupdate/Microsoft_OneNote_16.111.26071913_Updater.pkg",
|
||||
"install_script_ref": "fe16d50a",
|
||||
|
||||
@@ -1,10 +1,10 @@
|
||||
{
|
||||
"versions": [
|
||||
{
|
||||
"version": "16.111",
|
||||
"version": "16.111.1",
|
||||
"queries": {
|
||||
"exists": "SELECT 1 FROM apps WHERE bundle_identifier = 'com.microsoft.Powerpoint';",
|
||||
"patched": "SELECT 1 WHERE NOT EXISTS (SELECT 1 FROM apps WHERE bundle_identifier = 'com.microsoft.Powerpoint' AND version_compare(bundle_short_version, '16.111') < 0);"
|
||||
"patched": "SELECT 1 WHERE NOT EXISTS (SELECT 1 FROM apps WHERE bundle_identifier = 'com.microsoft.Powerpoint' AND version_compare(bundle_short_version, '16.111.1') < 0);"
|
||||
},
|
||||
"installer_url": "https://res.public.onecdn.static.microsoft/mro1cdnstorage/C1297A47-86C4-4C1F-97FA-950631F94777/MacAutoupdate/Microsoft_PowerPoint_16.111.26071913_Installer.pkg",
|
||||
"install_script_ref": "daf855a0",
|
||||
|
||||
@@ -1,10 +1,10 @@
|
||||
{
|
||||
"versions": [
|
||||
{
|
||||
"version": "16.111",
|
||||
"version": "16.111.1",
|
||||
"queries": {
|
||||
"exists": "SELECT 1 FROM apps WHERE bundle_identifier = 'com.microsoft.Word';",
|
||||
"patched": "SELECT 1 WHERE NOT EXISTS (SELECT 1 FROM apps WHERE bundle_identifier = 'com.microsoft.Word' AND version_compare(bundle_short_version, '16.111') < 0);"
|
||||
"patched": "SELECT 1 WHERE NOT EXISTS (SELECT 1 FROM apps WHERE bundle_identifier = 'com.microsoft.Word' AND version_compare(bundle_short_version, '16.111.1') < 0);"
|
||||
},
|
||||
"installer_url": "https://res.public.onecdn.static.microsoft/mro1cdnstorage/C1297A47-86C4-4C1F-97FA-950631F94777/MacAutoupdate/Microsoft_Word_16.111.26071913_Installer.pkg",
|
||||
"install_script_ref": "e06030dd",
|
||||
|
||||
@@ -1,15 +1,15 @@
|
||||
{
|
||||
"versions": [
|
||||
{
|
||||
"version": "3.18.115",
|
||||
"version": "3.18.116",
|
||||
"queries": {
|
||||
"exists": "SELECT 1 FROM apps WHERE bundle_identifier = 'com.milanote.app';",
|
||||
"patched": "SELECT 1 WHERE NOT EXISTS (SELECT 1 FROM apps WHERE bundle_identifier = 'com.milanote.app' AND version_compare(bundle_short_version, '3.18.115') < 0);"
|
||||
"patched": "SELECT 1 WHERE NOT EXISTS (SELECT 1 FROM apps WHERE bundle_identifier = 'com.milanote.app' AND version_compare(bundle_short_version, '3.18.116') < 0);"
|
||||
},
|
||||
"installer_url": "https://milanote-app-releases.s3.amazonaws.com/Milanote-3.18.115.dmg",
|
||||
"installer_url": "https://milanote-app-releases.s3.amazonaws.com/Milanote-3.18.116.dmg",
|
||||
"install_script_ref": "ed82e649",
|
||||
"uninstall_script_ref": "19269206",
|
||||
"sha256": "b28cf995c3740544686c31aa19284937691bf001bbe90dc442386a3fca302d48",
|
||||
"sha256": "8948ea92837da5889f29144db8096981ceb0cfa2363db7b7e7f39d5da1087a5c",
|
||||
"default_categories": [
|
||||
"Developer tools"
|
||||
]
|
||||
|
||||
@@ -1,10 +1,10 @@
|
||||
{
|
||||
"versions": [
|
||||
{
|
||||
"version": "0.11.160",
|
||||
"version": "0.11.162",
|
||||
"queries": {
|
||||
"exists": "SELECT 1 FROM apps WHERE bundle_identifier = 'com.electron.realtimeboard';",
|
||||
"patched": "SELECT 1 WHERE NOT EXISTS (SELECT 1 FROM apps WHERE bundle_identifier = 'com.electron.realtimeboard' AND version_compare(bundle_short_version, '0.11.160') < 0);"
|
||||
"patched": "SELECT 1 WHERE NOT EXISTS (SELECT 1 FROM apps WHERE bundle_identifier = 'com.electron.realtimeboard' AND version_compare(bundle_short_version, '0.11.162') < 0);"
|
||||
},
|
||||
"installer_url": "https://desktop.miro.com/platforms/darwin-arm64/Install-Miro.dmg",
|
||||
"install_script_ref": "ea60f0ac",
|
||||
|
||||
@@ -8,7 +8,7 @@
|
||||
},
|
||||
"installer_url": "https://desktop-release.notion-static.com/Notion-7.27.0-arm64.dmg",
|
||||
"install_script_ref": "20b617ec",
|
||||
"uninstall_script_ref": "5400135a",
|
||||
"uninstall_script_ref": "ac52c373",
|
||||
"sha256": "436d41aa3171252138de5b45c57cd85b9c7150d4c0b08c4e8d171e13700d4994",
|
||||
"default_categories": [
|
||||
"Productivity"
|
||||
@@ -17,6 +17,6 @@
|
||||
],
|
||||
"refs": {
|
||||
"20b617ec": "#!/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# extract contents\nMOUNT_POINT=$(mktemp -d /tmp/dmg_mount_XXXXXX)\nyes | hdiutil attach -plist -nobrowse -readonly -mountpoint \"$MOUNT_POINT\" \"$INSTALLER_PATH\" || exit 1\nsudo cp -R \"$MOUNT_POINT\"/* \"$TMPDIR\"\nhdiutil detach \"$MOUNT_POINT\" || true\n# copy to the applications folder\nquit_and_track_application 'notion.id'\nif [ -d \"$APPDIR/Notion.app\" ]; then\n\tsudo mv \"$APPDIR/Notion.app\" \"$TMPDIR/Notion.app.bkp\"\nfi\nsudo cp -R \"$TMPDIR/Notion.app\" \"$APPDIR\"\nrelaunch_application 'notion.id'\n",
|
||||
"5400135a": "#!/bin/bash\n\n# variables\nAPPDIR=\"/Applications/\"\nLOGGED_IN_USER=$(scutil <<< \"show State:/Users/ConsoleUser\" | awk '/Name :/ { print $3 }')\n# functions\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\nsudo rm -rf \"$APPDIR/Notion.app\"\ntrash $LOGGED_IN_USER '~/Library/Application Support/Caches/notion-updater'\ntrash $LOGGED_IN_USER '~/Library/Application Support/com.apple.sharedfilelist/com.apple.LSSharedFileList.ApplicationRecentDocuments/notion.id.sfl*'\ntrash $LOGGED_IN_USER '~/Library/Application Support/Notion'\ntrash $LOGGED_IN_USER '~/Library/Caches/notion.id*'\ntrash $LOGGED_IN_USER '~/Library/Logs/Notion'\ntrash $LOGGED_IN_USER '~/Library/Preferences/ByHost/notion.id.*'\ntrash $LOGGED_IN_USER '~/Library/Preferences/notion.id.*'\ntrash $LOGGED_IN_USER '~/Library/Saved Application State/notion.id.savedState'\ntrash $LOGGED_IN_USER '~/Library/WebKit/notion.id'\n"
|
||||
"ac52c373": "#!/bin/bash\n\n# variables\nAPPDIR=\"/Applications/\"\nLOGGED_IN_USER=$(scutil <<< \"show State:/Users/ConsoleUser\" | awk '/Name :/ { print $3 }')\n# functions\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\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 'notion.id'\nsudo rm -rf \"$APPDIR/Notion.app\"\ntrash $LOGGED_IN_USER '~/Library/Application Support/Caches/notion-updater'\ntrash $LOGGED_IN_USER '~/Library/Application Support/com.apple.sharedfilelist/com.apple.LSSharedFileList.ApplicationRecentDocuments/notion.id.sfl*'\ntrash $LOGGED_IN_USER '~/Library/Application Support/Notion'\ntrash $LOGGED_IN_USER '~/Library/Caches/notion.id*'\ntrash $LOGGED_IN_USER '~/Library/Logs/Notion'\ntrash $LOGGED_IN_USER '~/Library/Preferences/ByHost/notion.id.*'\ntrash $LOGGED_IN_USER '~/Library/Preferences/notion.id.*'\ntrash $LOGGED_IN_USER '~/Library/Saved Application State/notion.id.savedState'\ntrash $LOGGED_IN_USER '~/Library/WebKit/notion.id'\n"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,15 +1,15 @@
|
||||
{
|
||||
"versions": [
|
||||
{
|
||||
"version": "12.20.1",
|
||||
"version": "12.20.2",
|
||||
"queries": {
|
||||
"exists": "SELECT 1 FROM apps WHERE bundle_identifier = 'com.postmanlabs.mac';",
|
||||
"patched": "SELECT 1 WHERE NOT EXISTS (SELECT 1 FROM apps WHERE bundle_identifier = 'com.postmanlabs.mac' AND version_compare(bundle_short_version, '12.20.1') < 0);"
|
||||
"patched": "SELECT 1 WHERE NOT EXISTS (SELECT 1 FROM apps WHERE bundle_identifier = 'com.postmanlabs.mac' AND version_compare(bundle_short_version, '12.20.2') < 0);"
|
||||
},
|
||||
"installer_url": "https://dl.pstmn.io/download/version/12.20.1/osx_arm64",
|
||||
"installer_url": "https://dl.pstmn.io/download/version/12.20.2/osx_arm64",
|
||||
"install_script_ref": "96d73870",
|
||||
"uninstall_script_ref": "966b2fa5",
|
||||
"sha256": "3a664372c2f10f3160ea4fba2ca28618bdb0297170d8093b7eda06710eb4a2c0",
|
||||
"sha256": "11ad485ab8fa266f8e155df4619ab49dea0b4df894fb35256ebf3d15685072da",
|
||||
"default_categories": [
|
||||
"Developer tools"
|
||||
]
|
||||
|
||||
@@ -1,15 +1,15 @@
|
||||
{
|
||||
"versions": [
|
||||
{
|
||||
"version": "12.20.1",
|
||||
"version": "12.20.2",
|
||||
"queries": {
|
||||
"exists": "SELECT 1 FROM programs WHERE name LIKE 'Postman x64 %' AND publisher = 'Postman';",
|
||||
"patched": "SELECT 1 WHERE NOT EXISTS (SELECT 1 FROM programs WHERE name LIKE 'Postman x64 %' AND publisher = 'Postman' AND version_compare(version, '12.20.1') < 0);"
|
||||
"patched": "SELECT 1 WHERE NOT EXISTS (SELECT 1 FROM programs WHERE name LIKE 'Postman x64 %' AND publisher = 'Postman' AND version_compare(version, '12.20.2') < 0);"
|
||||
},
|
||||
"installer_url": "https://dl.pstmn.io/download/version/12.20.1/windows_64",
|
||||
"installer_url": "https://dl.pstmn.io/download/version/12.20.2/windows_64",
|
||||
"install_script_ref": "8594f0bc",
|
||||
"uninstall_script_ref": "fd59d029",
|
||||
"sha256": "7df7a40a51aa88fe0c97e946dfd2b882b6ac98007235a07579369df985d3eefd",
|
||||
"sha256": "4d1b199005f2c564a08be89af7252ec716e36aa1bb82e74e7fc13ed449bbb615",
|
||||
"default_categories": [
|
||||
"Developer tools"
|
||||
]
|
||||
|
||||
@@ -1,15 +1,15 @@
|
||||
{
|
||||
"versions": [
|
||||
{
|
||||
"version": "2.155.756.0",
|
||||
"version": "2.156.951.0",
|
||||
"queries": {
|
||||
"exists": "SELECT 1 FROM programs WHERE name = 'Microsoft Power BI Desktop (x64)' AND publisher = 'Microsoft Corporation';",
|
||||
"patched": "SELECT 1 WHERE NOT EXISTS (SELECT 1 FROM programs WHERE name = 'Microsoft Power BI Desktop (x64)' AND publisher = 'Microsoft Corporation' AND version_compare(version, '2.155.756.0') < 0);"
|
||||
"patched": "SELECT 1 WHERE NOT EXISTS (SELECT 1 FROM programs WHERE name = 'Microsoft Power BI Desktop (x64)' AND publisher = 'Microsoft Corporation' AND version_compare(version, '2.156.951.0') < 0);"
|
||||
},
|
||||
"installer_url": "https://download.microsoft.com/download/8/8/0/880BCA75-79DD-466A-927D-1ABF1F5454B0/PBIDesktopSetup-2026-06_x64.exe",
|
||||
"installer_url": "https://download.microsoft.com/download/8/8/0/880BCA75-79DD-466A-927D-1ABF1F5454B0/PBIDesktopSetup-2026-07_x64.exe",
|
||||
"install_script_ref": "cc478c11",
|
||||
"uninstall_script_ref": "abc3b459",
|
||||
"sha256": "d73aaadbb3e22095057be5eae8d3b8ac96b33be17d18d41e58c4c39493e3d185",
|
||||
"sha256": "ff265b2dd4a52e77475452de014ed5babb4c73b83284fc17adda7d774a62c5c4",
|
||||
"default_categories": [
|
||||
"Productivity"
|
||||
]
|
||||
|
||||
@@ -1,15 +1,15 @@
|
||||
{
|
||||
"versions": [
|
||||
{
|
||||
"version": "150.49.5.129",
|
||||
"version": "150.49.7.182",
|
||||
"queries": {
|
||||
"exists": "SELECT 1 FROM apps WHERE bundle_identifier = 'com.talon-sec.Work';",
|
||||
"patched": "SELECT 1 WHERE NOT EXISTS (SELECT 1 FROM apps WHERE bundle_identifier = 'com.talon-sec.Work' AND version_compare(bundle_short_version, '150.49.5.129') < 0);"
|
||||
"patched": "SELECT 1 WHERE NOT EXISTS (SELECT 1 FROM apps WHERE bundle_identifier = 'com.talon-sec.Work' AND version_compare(bundle_short_version, '150.49.7.182') < 0);"
|
||||
},
|
||||
"installer_url": "https://updates.talon-sec.com/releases/Prisma%20Access%20Browser/mac/packaged/universal/Prisma%20Access%20Browser-150.49.5.129-6a8a165d.pkg",
|
||||
"installer_url": "https://updates.talon-sec.com/releases/Prisma%20Access%20Browser/mac/packaged/universal/Prisma%20Access%20Browser-150.49.7.182-c674b580.pkg",
|
||||
"install_script_ref": "7381dac4",
|
||||
"uninstall_script_ref": "ff947f47",
|
||||
"sha256": "4bcf5d4532851a02a62cbcd84adcb3ca50cc1b2670102f16639e78f0a2672943",
|
||||
"sha256": "1a4c888b95cd435877ee58a6e030fa4af71de45c0a16b0012e6b32e18b88f0fe",
|
||||
"default_categories": [
|
||||
"Browsers"
|
||||
]
|
||||
|
||||
@@ -1,15 +1,15 @@
|
||||
{
|
||||
"versions": [
|
||||
{
|
||||
"version": "5.6.2",
|
||||
"version": "5.6.3",
|
||||
"queries": {
|
||||
"exists": "SELECT 1 FROM apps WHERE bundle_identifier = 'com.figure53.QLab.5';",
|
||||
"patched": "SELECT 1 WHERE NOT EXISTS (SELECT 1 FROM apps WHERE bundle_identifier = 'com.figure53.QLab.5' AND version_compare(bundle_short_version, '5.6.2') < 0);"
|
||||
"patched": "SELECT 1 WHERE NOT EXISTS (SELECT 1 FROM apps WHERE bundle_identifier = 'com.figure53.QLab.5' AND version_compare(bundle_short_version, '5.6.3') < 0);"
|
||||
},
|
||||
"installer_url": "https://qlab.app/downloads/archive/QLab-5.6.2.zip",
|
||||
"installer_url": "https://qlab.app/downloads/archive/QLab-5.6.3.zip",
|
||||
"install_script_ref": "00ad3e5d",
|
||||
"uninstall_script_ref": "a60a2320",
|
||||
"sha256": "923df9c0ef8c0b659439fdfb0111b022dd841692e4b0672a34a56b7e439436fa",
|
||||
"sha256": "fa655221b20f5add503faedfacd1d8d3b37a24f0ac7b05736c3e61e905300dea",
|
||||
"default_categories": [
|
||||
"Developer tools"
|
||||
]
|
||||
|
||||
@@ -1,15 +1,15 @@
|
||||
{
|
||||
"versions": [
|
||||
{
|
||||
"version": "2026.2.14.0",
|
||||
"version": "2026.2.16.0",
|
||||
"queries": {
|
||||
"exists": "SELECT 1 FROM programs WHERE name = 'Remote Desktop Manager' AND publisher = 'Devolutions inc.';",
|
||||
"patched": "SELECT 1 WHERE NOT EXISTS (SELECT 1 FROM programs WHERE name = 'Remote Desktop Manager' AND publisher = 'Devolutions inc.' AND version_compare(version, '2026.2.14.0') < 0);"
|
||||
"patched": "SELECT 1 WHERE NOT EXISTS (SELECT 1 FROM programs WHERE name = 'Remote Desktop Manager' AND publisher = 'Devolutions inc.' AND version_compare(version, '2026.2.16.0') < 0);"
|
||||
},
|
||||
"installer_url": "https://cdn.devolutions.net/download/Setup.RemoteDesktopManager.win-x64.2026.2.14.0.msi",
|
||||
"installer_url": "https://cdn.devolutions.net/download/Setup.RemoteDesktopManager.win-x64.2026.2.16.0.msi",
|
||||
"install_script_ref": "8959087b",
|
||||
"uninstall_script_ref": "df5e7f6c",
|
||||
"sha256": "96c855f8941eefeba9893f33b1d71c3191e67f76db901e8fd69fa943996542b2",
|
||||
"sha256": "8caa52f37bda1a03f984f89b80af54154b6cb501f27951ff9f669ebd27090f5e",
|
||||
"default_categories": [
|
||||
"Productivity"
|
||||
],
|
||||
|
||||
@@ -1,15 +1,15 @@
|
||||
{
|
||||
"versions": [
|
||||
{
|
||||
"version": "0.8.5165",
|
||||
"version": "0.8.5252",
|
||||
"queries": {
|
||||
"exists": "SELECT 1 FROM apps WHERE bundle_identifier = 'app.rive.editor';",
|
||||
"patched": "SELECT 1 WHERE NOT EXISTS (SELECT 1 FROM apps WHERE bundle_identifier = 'app.rive.editor' AND version_compare(bundle_short_version, '0.8.5165') < 0);"
|
||||
"patched": "SELECT 1 WHERE NOT EXISTS (SELECT 1 FROM apps WHERE bundle_identifier = 'app.rive.editor' AND version_compare(bundle_short_version, '0.8.5252') < 0);"
|
||||
},
|
||||
"installer_url": "https://releases.rive.app/macos/0.8.5165/Rive.dmg",
|
||||
"installer_url": "https://releases.rive.app/macos/0.8.5252/Rive.dmg",
|
||||
"install_script_ref": "2bbfee4e",
|
||||
"uninstall_script_ref": "8f862785",
|
||||
"sha256": "c5d4ee7488cc2eaccc7a3d545b5fb98b4899b22885475e65bd1acd1585612cf0",
|
||||
"sha256": "6029962923dd8ff06f37f17df2ec86e50dd517a82ba8b4f83f23b9e793ee8f53",
|
||||
"default_categories": [
|
||||
"Productivity"
|
||||
]
|
||||
|
||||
@@ -1,15 +1,15 @@
|
||||
{
|
||||
"versions": [
|
||||
{
|
||||
"version": "2026.1.4",
|
||||
"version": "2026.2",
|
||||
"queries": {
|
||||
"exists": "SELECT 1 FROM apps WHERE bundle_identifier = 'com.jetbrains.rustrover';",
|
||||
"patched": "SELECT 1 WHERE NOT EXISTS (SELECT 1 FROM apps WHERE bundle_identifier = 'com.jetbrains.rustrover' AND version_compare(bundle_short_version, '2026.1.4') < 0);"
|
||||
"patched": "SELECT 1 WHERE NOT EXISTS (SELECT 1 FROM apps WHERE bundle_identifier = 'com.jetbrains.rustrover' AND version_compare(bundle_short_version, '2026.2') < 0);"
|
||||
},
|
||||
"installer_url": "https://download.jetbrains.com/rustrover/RustRover-2026.1.4-aarch64.dmg",
|
||||
"installer_url": "https://download.jetbrains.com/rustrover/RustRover-2026.2-aarch64.dmg",
|
||||
"install_script_ref": "250e5b10",
|
||||
"uninstall_script_ref": "bfcf7fb3",
|
||||
"sha256": "1e5cb8341bfd9a0fd1326c4233a9bdc39792fc243bc9cc69ed5d95419c321901",
|
||||
"uninstall_script_ref": "42cbf565",
|
||||
"sha256": "fdc76f5dfd2a617c60222fae87d3ba23428800e57b67b410fa5579636c54372d",
|
||||
"default_categories": [
|
||||
"Developer tools"
|
||||
]
|
||||
@@ -17,6 +17,6 @@
|
||||
],
|
||||
"refs": {
|
||||
"250e5b10": "#!/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# extract contents\nMOUNT_POINT=$(mktemp -d /tmp/dmg_mount_XXXXXX)\nyes | hdiutil attach -plist -nobrowse -readonly -mountpoint \"$MOUNT_POINT\" \"$INSTALLER_PATH\" || exit 1\nsudo cp -R \"$MOUNT_POINT\"/* \"$TMPDIR\"\nhdiutil detach \"$MOUNT_POINT\" || true\n# copy to the applications folder\nquit_and_track_application 'com.jetbrains.rustrover'\nif [ -d \"$APPDIR/RustRover.app\" ]; then\n\tsudo mv \"$APPDIR/RustRover.app\" \"$TMPDIR/RustRover.app.bkp\"\nfi\nsudo cp -R \"$TMPDIR/RustRover.app\" \"$APPDIR\"\nrelaunch_application 'com.jetbrains.rustrover'\n",
|
||||
"bfcf7fb3": "#!/bin/bash\n\n# variables\nAPPDIR=\"/Applications/\"\nLOGGED_IN_USER=$(scutil <<< \"show State:/Users/ConsoleUser\" | awk '/Name :/ { print $3 }')\n# functions\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\nsudo rm -rf \"$APPDIR/RustRover.app\"\nsudo rm -rf 'rustrover'\ntrash $LOGGED_IN_USER '~/Library/Application Support/JetBrains/RustRover2026.1'\ntrash $LOGGED_IN_USER '~/Library/Caches/JetBrains/RustRover2026.1'\ntrash $LOGGED_IN_USER '~/Library/Logs/JetBrains/RustRover2026.1'\ntrash $LOGGED_IN_USER '~/Library/Preferences/com.jetbrains.rustrover.plist'\ntrash $LOGGED_IN_USER '~/Library/Saved Application State/com.jetbrains.rustrover.savedState'\n"
|
||||
"42cbf565": "#!/bin/bash\n\n# variables\nAPPDIR=\"/Applications/\"\nLOGGED_IN_USER=$(scutil <<< \"show State:/Users/ConsoleUser\" | awk '/Name :/ { print $3 }')\n# functions\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\nsudo rm -rf \"$APPDIR/RustRover.app\"\nsudo rm -rf 'rustrover'\ntrash $LOGGED_IN_USER '~/Library/Application Support/JetBrains/RustRover2026.2'\ntrash $LOGGED_IN_USER '~/Library/Caches/JetBrains/RustRover2026.2'\ntrash $LOGGED_IN_USER '~/Library/Logs/JetBrains/RustRover2026.2'\ntrash $LOGGED_IN_USER '~/Library/Preferences/com.jetbrains.rustrover.plist'\ntrash $LOGGED_IN_USER '~/Library/Saved Application State/com.jetbrains.rustrover.savedState'\n"
|
||||
}
|
||||
}
|
||||
|
||||
File diff suppressed because one or more lines are too long
@@ -1,15 +1,15 @@
|
||||
{
|
||||
"versions": [
|
||||
{
|
||||
"version": "2026.2.0",
|
||||
"version": "2026.2.1",
|
||||
"queries": {
|
||||
"exists": "SELECT 1 FROM apps WHERE bundle_identifier = 'com.tableausoftware.Desktop.app';",
|
||||
"patched": "SELECT 1 WHERE NOT EXISTS (SELECT 1 FROM apps WHERE bundle_identifier = 'com.tableausoftware.Desktop.app' AND version_compare(bundle_short_version, '2026.2.0') < 0);"
|
||||
"patched": "SELECT 1 WHERE NOT EXISTS (SELECT 1 FROM apps WHERE bundle_identifier = 'com.tableausoftware.Desktop.app' AND version_compare(bundle_short_version, '2026.2.1') < 0);"
|
||||
},
|
||||
"installer_url": "https://downloads.tableau.com/esdalt/2026.2.0/TableauDesktop-2026-2-0-arm64.dmg",
|
||||
"installer_url": "https://downloads.tableau.com/esdalt/2026.2.1/TableauDesktop-2026-2-1-arm64.dmg",
|
||||
"install_script_ref": "ee6c171c",
|
||||
"uninstall_script_ref": "95e2ce5d",
|
||||
"sha256": "e2f60f6853461bd0a11098cb9df479a07df9c2bf263bc7a4a3c09d8b5d145571",
|
||||
"sha256": "c5710b65cda0b902009f035983e8b4b1705645e3b9e578afe79dee370954d595",
|
||||
"default_categories": [
|
||||
"Productivity"
|
||||
]
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
"exists": "SELECT 1 FROM programs WHERE name = 'Telegram Desktop' AND publisher = 'Telegram FZ-LLC';",
|
||||
"patched": "SELECT 1 WHERE NOT EXISTS (SELECT 1 FROM programs WHERE name = 'Telegram Desktop' AND publisher = 'Telegram FZ-LLC' AND version_compare(version, '7.0.4') < 0);"
|
||||
},
|
||||
"installer_url": "https://td.telegram.org/tx64/tsetup-x64.7.0.4.exe",
|
||||
"installer_url": "https://github.com/telegramdesktop/tdesktop/releases/download/v7.0.4/tsetup-x64.7.0.4.exe",
|
||||
"install_script_ref": "0b88a95e",
|
||||
"uninstall_script_ref": "42311f1b",
|
||||
"sha256": "f70bdb9ca2bf45cc4c33c83bc898b2e43a919ee013f71307976b66210b3171f7",
|
||||
|
||||
@@ -1,15 +1,15 @@
|
||||
{
|
||||
"versions": [
|
||||
{
|
||||
"version": "152.0.1",
|
||||
"version": "153.0",
|
||||
"queries": {
|
||||
"exists": "SELECT 1 FROM apps WHERE bundle_identifier = 'org.mozilla.thunderbird';",
|
||||
"patched": "SELECT 1 WHERE NOT EXISTS (SELECT 1 FROM apps WHERE bundle_identifier = 'org.mozilla.thunderbird' AND version_compare(bundle_short_version, '152.0.1') < 0);"
|
||||
"patched": "SELECT 1 WHERE NOT EXISTS (SELECT 1 FROM apps WHERE bundle_identifier = 'org.mozilla.thunderbird' AND version_compare(bundle_short_version, '153.0') < 0);"
|
||||
},
|
||||
"installer_url": "https://download-installer.cdn.mozilla.net/pub/thunderbird/releases/152.0.1/mac/en-US/Thunderbird%20152.0.1.dmg",
|
||||
"installer_url": "https://download-installer.cdn.mozilla.net/pub/thunderbird/releases/153.0/mac/en-US/Thunderbird%20153.0.dmg",
|
||||
"install_script_ref": "7cfa15ee",
|
||||
"uninstall_script_ref": "88749f85",
|
||||
"sha256": "2ddb04427a7153e2c25f2f118ba42d5904f73b8e8b7599a0761a30c774fc00c6",
|
||||
"sha256": "b6941531638a0fe09e5ad30bf2aeba14fb5a73bb5e40511b505d0c8063463f6c",
|
||||
"default_categories": [
|
||||
"Productivity"
|
||||
]
|
||||
|
||||
@@ -1,10 +1,10 @@
|
||||
{
|
||||
"versions": [
|
||||
{
|
||||
"version": "46.7.0.35381",
|
||||
"version": "46.7.0.35472",
|
||||
"queries": {
|
||||
"exists": "SELECT 1 FROM apps WHERE bundle_identifier = 'Cisco-Systems.Spark';",
|
||||
"patched": "SELECT 1 WHERE NOT EXISTS (SELECT 1 FROM apps WHERE bundle_identifier = 'Cisco-Systems.Spark' AND version_compare(bundle_short_version, '46.7.0.35381') < 0);"
|
||||
"patched": "SELECT 1 WHERE NOT EXISTS (SELECT 1 FROM apps WHERE bundle_identifier = 'Cisco-Systems.Spark' AND version_compare(bundle_short_version, '46.7.0.35472') < 0);"
|
||||
},
|
||||
"installer_url": "https://binaries.webex.com/webex-macos-apple-silicon/Webex.dmg",
|
||||
"install_script_ref": "d105863f",
|
||||
|
||||
@@ -1,15 +1,15 @@
|
||||
{
|
||||
"versions": [
|
||||
{
|
||||
"version": "1.6.168",
|
||||
"version": "1.6.182",
|
||||
"queries": {
|
||||
"exists": "SELECT 1 FROM apps WHERE bundle_identifier = 'com.electron.wispr-flow';",
|
||||
"patched": "SELECT 1 WHERE NOT EXISTS (SELECT 1 FROM apps WHERE bundle_identifier = 'com.electron.wispr-flow' AND version_compare(bundle_short_version, '1.6.168') < 0);"
|
||||
"patched": "SELECT 1 WHERE NOT EXISTS (SELECT 1 FROM apps WHERE bundle_identifier = 'com.electron.wispr-flow' AND version_compare(bundle_short_version, '1.6.182') < 0);"
|
||||
},
|
||||
"installer_url": "https://dl.wisprflow.com/wispr-flow/darwin/arm64/dmgs/Flow-v1.6.168.dmg",
|
||||
"installer_url": "https://dl.wisprflow.com/wispr-flow/darwin/arm64/dmgs/Flow-v1.6.182.dmg",
|
||||
"install_script_ref": "3a49fcfd",
|
||||
"uninstall_script_ref": "e0cf2e96",
|
||||
"sha256": "a70a7438125b9119608c4b9ee7bdb29d181a54a6ac3cb18e9a140e48d13b880a",
|
||||
"sha256": "397e3ffcdf349fdce7fd45a321522a6a21a646aaeec55e3e734ff793bc3acc8d",
|
||||
"default_categories": [
|
||||
"Productivity"
|
||||
]
|
||||
|
||||
@@ -8,7 +8,7 @@
|
||||
},
|
||||
"installer_url": "https://zed.dev/api/releases/stable/1.11.3/Zed-aarch64.dmg",
|
||||
"install_script_ref": "ad597b79",
|
||||
"uninstall_script_ref": "2a2c7eb8",
|
||||
"uninstall_script_ref": "9e70631b",
|
||||
"sha256": "0a4957f81595056a80088a2f9f52e9d16e8d0e94bc0cc0f2b2d1d40615bb8d35",
|
||||
"default_categories": [
|
||||
"Developer tools"
|
||||
@@ -16,7 +16,7 @@
|
||||
}
|
||||
],
|
||||
"refs": {
|
||||
"2a2c7eb8": "#!/bin/bash\n\n# variables\nAPPDIR=\"/Applications/\"\nLOGGED_IN_USER=$(scutil <<< \"show State:/Users/ConsoleUser\" | awk '/Name :/ { print $3 }')\n# functions\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\nsudo rm -rf \"$APPDIR/Zed.app\"\nsudo rm -rf 'zed'\ntrash $LOGGED_IN_USER '~/.config/zed'\ntrash $LOGGED_IN_USER '~/Library/Application Support/com.apple.sharedfilelist/com.apple.LSSharedFileList.ApplicationRecentDocuments/dev.zed.zed.sfl*'\ntrash $LOGGED_IN_USER '~/Library/Application Support/Zed'\ntrash $LOGGED_IN_USER '~/Library/Caches/dev.zed.Zed'\ntrash $LOGGED_IN_USER '~/Library/Caches/Zed'\ntrash $LOGGED_IN_USER '~/Library/HTTPStorages/dev.zed.Zed'\ntrash $LOGGED_IN_USER '~/Library/Logs/Zed'\ntrash $LOGGED_IN_USER '~/Library/Preferences/dev.zed.Zed.plist'\ntrash $LOGGED_IN_USER '~/Library/Saved Application State/dev.zed.Zed.savedState'\n",
|
||||
"9e70631b": "#!/bin/bash\n\n# variables\nAPPDIR=\"/Applications/\"\nLOGGED_IN_USER=$(scutil <<< \"show State:/Users/ConsoleUser\" | awk '/Name :/ { print $3 }')\n# functions\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\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\nsudo rm -rf \"$APPDIR/Zed.app\"\nsudo rm -rf 'zed'\nquit_application 'dev.zed.Zed'\ntrash $LOGGED_IN_USER '~/.config/zed'\ntrash $LOGGED_IN_USER '~/Library/Application Support/com.apple.sharedfilelist/com.apple.LSSharedFileList.ApplicationRecentDocuments/dev.zed.zed.sfl*'\ntrash $LOGGED_IN_USER '~/Library/Application Support/Zed'\ntrash $LOGGED_IN_USER '~/Library/Caches/dev.zed.Zed'\ntrash $LOGGED_IN_USER '~/Library/Caches/Zed'\ntrash $LOGGED_IN_USER '~/Library/HTTPStorages/dev.zed.Zed'\ntrash $LOGGED_IN_USER '~/Library/Logs/Zed'\ntrash $LOGGED_IN_USER '~/Library/Preferences/dev.zed.Zed.plist'\ntrash $LOGGED_IN_USER '~/Library/Saved Application State/dev.zed.Zed.savedState'\n",
|
||||
"ad597b79": "#!/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# extract contents\nMOUNT_POINT=$(mktemp -d /tmp/dmg_mount_XXXXXX)\nyes | hdiutil attach -plist -nobrowse -readonly -mountpoint \"$MOUNT_POINT\" \"$INSTALLER_PATH\" || exit 1\nsudo cp -R \"$MOUNT_POINT\"/* \"$TMPDIR\"\nhdiutil detach \"$MOUNT_POINT\" || true\n# copy to the applications folder\nquit_and_track_application 'dev.zed.Zed'\nif [ -d \"$APPDIR/Zed.app\" ]; then\n\tsudo mv \"$APPDIR/Zed.app\" \"$TMPDIR/Zed.app.bkp\"\nfi\nsudo cp -R \"$TMPDIR/Zed.app\" \"$APPDIR\"\nrelaunch_application 'dev.zed.Zed'\nmkdir -p .\n/bin/ln -h -f -s -- \"$APPDIR/Zed.app/Contents/MacOS/cli\" \"zed\"\n"
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user