<!-- Add the related story/sub-task/bug number, like Resolves#123, or
remove if NA -->
**Related issue:** #50653
Companion to #50717, which adds Visual Studio 2022 Community,
Professional, and Enterprise as Windows Fleet-maintained apps. Opened as
a draft because it documents behavior that PR introduces.
Adding the FMA and letting it run is not enough on its own. The
unattended Visual Studio bootstrapper installs the core IDE shell with
no workloads, so a host ends up with an IDE nobody can build with.
Everything that follows from that came out of getting #50717 through CI,
so this guide captures it rather than leaving each admin to rediscover
it.
The guide covers:
- What the default install actually produces, and why the core-only
result is the right default rather than a shortfall
- Pinning workloads for a fleet by overriding `install_script`, with
`--add` or an exported `.vsconfig`
- Letting developers select their own workloads via
`AllowStandardUserControl`, paired with `HideAvailableTab` so they can't
install other Visual Studio SKUs
- Verify and troubleshoot sections for the failure modes seen during
#50717
Two constraints worth flagging for reviewers, both documented in the
guide:
- Fleet stops install scripts after one hour
(`MaxHostSoftwareInstallExecutionTime`), and the multi-GB payload
downloads inside that window. Pinning a large workload set can exceed it
on a slow connection.
- Standard users can't run the Visual Studio Installer with `--quiet` or
`--passive` regardless of policy. That's Microsoft's constraint, not
Fleet's, and it's why per-user selection goes through the installer UI
rather than through Fleet.
# Checklist for submitter
- [x] Changes file added for user-visible changes in `changes/`,
`orbit/changes/` or `ee/fleetd-chrome/changes`.
Not applicable: documentation only, no user-visible product change.
## Testing
- [x] QA'd all new/changed functionality manually
Documentation only, so there is no code to test. What was verified:
- Guide structure and prose checked against the `fleet-guide-formatting`
and `content-style` conventions: sentence-case task-led H1,
prerequisites, inline `>` callouts next to the steps they affect, verify
and troubleshoot sections, no summary coda, complete endmatter with the
description under the 150-character build limit.
- Confirmed `GET /guides/*` in `website/config/routes.js` is a wildcard
handler, so this guide needs no route entry.
- The GitOps keys used (`fleet_maintained_apps`, `install_script.path`,
`post_install_script.path`) were checked against
`docs/Configuration/yaml-files.md`, and the UI path against existing
guides.
- Registry keys, policy values, and installer switches were taken from
Microsoft's documentation, linked inline in the guide.
**Not verified, and worth a reviewer's eye:** the
`AllowStandardUserControl` flow has not been exercised end to end on a
real host with a standard (non-administrator) user. The policy behavior
comes from Microsoft's docs rather than from a test.
`publishedOn` is set to the date this was drafted. Update it before
publishing.