diff --git a/ee/maintained-apps/outputs/cursor/darwin.json b/ee/maintained-apps/outputs/cursor/darwin.json index 3a94e0009c..f58a5352a3 100644 --- a/ee/maintained-apps/outputs/cursor/darwin.json +++ b/ee/maintained-apps/outputs/cursor/darwin.json @@ -1,14 +1,14 @@ { "versions": [ { - "version": "2.0.77", + "version": "2.1.17", "queries": { "exists": "SELECT 1 FROM apps WHERE bundle_identifier = 'com.todesktop.230313mzl4w4u92';" }, - "installer_url": "https://downloads.cursor.com/production/ba90f2f88e4911312761abab9492c42442117cfe/darwin/arm64/Cursor-darwin-arm64.zip", + "installer_url": "https://downloads.cursor.com/production/6757269838ae9ac4caaa2be13f396fdfbcf1f9a6/darwin/arm64/Cursor-darwin-arm64.zip", "install_script_ref": "d059edf1", "uninstall_script_ref": "f7561d44", - "sha256": "971687d226bea0dd7ae41daef58023c30e7e22ee59ecb779c215c6b758eb77c8", + "sha256": "169294deaf9541ee75173aa741f340ad57faaa740493c61a6b93bd651f80d662", "default_categories": [ "Developer tools" ] diff --git a/ee/maintained-apps/outputs/grammarly-desktop/darwin.json b/ee/maintained-apps/outputs/grammarly-desktop/darwin.json index eb34530d46..e6ef03b642 100644 --- a/ee/maintained-apps/outputs/grammarly-desktop/darwin.json +++ b/ee/maintained-apps/outputs/grammarly-desktop/darwin.json @@ -1,14 +1,14 @@ { "versions": [ { - "version": "1.143.2.0", + "version": "1.143.3.0", "queries": { "exists": "SELECT 1 FROM apps WHERE bundle_identifier = 'com.grammarly.ProjectLlama';" }, - "installer_url": "https://download-mac.grammarly.com/versions/1.143.2.0/Grammarly.dmg", + "installer_url": "https://download-mac.grammarly.com/versions/1.143.3.0/Grammarly.dmg", "install_script_ref": "962d8d13", "uninstall_script_ref": "7b5a67c7", - "sha256": "d7d3b381457c0536cdd20512ca739772fb4910f614479efd94eb2d89f9f8a4e4", + "sha256": "602d4cbae29108f1ae85b93d94ef4e7532292cce1f6029d3fdb280a7ad042468", "default_categories": [ "Productivity" ] diff --git a/ee/maintained-apps/outputs/insomnia/darwin.json b/ee/maintained-apps/outputs/insomnia/darwin.json index 3f9b98d6ca..6d2a9ef41e 100644 --- a/ee/maintained-apps/outputs/insomnia/darwin.json +++ b/ee/maintained-apps/outputs/insomnia/darwin.json @@ -1,14 +1,14 @@ { "versions": [ { - "version": "12.0.0", + "version": "12.1.0", "queries": { "exists": "SELECT 1 FROM apps WHERE bundle_identifier = 'com.insomnia.app';" }, - "installer_url": "https://github.com/Kong/insomnia/releases/download/core%4012.0.0/Insomnia.Core-12.0.0.dmg", + "installer_url": "https://github.com/Kong/insomnia/releases/download/core%4012.1.0/Insomnia.Core-12.1.0.dmg", "install_script_ref": "b5685b20", "uninstall_script_ref": "6024f710", - "sha256": "98fb5e8d83afac7b92967446da5e9623343751afde986b44d3ccbcf4680c0235", + "sha256": "ec37f8bffc79446c17ac5ddc33e33a0024d5067b7551938bf1cfc7c957904f43", "default_categories": [ "Developer tools" ] diff --git a/ee/maintained-apps/outputs/microsoft-teams/windows.json b/ee/maintained-apps/outputs/microsoft-teams/windows.json index ebaee57b67..4af2f2740a 100644 --- a/ee/maintained-apps/outputs/microsoft-teams/windows.json +++ b/ee/maintained-apps/outputs/microsoft-teams/windows.json @@ -6,7 +6,7 @@ "exists": "SELECT 1 FROM programs WHERE name = 'Microsoft Teams' AND publisher = 'Microsoft Corporation';" }, "installer_url": "https://installer.teams.static.microsoft/production-windows-x64/25306.804.4102.7193/MSTeams-x64.msix", - "install_script_ref": "24672a1a", + "install_script_ref": "a90fa842", "uninstall_script_ref": "8c408748", "sha256": "7bd9be340d47eabaaaa105b819a29f86cb5c1c9038874e1f0f17cd5cde92839f", "default_categories": [ @@ -15,7 +15,7 @@ } ], "refs": { - "24672a1a": "$softwareName = \"MSTeams-x64\"\n$msixPath = \"${env:INSTALLER_PATH}\"\n$taskName = \"fleet-install-$softwareName.msix\"\n$scriptPath = \"$env:PUBLIC\\install-$softwareName.ps1\"\n$exitCodeFile = \"$env:PUBLIC\\install-exitcode-$softwareName.txt\"\n\n$userScript = @\"\n`$msixPath = \"$msixPath\"\n`$exitCodeFile = \"$exitCodeFile\"\n`$exitCode = 0\n\ntry {\n Write-Host \"=== Teams Installation Start ===\"\n Write-Host \"MSIX Path: `$msixPath\"\n\n # Provision for all future users\n Write-Host \"[1/3] Provisioning for all future users...\"\n Add-AppProvisionedPackage -Online -PackagePath `$msixPath -SkipLicense -ErrorAction Stop\n Write-Host \"[1/3] Provisioning complete\"\n\n # Also install for current user so osquery can detect it immediately\n Write-Host \"[2/3] Installing for current user...\"\n Add-AppxPackage -Path `$msixPath -ErrorAction Stop\n Write-Host \"[2/3] Installation complete\"\n\n # Poll for package registration (up to 30 seconds)\n Write-Host \"[3/3] Polling for registration (max 30s)...\"\n `$maxAttempts = 30\n `$attempt = 0\n `$installed = `$null\n\n while (`$attempt -lt `$maxAttempts) {\n `$installed = Get-AppxPackage -Name \"MSTeams\" -ErrorAction SilentlyContinue\n if (`$installed) {\n Write-Host \"[3/3] Package registered after `$attempt seconds\"\n break\n }\n Start-Sleep -Seconds 1\n `$attempt++\n }\n\n if (-not `$installed) {\n Write-Host \"[3/3] ERROR: Package not registered after `$attempt seconds\"\n `$exitCode = 1\n } else {\n Write-Host \"=== Installation Successful ===\"\n Write-Host \"Package: `$(`$installed.PackageFullName)\"\n Write-Host \"Version: `$(`$installed.Version)\"\n }\n} catch {\n Write-Host \"=== Installation Failed ===\"\n Write-Host \"Error: `$(`$_.Exception.Message)\"\n `$exitCode = 1\n} finally {\n Write-Host \"Exit Code: `$exitCode\"\n Set-Content -Path `$exitCodeFile -Value `$exitCode\n}\n\nExit `$exitCode\n\"@\n\n$exitCode = 0\n\ntry {\n # Wait for an interactive user to be logged on\n while ($true) {\n $userName = (Get-CimInstance Win32_ComputerSystem).UserName\n\n if ($userName -and $userName -like \"*\\*\") {\n break\n } else {\n Start-Sleep -Seconds 5\n }\n }\n\n # Write the install script to disk\n Set-Content -Path $scriptPath -Value $userScript -Force\n\n # Build task action: run script (output goes to stdout for Fleet)\n $action = New-ScheduledTaskAction -Execute \"powershell.exe\" `\n -Argument \"-WindowStyle Hidden -ExecutionPolicy Bypass -File `\"$scriptPath`\"\"\n\n $trigger = New-ScheduledTaskTrigger -AtLogOn\n\n $settings = New-ScheduledTaskSettingsSet -AllowStartIfOnBatteries\n\n $principal = New-ScheduledTaskPrincipal -UserId $userName -RunLevel Highest\n\n $task = New-ScheduledTask -Action $action -Trigger $trigger -Settings $settings -Principal $principal\n\n Register-ScheduledTask -TaskName $taskName -InputObject $task -User $userName -Force | Out-Null\n\n # Start the task\n Start-ScheduledTask -TaskName $taskName\n\n # Wait for it to start\n $startDate = Get-Date\n $state = (Get-ScheduledTask -TaskName $taskName).State\n while ($state -ne \"Running\") {\n Start-Sleep -Seconds 1\n $elapsed = (New-Timespan -Start $startDate).TotalSeconds\n if ($elapsed -gt 120) { throw \"Timeout waiting for task to start.\" }\n $state = (Get-ScheduledTask -TaskName $taskName).State\n }\n\n # Wait for it to complete\n while ($state -eq \"Running\") {\n Start-Sleep -Seconds 15\n $elapsed = (New-Timespan -Start $startDate).TotalSeconds\n if ($elapsed -gt 120) { throw \"Timeout waiting for task to finish.\" }\n $state = (Get-ScheduledTask -TaskName $taskName).State\n }\n\n if (Test-Path $exitCodeFile) {\n $exitCode = Get-Content $exitCodeFile\n } else {\n $exitCode = 1\n }\n\n} catch {\n Write-Host \"Error: $_\"\n $exitCode = 1\n} finally {\n # Clean up\n Unregister-ScheduledTask -TaskName $taskName -Confirm:$false -ErrorAction SilentlyContinue\n Remove-Item -Path $scriptPath -Force -ErrorAction SilentlyContinue\n Remove-Item -Path $exitCodeFile -Force -ErrorAction SilentlyContinue\n}\n\nExit $exitCode\n", - "8c408748": "$softwareName = \"MSTeams-x64\"\n$packageName = \"MSTeams\"\n$taskName = \"fleet-uninstall-$softwareName.msix\"\n$scriptPath = \"$env:PUBLIC\\uninstall-$softwareName.ps1\"\n$exitCodeFile = \"$env:PUBLIC\\uninstall-exitcode-$softwareName.txt\"\n\n$userScript = @\"\n`$packageName = \"$packageName\"\n`$exitCodeFile = \"$exitCodeFile\"\n`$exitCode = 0\n\ntry {\n Write-Host \"=== Teams Uninstallation Start ===\"\n\n # Remove for current user\n Write-Host \"Removing package for current user...\"\n Remove-AppxPackage -Package (Get-AppxPackage -Name `$packageName).PackageFullName -ErrorAction Stop\n Write-Host \"Removed for current user\"\n\n # Also remove provisioned package for all future users\n Write-Host \"Removing provisioned package for all future users...\"\n Get-AppxProvisionedPackage -Online | Where-Object { `$_.DisplayName -eq `$packageName } | Remove-AppxProvisionedPackage -Online -ErrorAction Stop\n Write-Host \"Removed provisioned package\"\n\n Write-Host \"=== Uninstallation Successful ===\"\n} catch {\n Write-Host \"=== Uninstallation Failed ===\"\n Write-Host \"Error: `$(`$_.Exception.Message)\"\n `$exitCode = 1\n} finally {\n Write-Host \"Exit Code: `$exitCode\"\n Set-Content -Path `$exitCodeFile -Value `$exitCode\n}\n\nExit `$exitCode\n\"@\n\n$exitCode = 0\n\ntry {\n # Wait for an interactive user to be logged on\n while ($true) {\n $userName = (Get-CimInstance Win32_ComputerSystem).UserName\n\n if ($userName -and $userName -like \"*\\*\") {\n break\n } else {\n Start-Sleep -Seconds 5\n }\n }\n\n # Write the uninstall script to disk\n Set-Content -Path $scriptPath -Value $userScript -Force\n\n # Build task action: run script (output goes to stdout for Fleet)\n $action = New-ScheduledTaskAction -Execute \"powershell.exe\" `\n -Argument \"-WindowStyle Hidden -ExecutionPolicy Bypass -File `\"$scriptPath`\"\"\n\n $trigger = New-ScheduledTaskTrigger -AtLogOn\n\n $settings = New-ScheduledTaskSettingsSet -AllowStartIfOnBatteries\n\n $principal = New-ScheduledTaskPrincipal -UserId $userName -RunLevel Highest\n\n $task = New-ScheduledTask -Action $action -Trigger $trigger -Settings $settings -Principal $principal\n\n Register-ScheduledTask -TaskName $taskName -InputObject $task -User $userName -Force\n\n # Start the task\n Start-ScheduledTask -TaskName $taskName\n\n # Wait for it to start\n $startDate = Get-Date\n $state = (Get-ScheduledTask -TaskName $taskName).State\n while ($state -ne \"Running\") {\n Start-Sleep -Seconds 1\n $elapsed = (New-Timespan -Start $startDate).TotalSeconds\n if ($elapsed -gt 120) { throw \"Timeout waiting for task to start.\" }\n $state = (Get-ScheduledTask -TaskName $taskName).State\n }\n\n # Wait for it to complete\n while ($state -eq \"Running\") {\n Start-Sleep -Seconds 5\n $elapsed = (New-Timespan -Start $startDate).TotalSeconds\n if ($elapsed -gt 120) { throw \"Timeout waiting for task to finish.\" }\n $state = (Get-ScheduledTask -TaskName $taskName).State\n }\n\n if (Test-Path $exitCodeFile) {\n $exitCode = Get-Content $exitCodeFile\n }\n\n} catch {\n Write-Host \"Error: $_\"\n $exitCode = 1\n} finally {\n # Clean up\n Unregister-ScheduledTask -TaskName $taskName -Confirm:$false -ErrorAction SilentlyContinue\n Remove-Item -Path $scriptPath -Force -ErrorAction SilentlyContinue\n Remove-Item -Path $exitCodeFile -Force -ErrorAction SilentlyContinue\n}\n\nExit $exitCode" + "8c408748": "$softwareName = \"MSTeams-x64\"\n$packageName = \"MSTeams\"\n$taskName = \"fleet-uninstall-$softwareName.msix\"\n$scriptPath = \"$env:PUBLIC\\uninstall-$softwareName.ps1\"\n$exitCodeFile = \"$env:PUBLIC\\uninstall-exitcode-$softwareName.txt\"\n\n$userScript = @\"\n`$packageName = \"$packageName\"\n`$exitCodeFile = \"$exitCodeFile\"\n`$exitCode = 0\n\ntry {\n Write-Host \"=== Teams Uninstallation Start ===\"\n\n # Remove for current user\n Write-Host \"Removing package for current user...\"\n Remove-AppxPackage -Package (Get-AppxPackage -Name `$packageName).PackageFullName -ErrorAction Stop\n Write-Host \"Removed for current user\"\n\n # Also remove provisioned package for all future users\n Write-Host \"Removing provisioned package for all future users...\"\n Get-AppxProvisionedPackage -Online | Where-Object { `$_.DisplayName -eq `$packageName } | Remove-AppxProvisionedPackage -Online -ErrorAction Stop\n Write-Host \"Removed provisioned package\"\n\n Write-Host \"=== Uninstallation Successful ===\"\n} catch {\n Write-Host \"=== Uninstallation Failed ===\"\n Write-Host \"Error: `$(`$_.Exception.Message)\"\n `$exitCode = 1\n} finally {\n Write-Host \"Exit Code: `$exitCode\"\n Set-Content -Path `$exitCodeFile -Value `$exitCode\n}\n\nExit `$exitCode\n\"@\n\n$exitCode = 0\n\ntry {\n # Wait for an interactive user to be logged on\n while ($true) {\n $userName = (Get-CimInstance Win32_ComputerSystem).UserName\n\n if ($userName -and $userName -like \"*\\*\") {\n break\n } else {\n Start-Sleep -Seconds 5\n }\n }\n\n # Write the uninstall script to disk\n Set-Content -Path $scriptPath -Value $userScript -Force\n\n # Build task action: run script (output goes to stdout for Fleet)\n $action = New-ScheduledTaskAction -Execute \"powershell.exe\" `\n -Argument \"-WindowStyle Hidden -ExecutionPolicy Bypass -File `\"$scriptPath`\"\"\n\n $trigger = New-ScheduledTaskTrigger -AtLogOn\n\n $settings = New-ScheduledTaskSettingsSet -AllowStartIfOnBatteries\n\n $principal = New-ScheduledTaskPrincipal -UserId $userName -RunLevel Highest\n\n $task = New-ScheduledTask -Action $action -Trigger $trigger -Settings $settings -Principal $principal\n\n Register-ScheduledTask -TaskName $taskName -InputObject $task -User $userName -Force\n\n # Start the task\n Start-ScheduledTask -TaskName $taskName\n\n # Wait for it to start\n $startDate = Get-Date\n $state = (Get-ScheduledTask -TaskName $taskName).State\n while ($state -ne \"Running\") {\n Start-Sleep -Seconds 1\n $elapsed = (New-Timespan -Start $startDate).TotalSeconds\n if ($elapsed -gt 120) { throw \"Timeout waiting for task to start.\" }\n $state = (Get-ScheduledTask -TaskName $taskName).State\n }\n\n # Wait for it to complete\n while ($state -eq \"Running\") {\n Start-Sleep -Seconds 5\n $elapsed = (New-Timespan -Start $startDate).TotalSeconds\n if ($elapsed -gt 120) { throw \"Timeout waiting for task to finish.\" }\n $state = (Get-ScheduledTask -TaskName $taskName).State\n }\n\n if (Test-Path $exitCodeFile) {\n $exitCode = Get-Content $exitCodeFile\n }\n\n} catch {\n Write-Host \"Error: $_\"\n $exitCode = 1\n} finally {\n # Clean up\n Unregister-ScheduledTask -TaskName $taskName -Confirm:$false -ErrorAction SilentlyContinue\n Remove-Item -Path $scriptPath -Force -ErrorAction SilentlyContinue\n Remove-Item -Path $exitCodeFile -Force -ErrorAction SilentlyContinue\n}\n\nExit $exitCode", + "a90fa842": "$softwareName = \"MSTeams-x64\"\n$msixPath = \"${env:INSTALLER_PATH}\"\n$taskName = \"fleet-install-$softwareName.msix\"\n$scriptPath = \"$env:PUBLIC\\install-$softwareName.ps1\"\n$exitCodeFile = \"$env:PUBLIC\\install-exitcode-$softwareName.txt\"\n\n$userScript = @\"\n`$msixPath = \"$msixPath\"\n`$exitCodeFile = \"$exitCodeFile\"\n`$exitCode = 0\n\ntry {\n Write-Host \"=== Teams Installation Start ===\"\n Write-Host \"MSIX Path: `$msixPath\"\n\n # Provision for all future users\n Write-Host \"[1/3] Provisioning for all future users...\"\n Add-AppProvisionedPackage -Online -PackagePath `$msixPath -SkipLicense -ErrorAction Stop\n Write-Host \"[1/3] Provisioning complete\"\n\n # Also install for current user so osquery can detect it immediately\n Write-Host \"[2/3] Installing for current user...\"\n Add-AppxPackage -Path `$msixPath -ErrorAction Stop\n Write-Host \"[2/3] Installation complete\"\n\n # Poll for package registration (up to 30 seconds)\n Write-Host \"[3/3] Polling for registration (max 30s)...\"\n `$maxAttempts = 30\n `$attempt = 0\n `$installed = `$null\n\n while (`$attempt -lt `$maxAttempts) {\n `$installed = Get-AppxPackage -Name \"MSTeams\" -ErrorAction SilentlyContinue\n if (`$installed) {\n Write-Host \"[3/3] Package registered after `$attempt seconds\"\n break\n }\n Start-Sleep -Seconds 1\n `$attempt++\n }\n\n if (-not `$installed) {\n Write-Host \"[3/3] ERROR: Package not registered after `$attempt seconds\"\n `$exitCode = 1\n } else {\n Write-Host \"=== Installation Successful ===\"\n Write-Host \"Package: `$(`$installed.PackageFullName)\"\n Write-Host \"Version: `$(`$installed.Version)\"\n }\n} catch {\n Write-Host \"=== Installation Failed ===\"\n Write-Host \"Error: `$(`$_.Exception.Message)\"\n `$exitCode = 1\n} finally {\n Write-Host \"Exit Code: `$exitCode\"\n Set-Content -Path `$exitCodeFile -Value `$exitCode\n}\n\nExit `$exitCode\n\"@\n\n$exitCode = 0\n\ntry {\n # Wait for an interactive user to be logged on\n while ($true) {\n $userName = (Get-CimInstance Win32_ComputerSystem).UserName\n\n if ($userName -and $userName -like \"*\\*\") {\n break\n } else {\n Start-Sleep -Seconds 5\n }\n }\n\n # Write the install script to disk\n Set-Content -Path $scriptPath -Value $userScript -Force\n\n # Build task action: run script (output goes to stdout for Fleet)\n $action = New-ScheduledTaskAction -Execute \"powershell.exe\" `\n -Argument \"-WindowStyle Hidden -ExecutionPolicy Bypass -File `\"$scriptPath`\"\"\n\n $trigger = New-ScheduledTaskTrigger -AtLogOn\n\n $settings = New-ScheduledTaskSettingsSet -AllowStartIfOnBatteries\n\n $principal = New-ScheduledTaskPrincipal -UserId $userName -RunLevel Highest\n\n $task = New-ScheduledTask -Action $action -Trigger $trigger -Settings $settings -Principal $principal\n\n Register-ScheduledTask -TaskName $taskName -InputObject $task -User $userName -Force | Out-Null\n\n # Start the task\n Start-ScheduledTask -TaskName $taskName\n\n # Wait for it to start\n $startDate = Get-Date\n $state = (Get-ScheduledTask -TaskName $taskName).State\n while ($state -ne \"Running\") {\n Start-Sleep -Seconds 1\n $elapsed = (New-Timespan -Start $startDate).TotalSeconds\n if ($elapsed -gt 120) { throw \"Timeout waiting for task to start.\" }\n $state = (Get-ScheduledTask -TaskName $taskName).State\n }\n\n # Wait for it to complete\n while ($state -eq \"Running\") {\n Start-Sleep -Seconds 5\n $elapsed = (New-Timespan -Start $startDate).TotalSeconds\n if ($elapsed -gt 120) { throw \"Timeout waiting for task to finish.\" }\n $state = (Get-ScheduledTask -TaskName $taskName).State\n }\n\n if (Test-Path $exitCodeFile) {\n $exitCode = Get-Content $exitCodeFile\n } else {\n $exitCode = 1\n }\n\n} catch {\n Write-Host \"Error: $_\"\n $exitCode = 1\n} finally {\n # Clean up\n Unregister-ScheduledTask -TaskName $taskName -Confirm:$false -ErrorAction SilentlyContinue\n Remove-Item -Path $scriptPath -Force -ErrorAction SilentlyContinue\n Remove-Item -Path $exitCodeFile -Force -ErrorAction SilentlyContinue\n}\n\nExit $exitCode\n" } } diff --git a/ee/maintained-apps/outputs/phpstorm/darwin.json b/ee/maintained-apps/outputs/phpstorm/darwin.json index d0135ef1dd..6944b1139a 100644 --- a/ee/maintained-apps/outputs/phpstorm/darwin.json +++ b/ee/maintained-apps/outputs/phpstorm/darwin.json @@ -1,14 +1,14 @@ { "versions": [ { - "version": "2025.2.4", + "version": "2025.2.5", "queries": { "exists": "SELECT 1 FROM apps WHERE bundle_identifier = 'com.jetbrains.PhpStorm';" }, - "installer_url": "https://download.jetbrains.com/webide/PhpStorm-2025.2.4-aarch64.dmg", + "installer_url": "https://download.jetbrains.com/webide/PhpStorm-2025.2.5-aarch64.dmg", "install_script_ref": "147cb283", "uninstall_script_ref": "5991db8a", - "sha256": "d05c2e3e9106646bdf93731a034dcd82a359c7a91601d6456ed8ea88a75c3546", + "sha256": "8320ce229c03277f53a836bc19b796e9241bb00e3e40d4f048290baa27aa9a90", "default_categories": [ "Developer tools" ] diff --git a/ee/maintained-apps/outputs/postman/darwin.json b/ee/maintained-apps/outputs/postman/darwin.json index 7eefe31173..afe171ed47 100644 --- a/ee/maintained-apps/outputs/postman/darwin.json +++ b/ee/maintained-apps/outputs/postman/darwin.json @@ -1,14 +1,14 @@ { "versions": [ { - "version": "11.72.7", + "version": "11.72.9", "queries": { "exists": "SELECT 1 FROM apps WHERE bundle_identifier = 'com.postmanlabs.mac';" }, - "installer_url": "https://dl.pstmn.io/download/version/11.72.7/osx_arm64", + "installer_url": "https://dl.pstmn.io/download/version/11.72.9/osx_arm64", "install_script_ref": "a937991a", "uninstall_script_ref": "15e9f11c", - "sha256": "96c43cfb8e509f619d6c8914fe6d3fcefa0f59220ee3f15570bdfa8fe629bd13", + "sha256": "fd609da03c83037c2e09e3bf08cc46434961289348a035bcb312c6627fd01f61", "default_categories": [ "Developer tools" ] diff --git a/ee/maintained-apps/outputs/windows-app/darwin.json b/ee/maintained-apps/outputs/windows-app/darwin.json index e71f134368..c554558323 100644 --- a/ee/maintained-apps/outputs/windows-app/darwin.json +++ b/ee/maintained-apps/outputs/windows-app/darwin.json @@ -1,21 +1,21 @@ { "versions": [ { - "version": "11.2.8", + "version": "11.2.9", "queries": { "exists": "SELECT 1 FROM apps WHERE bundle_identifier = 'com.microsoft.rdc.macos';" }, - "installer_url": "https://officecdnmac.microsoft.com/pr/C1297A47-86C4-4C1F-97FA-950631F94777/MacAutoupdate/Windows_App_11.2.8_installer.pkg", - "install_script_ref": "8357f646", + "installer_url": "https://officecdnmac.microsoft.com/pr/C1297A47-86C4-4C1F-97FA-950631F94777/MacAutoupdate/Windows_App_11.2.9_installer.pkg", + "install_script_ref": "25e172eb", "uninstall_script_ref": "c140d006", - "sha256": "3d5a9de7aeb46330916c9b6b8004c6a669b7afac1a7595b4fccc89560835d51d", + "sha256": "8ba0ef6835021237c9ca0f01c9b181dc4818c38d6b0b87bc3c51d663e535100e", "default_categories": [ "Productivity" ] } ], "refs": { - "8357f646": "#!/bin/sh\n\n# variables\nAPPDIR=\"/Applications/\"\nTMPDIR=$(dirname \"$(realpath $INSTALLER_PATH)\")\n\n# install pkg files\nsudo installer -pkg \"$TMPDIR/Windows_App_11.2.8_installer.pkg\" -target /\n", + "25e172eb": "#!/bin/sh\n\n# variables\nAPPDIR=\"/Applications/\"\nTMPDIR=$(dirname \"$(realpath $INSTALLER_PATH)\")\n\n# install pkg files\nsudo installer -pkg \"$TMPDIR/Windows_App_11.2.9_installer.pkg\" -target /\n", "c140d006": "#!/bin/sh\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 if ! osascript -e \"application id \\\"$bundle_id\\\" is running\" 2>/dev/null; then\n return\n fi\n\n local console_user\n console_user=$(stat -f \"%Su\" /dev/console)\n if [[ $EUID -eq 0 && \"$console_user\" == \"root\" ]]; 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_launchctl_service() {\n local service=\"$1\"\n local booleans=(\"true\" \"false\")\n local plist_status\n local paths\n local should_sudo\n\n echo \"Removing launchctl service ${service}\"\n\n for should_sudo in \"${booleans[@]}\"; do\n plist_status=$(launchctl list \"${service}\" 2>/dev/null)\n\n if [[ $plist_status == \\{* ]]; then\n if [[ $should_sudo == \"true\" ]]; then\n sudo launchctl remove \"${service}\"\n else\n launchctl remove \"${service}\"\n fi\n sleep 1\n fi\n\n paths=(\n \"/Library/LaunchAgents/${service}.plist\"\n \"/Library/LaunchDaemons/${service}.plist\"\n )\n\n # if not using sudo, prepend the home directory to the paths\n if [[ $should_sudo == \"false\" ]]; then\n for i in \"${!paths[@]}\"; do\n paths[i]=\"${HOME}${paths[i]}\"\n done\n fi\n\n for path in \"${paths[@]}\"; do\n if [[ -e \"$path\" ]]; then\n if [[ $should_sudo == \"true\" ]]; then\n sudo rm -f -- \"$path\"\n else\n rm -f -- \"$path\"\n fi\n fi\n done\n done\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 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\nremove_launchctl_service 'com.microsoft.autoupdate.helper'\nremove_launchctl_service 'com.microsoft.update.agent'\nquit_application 'com.microsoft.autoupdate.fba'\nquit_application 'com.microsoft.autoupdate2'\nquit_application 'com.microsoft.errorreporting'\nremove_pkg_files 'com.microsoft.package.Microsoft_AutoUpdate.app'\nforget_pkg 'com.microsoft.package.Microsoft_AutoUpdate.app'\nremove_pkg_files 'com.microsoft.rdc.macos'\nforget_pkg 'com.microsoft.rdc.macos'\ntrash $LOGGED_IN_USER '~/Library/Application Scripts/com.microsoft.rdc.macos'\ntrash $LOGGED_IN_USER '~/Library/Containers/com.microsoft.rdc.macos'\ntrash $LOGGED_IN_USER '~/Library/Group Containers/UBF8T346G9.com.microsoft.rdc'\n" } }