Files
Allen Houchins 2708df6f40 Add Windows FMAs (letter B): 5 apps (#48950)
**Related issue:** N/A — part of the Windows Fleet-maintained apps
catalog expansion (letter B batch; follows #48872 and #48881).

Adds six new Windows Fleet-maintained apps:

| App | winget package | Installer | Notes |
|-----|----------------|-----------|-------|
| BandiView | `Bandisoft.BandiView` | EXE (NSIS-style), machine, x64 |
Unversioned InstallerUrl → `ignore_hash` (URL verified to serve the
binary reliably without Referer tricks). DisplayName "BandiView" stable
across releases. |
| BleachBit | `BleachBit.BleachBit` | EXE (NsisMultiUser), machine, x86
| Install script passes the case-sensitive `/allusers /S` — without
`/allusers` the NsisMultiUser installer's scope is ambiguous. winget
declares a VCRedist 2010 x86 dependency Fleet can't satisfy; noted as a
caveat. |
| Bulk Crap Uninstaller | `Klocman.BulkCrapUninstaller` | EXE (Inno),
machine, x86 | ARP DisplayName is versioned ("BCUninstaller 6.2.0.0")
and never matches the friendly name, so `unique_identifier`
"BCUninstaller" + `fuzzy_match_name`. Registry version is 4-part vs
winget's "6.2" — `version_compare` pads, verified consistent. |
| BrowserStackLocal | `BrowserStack.BrowserStackLocal` | MSI (WiX),
machine, x64 | Clean MSI (ALLUSERS=1, identity verified via msiinfo).
Unversioned InstallerUrl → `ignore_hash`. |
| Burp Suite Professional | `PortSwigger.BurpSuite.Professional` | EXE
(install4j), machine, x64 | Mirrors the existing Burp Suite Community
FMA: `-q -Dinstall4j.suppressUnattendedReboot=true` plus the
load-bearing `-dir` into Program Files (install4j defaults to per-user
otherwise). DisplayName is versioned **without** "Edition" ("Burp Suite
Professional 2026.3.3"), unlike Community — fuzzy pattern `Burp Suite
Professional %` can't collide with Community's. |
| Bytello Share | `Bytello.BytelloShare` | EXE (NSIS), machine, x86 |
Uses the nullsoft `agent=d` variant whose ARP identity ("Bytello Share"
/ publisher "Bytello Share") matches real-world inventory; the zip
variant registers a different name ("BytelloShare") and its nested-MSI
path is version-pinned and already stale. Vendor URL is a latest-pointer
already ahead of winget → `ignore_hash`. **Note:** the input says
`installer_type: "msi"` — the ingester classifies this nullsoft entry as
msi because its URL has no file extension (vendor-type → URL-extension →
machine-scope fallback chain in `ingester.go`); the custom scripts
handle the actual NSIS exe. |

Considered but **not** added (recorded in the workstream tracker):
- **Bambu Studio** (`Bambulab.Bambustudio`): the uninstaller shows a
keep-user-data confirmation dialog even with `/S` (deployment guides
work around it with Send-Keys, impossible in a SYSTEM session) — same
failure class that disqualified Adobe AIR in the letter A batch.
- **Bridge Designer** (`StephenRessler.BridgeDesigner`): installer URL
404s (file removed from SourceForge) and the desktop product was
discontinued July 1, 2026 in favor of a browser-based edition.
- **BurnAware Free** (`Burnaware.BurnAwareFree`): the vendor deletes
each old release URL — the winget-pinned installer already redirects to
their homepage, so pinned downloads break every release cycle.

Registry identities were verified per app (msiinfo Property tables for
MSIs; vendor installer sources, winget AppsAndFeaturesEntries, and
uninstall-database corroboration for EXEs). Installer SHAs verified
against manifests where URLs are version-pinned; unversioned URLs use
`ignore_hash` per the TeamViewer/Chrome precedent. Icons generated via
`tools/software/icons/generate-icons.sh`.

# Checklist for submitter

- [x] Input data is properly validated, `SELECT *` is avoided, SQL
injection is prevented (using placeholders for values in statements), JS
inline code is prevented especially for url redirects, and untrusted
data interpolated into shell scripts/commands is validated against shell
metacharacters.
- [x] Timeouts are implemented and retries are limited to avoid infinite
loops

## Testing

- [ ] QA'd all new/changed functionality manually (relying on the FMA CI
validator for Windows install/uninstall validation)
2026-07-08 10:53:02 -05:00

12 lines
329 B
JSON

{
"name": "BrowserStackLocal",
"slug": "browserstacklocal/windows",
"package_identifier": "BrowserStack.BrowserStackLocal",
"unique_identifier": "BrowserStackLocal",
"installer_arch": "x64",
"installer_type": "msi",
"installer_scope": "machine",
"ignore_hash": true,
"default_categories": ["Developer tools"]
}