diff --git a/ee/maintained-apps/inputs/winget/chef-workstation.json b/ee/maintained-apps/inputs/winget/chef-workstation.json new file mode 100644 index 0000000000..05cd0ae4f6 --- /dev/null +++ b/ee/maintained-apps/inputs/winget/chef-workstation.json @@ -0,0 +1,11 @@ +{ + "name": "Chef Workstation", + "slug": "chef-workstation/windows", + "package_identifier": "ChefSoftware.Workstation", + "unique_identifier": "Chef Workstation", + "exists_query": "SELECT 1 FROM programs WHERE name LIKE 'Chef Workstation v%' AND publisher LIKE '%Chef Software%';", + "installer_arch": "x64", + "installer_type": "msi", + "installer_scope": "machine", + "default_categories": ["Developer tools"] +} diff --git a/ee/maintained-apps/inputs/winget/cherry-keys.json b/ee/maintained-apps/inputs/winget/cherry-keys.json new file mode 100644 index 0000000000..53cee49701 --- /dev/null +++ b/ee/maintained-apps/inputs/winget/cherry-keys.json @@ -0,0 +1,11 @@ +{ + "name": "Cherry Keys", + "slug": "cherry-keys/windows", + "package_identifier": "CHERRY.CHERRYKEYS", + "unique_identifier": "CHERRY KEYS", + "fuzzy_match_name": "CHERRY KEYS (x64) V%", + "installer_arch": "x64", + "installer_type": "msi", + "installer_scope": "machine", + "default_categories": ["Utilities"] +} diff --git a/ee/maintained-apps/inputs/winget/colour-contrast-analyser.json b/ee/maintained-apps/inputs/winget/colour-contrast-analyser.json new file mode 100644 index 0000000000..2b48ca7f5f --- /dev/null +++ b/ee/maintained-apps/inputs/winget/colour-contrast-analyser.json @@ -0,0 +1,11 @@ +{ + "name": "Colour Contrast Analyser", + "slug": "colour-contrast-analyser/windows", + "package_identifier": "TPGi.CCAe", + "unique_identifier": "Colour Contrast Analyser", + "installer_arch": "x64", + "installer_type": "msi", + "installer_scope": "machine", + "program_publisher": "Cédric Trévisan", + "default_categories": ["Utilities"] +} diff --git a/ee/maintained-apps/inputs/winget/cribl-edge.json b/ee/maintained-apps/inputs/winget/cribl-edge.json new file mode 100644 index 0000000000..09741c7f18 --- /dev/null +++ b/ee/maintained-apps/inputs/winget/cribl-edge.json @@ -0,0 +1,10 @@ +{ + "name": "Cribl Edge", + "slug": "cribl-edge/windows", + "package_identifier": "Cribl.CriblEdge", + "unique_identifier": "Cribl Edge", + "installer_arch": "x64", + "installer_type": "msi", + "installer_scope": "machine", + "default_categories": ["Developer tools"] +} diff --git a/ee/maintained-apps/outputs/apps.json b/ee/maintained-apps/outputs/apps.json index 5073f1e029..cedef3a142 100644 --- a/ee/maintained-apps/outputs/apps.json +++ b/ee/maintained-apps/outputs/apps.json @@ -1408,6 +1408,20 @@ "unique_identifier": "de.wengenmayer.Cheetah3D", "description": "Cheetah3D is a 3D modelling, rendering and animation software." }, + { + "name": "Chef Workstation", + "slug": "chef-workstation/windows", + "platform": "windows", + "unique_identifier": "Chef Workstation", + "description": "Chef Workstation is a toolkit from Progress Chef for authoring, testing, and running infrastructure automation code." + }, + { + "name": "Cherry Keys", + "slug": "cherry-keys/windows", + "platform": "windows", + "unique_identifier": "CHERRY KEYS", + "description": "Cherry Keys is a utility for individually reassigning the keys of Cherry keyboards, mice, and desktop sets." + }, { "name": "Cherry Studio", "slug": "cherry-studio/darwin", @@ -1695,6 +1709,13 @@ "unique_identifier": "com.electron.cca", "description": "Colour Contrast Analyser is a colour contrast checker." }, + { + "name": "Colour Contrast Analyser", + "slug": "colour-contrast-analyser/windows", + "platform": "windows", + "unique_identifier": "Colour Contrast Analyser", + "description": "Colour Contrast Analyser is a tool for checking the contrast of text and visual elements against WCAG accessibility guidelines." + }, { "name": "Comet", "slug": "comet/darwin", @@ -1779,6 +1800,13 @@ "unique_identifier": "CrashPlan", "description": "CrashPlan is backup and recovery software." }, + { + "name": "Cribl Edge", + "slug": "cribl-edge/windows", + "platform": "windows", + "unique_identifier": "Cribl Edge", + "description": "Cribl Edge is an observability agent for collecting and processing logs, metrics, and other telemetry at the edge." + }, { "name": "CrossOver", "slug": "crossover/darwin", diff --git a/ee/maintained-apps/outputs/chef-workstation/windows.json b/ee/maintained-apps/outputs/chef-workstation/windows.json new file mode 100644 index 0000000000..add3aca421 --- /dev/null +++ b/ee/maintained-apps/outputs/chef-workstation/windows.json @@ -0,0 +1,23 @@ +{ + "versions": [ + { + "version": "25.13.7.1", + "queries": { + "exists": "SELECT 1 FROM programs WHERE name LIKE 'Chef Workstation v%' AND publisher LIKE '%Chef Software%';", + "patched": "SELECT 1 WHERE NOT EXISTS (SELECT 1 FROM programs WHERE name LIKE 'Chef Workstation v%' AND publisher LIKE '%Chef Software%' AND version_compare(version, '25.13.7.1') < 0);" + }, + "installer_url": "https://packages.chef.io/files/stable/chef-workstation/25.13.7/windows/10/chef-workstation-25.13.7-1-x64.msi", + "install_script_ref": "8959087b", + "uninstall_script_ref": "c136f86e", + "sha256": "fd6dea9b5983510402851b6166848e0275c2cc45890b91e835e5028c9f394aa1", + "default_categories": [ + "Developer tools" + ], + "upgrade_code": "{9870C512-DF2C-43D9-8C28-7ACD60ABBE27}" + } + ], + "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", + "c136f86e": "# Fleet uninstalls app by finding all related product codes for the specified upgrade code\n$inst = New-Object -ComObject \"WindowsInstaller.Installer\"\n$timeoutSeconds = 300 # 5 minute timeout per product\n\n# MSI exit codes that indicate success. 3010 = ERROR_SUCCESS_REBOOT_REQUIRED,\n# 1641 = ERROR_SUCCESS_REBOOT_INITIATED. Treat these as success rather than failure.\n$successCodes = @(0, 3010, 1641)\n\nforeach ($product_code in $inst.RelatedProducts('{9870C512-DF2C-43D9-8C28-7ACD60ABBE27}')) {\n $process = Start-Process msiexec -ArgumentList @(\"/quiet\", \"/x\", $product_code, \"/norestart\") -PassThru\n\n # Wait for process with timeout\n $completed = $process.WaitForExit($timeoutSeconds * 1000)\n\n if (-not $completed) {\n Stop-Process -Id $process.Id -Force -ErrorAction SilentlyContinue\n Exit 1603 # ERROR_UNINSTALL_FAILURE\n }\n\n # If the uninstall failed, bail\n if ($successCodes -notcontains $process.ExitCode) {\n Write-Output \"Uninstall for $($product_code) exited $($process.ExitCode)\"\n Exit $process.ExitCode\n }\n}\n\n# All uninstalls succeeded; exit success\nExit 0\n" + } +} diff --git a/ee/maintained-apps/outputs/cherry-keys/windows.json b/ee/maintained-apps/outputs/cherry-keys/windows.json new file mode 100644 index 0000000000..af8e646e71 --- /dev/null +++ b/ee/maintained-apps/outputs/cherry-keys/windows.json @@ -0,0 +1,23 @@ +{ + "versions": [ + { + "version": "1.0.7", + "queries": { + "exists": "SELECT 1 FROM programs WHERE name LIKE 'CHERRY KEYS (x64) V%' AND publisher = 'Cherry GmbH';", + "patched": "SELECT 1 WHERE NOT EXISTS (SELECT 1 FROM programs WHERE name LIKE 'CHERRY KEYS (x64) V%' AND publisher = 'Cherry GmbH' AND version_compare(version, '1.0.7') < 0);" + }, + "installer_url": "https://www.cherry.de/fileadmin/media/Corporate/Software/CherryKeys_x64_1_0_7__1_.msi", + "install_script_ref": "8959087b", + "uninstall_script_ref": "d2b500dc", + "sha256": "e7b91d2e9a7f7074252d5fb011831b5a6247e6a33bdabb73e68f2ffc198eaed3", + "default_categories": [ + "Utilities" + ], + "upgrade_code": "{9811A1CD-1BB2-415C-A60C-AF84715E03C8}" + } + ], + "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", + "d2b500dc": "# Fleet uninstalls app by finding all related product codes for the specified upgrade code\n$inst = New-Object -ComObject \"WindowsInstaller.Installer\"\n$timeoutSeconds = 300 # 5 minute timeout per product\n\n# MSI exit codes that indicate success. 3010 = ERROR_SUCCESS_REBOOT_REQUIRED,\n# 1641 = ERROR_SUCCESS_REBOOT_INITIATED. Treat these as success rather than failure.\n$successCodes = @(0, 3010, 1641)\n\nforeach ($product_code in $inst.RelatedProducts('{9811A1CD-1BB2-415C-A60C-AF84715E03C8}')) {\n $process = Start-Process msiexec -ArgumentList @(\"/quiet\", \"/x\", $product_code, \"/norestart\") -PassThru\n\n # Wait for process with timeout\n $completed = $process.WaitForExit($timeoutSeconds * 1000)\n\n if (-not $completed) {\n Stop-Process -Id $process.Id -Force -ErrorAction SilentlyContinue\n Exit 1603 # ERROR_UNINSTALL_FAILURE\n }\n\n # If the uninstall failed, bail\n if ($successCodes -notcontains $process.ExitCode) {\n Write-Output \"Uninstall for $($product_code) exited $($process.ExitCode)\"\n Exit $process.ExitCode\n }\n}\n\n# All uninstalls succeeded; exit success\nExit 0\n" + } +} diff --git a/ee/maintained-apps/outputs/colour-contrast-analyser/windows.json b/ee/maintained-apps/outputs/colour-contrast-analyser/windows.json new file mode 100644 index 0000000000..5b0562fec0 --- /dev/null +++ b/ee/maintained-apps/outputs/colour-contrast-analyser/windows.json @@ -0,0 +1,23 @@ +{ + "versions": [ + { + "version": "3.5.5", + "queries": { + "exists": "SELECT 1 FROM programs WHERE name = 'Colour Contrast Analyser' AND publisher = 'Cédric Trévisan';", + "patched": "SELECT 1 WHERE NOT EXISTS (SELECT 1 FROM programs WHERE name = 'Colour Contrast Analyser' AND publisher = 'Cédric Trévisan' AND version_compare(version, '3.5.5') < 0);" + }, + "installer_url": "https://github.com/ThePacielloGroup/CCAe/releases/download/v3.5.5/CCA-Setup-3.5.5.msi", + "install_script_ref": "8959087b", + "uninstall_script_ref": "f8db8d2e", + "sha256": "1267404c1cd7c1c2a19f3bbe7ddd325039c0f9ba4d8bcee0b8e04136388a85a8", + "default_categories": [ + "Utilities" + ], + "upgrade_code": "{7D893A49-4DD7-5CD4-B448-974E017023D3}" + } + ], + "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", + "f8db8d2e": "# Fleet uninstalls app by finding all related product codes for the specified upgrade code\n$inst = New-Object -ComObject \"WindowsInstaller.Installer\"\n$timeoutSeconds = 300 # 5 minute timeout per product\n\n# MSI exit codes that indicate success. 3010 = ERROR_SUCCESS_REBOOT_REQUIRED,\n# 1641 = ERROR_SUCCESS_REBOOT_INITIATED. Treat these as success rather than failure.\n$successCodes = @(0, 3010, 1641)\n\nforeach ($product_code in $inst.RelatedProducts('{7D893A49-4DD7-5CD4-B448-974E017023D3}')) {\n $process = Start-Process msiexec -ArgumentList @(\"/quiet\", \"/x\", $product_code, \"/norestart\") -PassThru\n\n # Wait for process with timeout\n $completed = $process.WaitForExit($timeoutSeconds * 1000)\n\n if (-not $completed) {\n Stop-Process -Id $process.Id -Force -ErrorAction SilentlyContinue\n Exit 1603 # ERROR_UNINSTALL_FAILURE\n }\n\n # If the uninstall failed, bail\n if ($successCodes -notcontains $process.ExitCode) {\n Write-Output \"Uninstall for $($product_code) exited $($process.ExitCode)\"\n Exit $process.ExitCode\n }\n}\n\n# All uninstalls succeeded; exit success\nExit 0\n" + } +} diff --git a/ee/maintained-apps/outputs/cribl-edge/windows.json b/ee/maintained-apps/outputs/cribl-edge/windows.json new file mode 100644 index 0000000000..f0f15b0e4a --- /dev/null +++ b/ee/maintained-apps/outputs/cribl-edge/windows.json @@ -0,0 +1,23 @@ +{ + "versions": [ + { + "version": "4.18.1", + "queries": { + "exists": "SELECT 1 FROM programs WHERE name = 'Cribl Edge' AND publisher = 'Cribl, Inc.';", + "patched": "SELECT 1 WHERE NOT EXISTS (SELECT 1 FROM programs WHERE name = 'Cribl Edge' AND publisher = 'Cribl, Inc.' AND version_compare(version, '4.18.1') < 0);" + }, + "installer_url": "https://cdn.cribl.io/dl/4.18.1/cribl-4.18.1-37206a7f-win32-x64.msi", + "install_script_ref": "8959087b", + "uninstall_script_ref": "00e56c03", + "sha256": "d956338874f15176450121faaf563b99b0369b56ec23c4a43d048dc71630f6a4", + "default_categories": [ + "Developer tools" + ], + "upgrade_code": "{2412301F-2415-4BE7-8D8B-5827722564B0}" + } + ], + "refs": { + "00e56c03": "# Fleet uninstalls app by finding all related product codes for the specified upgrade code\n$inst = New-Object -ComObject \"WindowsInstaller.Installer\"\n$timeoutSeconds = 300 # 5 minute timeout per product\n\n# MSI exit codes that indicate success. 3010 = ERROR_SUCCESS_REBOOT_REQUIRED,\n# 1641 = ERROR_SUCCESS_REBOOT_INITIATED. Treat these as success rather than failure.\n$successCodes = @(0, 3010, 1641)\n\nforeach ($product_code in $inst.RelatedProducts('{2412301F-2415-4BE7-8D8B-5827722564B0}')) {\n $process = Start-Process msiexec -ArgumentList @(\"/quiet\", \"/x\", $product_code, \"/norestart\") -PassThru\n\n # Wait for process with timeout\n $completed = $process.WaitForExit($timeoutSeconds * 1000)\n\n if (-not $completed) {\n Stop-Process -Id $process.Id -Force -ErrorAction SilentlyContinue\n Exit 1603 # ERROR_UNINSTALL_FAILURE\n }\n\n # If the uninstall failed, bail\n if ($successCodes -notcontains $process.ExitCode) {\n Write-Output \"Uninstall for $($product_code) exited $($process.ExitCode)\"\n Exit $process.ExitCode\n }\n}\n\n# All uninstalls succeeded; exit success\nExit 0\n", + "8959087b": "$logFile = \"${env:TEMP}/fleet-install-software.log\"\n\ntry {\n\n$installProcess = Start-Process msiexec.exe `\n -ArgumentList \"/quiet /norestart /lv ${logFile} /i `\"${env:INSTALLER_PATH}`\"\" `\n -PassThru -Verb RunAs -Wait\n\nGet-Content $logFile -Tail 500\n\nExit $installProcess.ExitCode\n\n} catch {\n Write-Host \"Error: $_\"\n Exit 1\n}\n" + } +} diff --git a/frontend/pages/SoftwarePage/components/icons/ChefWorkstation.tsx b/frontend/pages/SoftwarePage/components/icons/ChefWorkstation.tsx new file mode 100644 index 0000000000..252e9ba363 --- /dev/null +++ b/frontend/pages/SoftwarePage/components/icons/ChefWorkstation.tsx @@ -0,0 +1,14 @@ +import * as React from "react"; + +import type { SVGProps } from "react"; + +const ChefWorkstation = (props: SVGProps) => ( + + + +); +export default ChefWorkstation; diff --git a/frontend/pages/SoftwarePage/components/icons/CherryKeys.tsx b/frontend/pages/SoftwarePage/components/icons/CherryKeys.tsx new file mode 100644 index 0000000000..dfa96f65be --- /dev/null +++ b/frontend/pages/SoftwarePage/components/icons/CherryKeys.tsx @@ -0,0 +1,14 @@ +import * as React from "react"; + +import type { SVGProps } from "react"; + +const CherryKeys = (props: SVGProps) => ( + + + +); +export default CherryKeys; diff --git a/frontend/pages/SoftwarePage/components/icons/CriblEdge.tsx b/frontend/pages/SoftwarePage/components/icons/CriblEdge.tsx new file mode 100644 index 0000000000..3e79fd48e3 --- /dev/null +++ b/frontend/pages/SoftwarePage/components/icons/CriblEdge.tsx @@ -0,0 +1,14 @@ +import * as React from "react"; + +import type { SVGProps } from "react"; + +const CriblEdge = (props: SVGProps) => ( + + + +); +export default CriblEdge; diff --git a/frontend/pages/SoftwarePage/components/icons/index.ts b/frontend/pages/SoftwarePage/components/icons/index.ts index 9e056ae876..50efe66ecd 100644 --- a/frontend/pages/SoftwarePage/components/icons/index.ts +++ b/frontend/pages/SoftwarePage/components/icons/index.ts @@ -161,6 +161,8 @@ import ChatGpt from "./ChatGpt"; import ChatGptAtlas from "./ChatGptAtlas"; import Chatwise from "./Chatwise"; import Cheetah3D from "./Cheetah3D"; +import ChefWorkstation from "./ChefWorkstation"; +import CherryKeys from "./CherryKeys"; import CherryStudio from "./CherryStudio"; import Chime from "./Chime"; import Choosy from "./Choosy"; @@ -207,6 +209,7 @@ import Cork from "./Cork"; import CotEditor from "./CotEditor"; import CrashPlan from "./CrashPlan"; import CreativeCloud from "./AdobeCreativeCloud"; +import CriblEdge from "./CriblEdge"; import Crossover from "./Crossover"; import Cryptomator from "./Cryptomator"; import Crystalfetch from "./Crystalfetch"; @@ -1198,6 +1201,8 @@ export const SOFTWARE_NAME_TO_ICON_MAP = { "chatgpt atlas": ChatGptAtlas, chatwise: Chatwise, cheetah3d: Cheetah3D, + "chef workstation": ChefWorkstation, + "cherry keys": CherryKeys, "cherry studio": CherryStudio, chime: Chime, choosy: Choosy, @@ -1242,6 +1247,7 @@ export const SOFTWARE_NAME_TO_ICON_MAP = { cork: Cork, coteditor: CotEditor, crashplan: CrashPlan, + "cribl edge": CriblEdge, crossover: Crossover, cryptomator: Cryptomator, crystalfetch: Crystalfetch, diff --git a/website/assets/images/app-icon-chef-workstation-60x60@2x.png b/website/assets/images/app-icon-chef-workstation-60x60@2x.png new file mode 100644 index 0000000000..e3bcd54b00 Binary files /dev/null and b/website/assets/images/app-icon-chef-workstation-60x60@2x.png differ diff --git a/website/assets/images/app-icon-cherry-keys-60x60@2x.png b/website/assets/images/app-icon-cherry-keys-60x60@2x.png new file mode 100644 index 0000000000..3134f06c07 Binary files /dev/null and b/website/assets/images/app-icon-cherry-keys-60x60@2x.png differ diff --git a/website/assets/images/app-icon-cribl-edge-60x60@2x.png b/website/assets/images/app-icon-cribl-edge-60x60@2x.png new file mode 100644 index 0000000000..96cd61fc0a Binary files /dev/null and b/website/assets/images/app-icon-cribl-edge-60x60@2x.png differ