diff --git a/ee/maintained-apps/inputs/winget/druva-insync.json b/ee/maintained-apps/inputs/winget/druva-insync.json new file mode 100644 index 0000000000..5aec50cb22 --- /dev/null +++ b/ee/maintained-apps/inputs/winget/druva-insync.json @@ -0,0 +1,11 @@ +{ + "name": "Druva inSync", + "slug": "druva-insync/windows", + "package_identifier": "Druva.inSync", + "unique_identifier": "Druva inSync", + "fuzzy_match_name": true, + "installer_arch": "x64", + "installer_type": "msi", + "installer_scope": "machine", + "default_categories": ["Productivity"] +} diff --git a/ee/maintained-apps/outputs/apps.json b/ee/maintained-apps/outputs/apps.json index f5d9b10899..3f7ba59684 100644 --- a/ee/maintained-apps/outputs/apps.json +++ b/ee/maintained-apps/outputs/apps.json @@ -631,6 +631,13 @@ "unique_identifier": "com.getdropbox.dropbox", "description": "Dropbox is a client for the Dropbox cloud storage service." }, + { + "name": "Druva inSync", + "slug": "druva-insync/windows", + "platform": "windows", + "unique_identifier": "Druva inSync", + "description": "Druva inSync is a cloud-based product that protects endpoint data." + }, { "name": "Eclipse IDE", "slug": "eclipse-ide/darwin", diff --git a/ee/maintained-apps/outputs/druva-insync/windows.json b/ee/maintained-apps/outputs/druva-insync/windows.json new file mode 100644 index 0000000000..251f3a3ec9 --- /dev/null +++ b/ee/maintained-apps/outputs/druva-insync/windows.json @@ -0,0 +1,23 @@ +{ + "versions": [ + { + "version": "7.5.7", + "queries": { + "exists": "SELECT 1 FROM programs WHERE name LIKE 'Druva inSync %' AND publisher = 'Druva Technologies Pte. Ltd.';", + "patched": "SELECT 1 WHERE NOT EXISTS (SELECT 1 FROM programs WHERE name LIKE 'Druva inSync %' AND publisher = 'Druva Technologies Pte. Ltd.' AND version_compare(version, '7.5.7') < 0);" + }, + "installer_url": "https://downloads.druva.com/downloads/inSync/Windows/7.5.7/inSync7.5.7r110923.msi", + "install_script_ref": "8959087b", + "uninstall_script_ref": "b98f2558", + "sha256": "44e7295a0efba9e386e5dc24fa1e024e84b14d5e70f290ddd4389da5c5e5c96e", + "default_categories": [ + "Productivity" + ], + "upgrade_code": "{99ADCB07-6ABD-4A1D-AFF6-03649753BAFF}" + } + ], + "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", + "b98f2558": "# 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\nforeach ($product_code in $inst.RelatedProducts('{99ADCB07-6ABD-4A1D-AFF6-03649753BAFF}')) {\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 ($process.ExitCode -ne 0) {\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/frontend/pages/SoftwarePage/components/icons/DruvaInSync.tsx b/frontend/pages/SoftwarePage/components/icons/DruvaInSync.tsx new file mode 100644 index 0000000000..5c0a2c5f3b --- /dev/null +++ b/frontend/pages/SoftwarePage/components/icons/DruvaInSync.tsx @@ -0,0 +1,14 @@ +import * as React from "react"; + +import type { SVGProps } from "react"; + +const DruvaInSync = (props: SVGProps) => ( + + + +); +export default DruvaInSync; diff --git a/frontend/pages/SoftwarePage/components/icons/index.ts b/frontend/pages/SoftwarePage/components/icons/index.ts index 57a9ee6dd4..243c85c645 100644 --- a/frontend/pages/SoftwarePage/components/icons/index.ts +++ b/frontend/pages/SoftwarePage/components/icons/index.ts @@ -10,6 +10,7 @@ import BetterDisplay from "./BetterDisplay"; import Charles from "./Charles"; import ConnectFonts from "./ConnectFonts"; import CrashPlan from "./CrashPlan"; +import DruvaInSync from "./DruvaInSync"; import GoogleCredentialProviderForWindows from "./GoogleCredentialProviderForWindows"; import Iina from "./Iina"; import Kitty from "./Kitty"; @@ -316,6 +317,7 @@ export const SOFTWARE_NAME_TO_ICON_MAP = { crashplan: CrashPlan, "google credential provider for windows": GoogleCredentialProviderForWindows, iina: Iina, + insyncclient: DruvaInSync, kitty: Kitty, krita: Krita, lastpass: LastPass, diff --git a/website/assets/images/app-icon-druva-insync-60x60@2x.png b/website/assets/images/app-icon-druva-insync-60x60@2x.png new file mode 100644 index 0000000000..2769a91dde Binary files /dev/null and b/website/assets/images/app-icon-druva-insync-60x60@2x.png differ