Add Windows FMAs (Letter C) (#47732)
This pull request adds support for three new Windows applications—Chef
Workstation, Cherry Keys, and Colour Contrast Analyser—along with Cribl
Edge, to the maintained apps system. It introduces their metadata,
installation/uninstallation scripts, and icon assets, ensuring these
apps can be managed and displayed within the platform.
**New Windows Application Support:**
* Added metadata input files for:
- `Chef Workstation` (`chef-workstation.json`), including detection
queries and categorization as a Developer tool.
- `Cherry Keys` (`cherry-keys.json`), with fuzzy name matching and
categorized as a Utility.
- `Colour Contrast Analyser` (`colour-contrast-analyser.json`),
specifying publisher and categorized as a Utility.
- `Cribl Edge` (`cribl-edge.json`), with detection queries and
categorized as a Developer tool.
**Application Output and Versioning:**
* Added output JSON files for each new app with:
- Latest version info, detection and patch queries, installer URLs,
SHA256 hashes, install/uninstall script references, and upgrade codes:
- `chef-workstation/windows.json`
- `cherry-keys/windows.json`
- `colour-contrast-analyser/windows.json`
- `cribl-edge/windows.json`
**App Catalog Updates:**
* Updated `apps.json` to include the new Windows apps, each with a
description and unique identifier for catalog display.
[[1]](diffhunk://#diff-4c1446cfc02c6bb0bda874481e333c65b84e184fcea52f656b49a6489f73c9c2R1411-R1424)
[[2]](diffhunk://#diff-4c1446cfc02c6bb0bda874481e333c65b84e184fcea52f656b49a6489f73c9c2R1712-R1718)
[[3]](diffhunk://#diff-4c1446cfc02c6bb0bda874481e333c65b84e184fcea52f656b49a6489f73c9c2R1803-R1809)
**UI/Icon Assets:**
* Added a new SVG icon component for Chef Workstation in the frontend
(`ChefWorkstation.tsx`).
This commit is contained in:
@@ -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"]
|
||||
}
|
||||
@@ -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"]
|
||||
}
|
||||
@@ -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"]
|
||||
}
|
||||
@@ -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"]
|
||||
}
|
||||
@@ -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",
|
||||
|
||||
@@ -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"
|
||||
}
|
||||
}
|
||||
@@ -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"
|
||||
}
|
||||
}
|
||||
@@ -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"
|
||||
}
|
||||
}
|
||||
@@ -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"
|
||||
}
|
||||
}
|
||||
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@@ -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,
|
||||
|
||||
Binary file not shown.
|
After Width: | Height: | Size: 4.9 KiB |
Binary file not shown.
|
After Width: | Height: | Size: 4.0 KiB |
Binary file not shown.
|
After Width: | Height: | Size: 4.6 KiB |
Reference in New Issue
Block a user