Initial docs for DNIM - #55967
Initial docs for DNIM#55967joeloff wants to merge 32 commits into
Conversation
There was a problem hiding this comment.
🟡 Changes recommended
Unresolved command-reference, navigation, metadata, and documentation consistency issues remain.
Get a fresh assessment by requesting another Copilot review.
Pull request overview
Adds initial documentation for the .NET Install Manager (DNIM), including installation, logging, CLI commands, and reusable option references.
Changes:
- Adds DNIM overview, installation, logging, and command reference pages.
- Adds reusable CLI option documentation and installer-composition artwork.
- Links DNIM from the Additional tools index.
File summaries
| File | Description |
|---|---|
docs/core/additional-tools/media/dnim/dotnet-bundles.svg |
Adds installer-composition artwork. |
docs/core/additional-tools/index.md |
Adds the DNIM overview link. |
docs/core/additional-tools/includes/dnim-cli-what-if.md |
Documents simulation mode. |
docs/core/additional-tools/includes/dnim-cli-verify-signatures.md |
Documents signature verification. |
docs/core/additional-tools/includes/dnim-cli-verbosity.md |
Documents verbosity options. |
docs/core/additional-tools/includes/dnim-cli-update-EOL-versions.md |
Documents EOL updates. |
docs/core/additional-tools/includes/dnim-cli-update-discontinued-sdks.md |
Documents discontinued SDK updates. |
docs/core/additional-tools/includes/dnim-cli-support-phase.md |
Documents support-phase filtering. |
docs/core/additional-tools/includes/dnim-cli-security.md |
Documents security filtering. |
docs/core/additional-tools/includes/dnim-cli-restore-point-suffix.md |
Documents restore-point suffixes. |
docs/core/additional-tools/includes/dnim-cli-report-issues.md |
Documents issue reporting. |
docs/core/additional-tools/includes/dnim-cli-remove-orphaned-installs.md |
Documents orphan removal. |
docs/core/additional-tools/includes/dnim-cli-remove-EOL-versions-from-VS.md |
Documents Visual Studio EOL removal. |
docs/core/additional-tools/includes/dnim-cli-release-version.md |
Documents release-version filtering. |
docs/core/additional-tools/includes/dnim-cli-product-version.md |
Documents product-version filtering. |
docs/core/additional-tools/includes/dnim-cli-output-format.md |
Documents output formats. |
docs/core/additional-tools/includes/dnim-cli-output-file.md |
Documents output-file selection. |
docs/core/additional-tools/includes/dnim-cli-offline.md |
Documents offline operation. |
docs/core/additional-tools/includes/dnim-cli-offline-revocation-checks.md |
Documents offline revocation checks. |
docs/core/additional-tools/includes/dnim-cli-no-wua.md |
Documents Windows Update Agent handling. |
docs/core/additional-tools/includes/dnim-cli-log-file.md |
Documents log-file selection. |
docs/core/additional-tools/includes/dnim-cli-log-extra-debug-information.md |
Documents extra MSI logging. |
docs/core/additional-tools/includes/dnim-cli-layout-directory.md |
Documents layout-directory selection. |
docs/core/additional-tools/includes/dnim-cli-latest.md |
Documents latest-release selection. |
docs/core/additional-tools/includes/dnim-cli-keep-latest-support-phase.md |
Documents support-phase retention. |
docs/core/additional-tools/includes/dnim-cli-keep-latest-product-version.md |
Documents product-version retention. |
docs/core/additional-tools/includes/dnim-cli-install-type.md |
Documents installation-type filtering. |
docs/core/additional-tools/includes/dnim-cli-include-previews.md |
Documents preview inclusion. |
docs/core/additional-tools/includes/dnim-cli-include-installers.md |
Documents installer inclusion. |
docs/core/additional-tools/includes/dnim-cli-include-bin-deployed-installs.md |
Documents bin-deployed detection. |
docs/core/additional-tools/includes/dnim-cli-ignore-dependents.md |
Documents dependent handling. |
docs/core/additional-tools/includes/dnim-cli-except-support-phase.md |
Documents support-phase exclusions. |
docs/core/additional-tools/includes/dnim-cli-except-product-version.md |
Documents product-version exclusions. |
docs/core/additional-tools/includes/dnim-cli-download-updates-when-offline.md |
Documents offline update downloads. |
docs/core/additional-tools/includes/dnim-cli-cve.md |
Documents CVE filtering. |
docs/core/additional-tools/includes/dnim-cli-create-system-restore-point.md |
Documents restore-point creation. |
docs/core/additional-tools/includes/dnim-cli-accept-license.md |
Documents license acceptance. |
docs/core/additional-tools/dnim-overview.md |
Adds the DNIM overview. |
docs/core/additional-tools/dnim-net-installs.md |
Documents Windows .NET installation management. |
docs/core/additional-tools/dnim-logs.md |
Documents DNIM logging. |
docs/core/additional-tools/dnim-cli-update.md |
Adds the update command reference. |
docs/core/additional-tools/dnim-cli-uninstall.md |
Documents the uninstall command. |
docs/core/additional-tools/dnim-cli-trace.md |
Documents the trace command. |
docs/core/additional-tools/dnim-cli-scan.md |
Documents the scan command. |
docs/core/additional-tools/dnim-cli-query-releases.md |
Documents release queries. |
docs/core/additional-tools/dnim-cli-query-products.md |
Documents product queries. |
docs/core/additional-tools/dnim-cli-layout.md |
Documents offline layout creation. |
Review details
Suppressed comments (44)
docs/core/additional-tools/dnim-cli-layout.md:6
- This new article is missing the repository's required AI-use disclosure in its front matter. Add
ai-usage: ai-assistedbefore the closing delimiter.
---
title: dnim layout command
description: The layout command creates a cache for offline deployments.
author: joeloff
ms.date: 08/11/2026
---
docs/core/additional-tools/dnim-cli-layout.md:49
- The sentence says the example includes only the release metadata, so the verb must agree with the singular subject
deployment.
- Create an offline deployment in `C:\dnim\layout` that only include the release metadata (no installers).
docs/core/additional-tools/dnim-cli-query-products.md:6
- This new article is missing the repository's required AI-use disclosure in its front matter. Add
ai-usage: ai-assistedbefore the closing delimiter.
---
title: dnim query products command
description: The scan command identifies .NET installations.
author: joeloff
ms.date: 08/11/2026
---
docs/core/additional-tools/dnim-cli-query-releases.md:6
- This new article is missing the repository's required AI-use disclosure in its front matter. Add
ai-usage: ai-assistedbefore the closing delimiter.
---
title: dnim query products command
description: The scan command identifies .NET installations.
author: joeloff
ms.date: 08/11/2026
---
docs/core/additional-tools/dnim-cli-scan.md:60
- The results description uses the prohibited
etc.abbreviation, which leaves the supported installation types unspecified. Name the relevant types explicitly.
The results contain a summary of each installation, including its type (MSI, bundle, etc.), the .NET product to which it belongs and its current support phase. It may also include information about its origin. The example below contains three installations: two bundles and one MSI. The targeting pack MSI is shared between both SDK installs and multiple instances of Visual Studio: 17.14.37502 and 17.14.37110.
docs/core/additional-tools/dnim-cli-scan.md:85
- The example passes
report.html, a relative path, while the shared--output-filedescription requires a full path. Either use an absolute path in the example or change the option description to document that relative paths are accepted.
dnim-win-[x86|x64|arm64] scan --sp eol -o report.html --output-format html
docs/core/additional-tools/dnim-cli-scan.md:6
- This new article is missing the repository's required AI-use disclosure in its front matter. Add
ai-usage: ai-assistedbefore the closing delimiter.
---
title: dnim scan command
description: The scan command identifies .NET installations.
author: joeloff
ms.date: 08/11/2026
---
docs/core/additional-tools/dnim-cli-trace.md:6
- This new article is missing the repository's required AI-use disclosure in its front matter. Add
ai-usage: ai-assistedbefore the closing delimiter.
---
title: dnim trace command
description: The trace command identifies .NET processes.
author: joeloff
ms.date: 08/11/2026
---
docs/core/additional-tools/dnim-cli-uninstall.md:59
- The synopsis advertises
--create-system-restore-point, but the Options list never includesdnim-cli-create-system-restore-point.md, so its behavior and caveat are omitted from the reference.
- [!INCLUDE [accept-license](includes/dnim-cli-accept-license.md)]
- [!INCLUDE [bin-deployed-installs](includes/dnim-cli-include-bin-deployed-installs.md)]
docs/core/additional-tools/dnim-cli-uninstall.md:27
- This is not the same option syntax used by the included definition: it uses a comma and reverses the alias order. Use the pipe-separated alias form so users can copy the documented option consistently.
[--log-extra-debug-information, --lx]
docs/core/additional-tools/dnim-cli-uninstall.md:36
- The long alias is missing its leading
--, so the synopsis doesn't match the actual--ri|--report-issuesoption documented in the include.
[--ri|report-issues]
docs/core/additional-tools/dnim-cli-uninstall.md:142
- Use the singular
belowhere; the table itself is the subject being described.
Every installation is assigned an action based on the policies that were evaluated. The table belows contains
a description for the various policy actions returned by the `uninstall` command. Policy actions with a
`None` prefix indicate the installation will not be removed.
docs/core/additional-tools/dnim-cli-uninstall.md:158
- Correct the misspelled preposition before publishing.
| Uninstall | N/A | The installation was successfully evaluated agaisnt all active policies and will be removed. |
docs/core/additional-tools/dnim-cli-uninstall.md:159
- Correct the misspelled conjunction before publishing.
| UninstallParentDependency | N/A | The installation will be removed because a parent dependency will be removed, e.g., an MSI will be removed becasue the .NET bundle to which it belongs will be removed. |
docs/core/additional-tools/dnim-cli-uninstall.md:119
commandlineshould be hyphenated ascommand-linein this policy description.
The table below contains a general overview of the policies generated from the commandline options.
docs/core/additional-tools/dnim-cli-uninstall.md:148
considersdisagrees with the plural subjectall instances of Visual Studio. Useconsiderso the policy result is grammatically clear.
| NoneNotOutOfSupportInVisualStudio | Visual Studio EOL | The product is out of support, but not all instances of Visual Studio considers it out-of-support. This may indicate that product information in the Visual Studio catalogs are outdated or inconsistent. |
docs/core/additional-tools/dnim-cli-uninstall.md:19
- The new
dnim-cli-restore-point-suffix.mdoption is not referenced by the uninstall synopsis or Options list, so users cannot discover how to append a suffix when they use--create-system-restore-point. Add the option to both command-reference sections.
[--crsp|--create-system-restore-point]
docs/core/additional-tools/dnim-cli-uninstall.md:6
- This new article is missing the repository's required AI-use disclosure in its front matter. Add
ai-usage: ai-assistedbefore the closing delimiter.
---
title: dnim uninstall command
description: The uninstall command removes .NET installations.
author: joeloff
ms.date: 08/11/2026
---
docs/core/additional-tools/dnim-cli-uninstall.md:129
- The table description should use the imperative/base form
Considerto match the other policy descriptions.
| Visual Studio EOL | Considers installations marked as out-of-support in Visual Studio. |
docs/core/additional-tools/dnim-cli-update.md:6
- This new article is missing the repository's required AI-use disclosure in its front matter. Add
ai-usage: ai-assistedbefore the closing delimiter.
---
title: dnim scan command
description: The scan command identifies .NET installations.
author: joeloff
ms.date: 08/11/2026
---
docs/core/additional-tools/dnim-logs.md:28
- Correct the misspelled adjective before publishing.
In the preceeding example, `d1000` indicates that a diagnostic message with event ID 1000 was logged. Messages can also be prefixed with `i` (informational) or `e` (error). Only messages with non-zero event ID are sent to the Windows Event log.
docs/core/additional-tools/dnim-logs.md:32
- Use the possessive
itsrather than the contractionit'sin this sentence.
DNIM tracks information pertaining to it's last execution in the registry. The data is stored under `HKCU\Software\Microsoft\DNIM` or `HKLM\Software\Microsoft\DNIM` (if the command was run with elevated permissions).
docs/core/additional-tools/dnim-logs.md:20
contentsis plural, so the verb should bevary;includesalso keeps the description in the present tense.
The contents of the log varies based on the command and the state of the machine. The start of the log will include information like the version and the command that was executed.
docs/core/additional-tools/dnim-logs.md:14
- The page says console output is always generated, but the shared verbosity option documents
quietand the overview recommendsquietto avoid disrupting users. Describe console output as controlled by the verbosity setting instead of claiming it is always emitted.
DNIM always generates output to the console. The default verbosity is `normal`. It is recommended to set the verbosity level to `quiet` when deploying DNIM using Configuration Manager to avoid disrupting users.
docs/core/additional-tools/dnim-logs.md:18
- The
--log-fileoption lets users choose a different path, so the diagnostic log is not always written to%TEMP%. Make%TEMP%explicitly the default location to keep this page consistent with the command option.
DNIM always generates a diagnostic log in the current user's `%TEMP%` directory. The default filename consists of the `dnim` prefix followed by the date and time, for example, `dnim_20260811_203922.log` indicates the log was generated on August 11, 2026 at 8:39:22 pm.
docs/core/additional-tools/dnim-logs.md:6
- This new article is missing the repository's required AI-use disclosure in its front matter. Add
ai-usage: ai-assistedbefore the closing delimiter.
---
title: .NET Install Manager Logging
description: An overview of various logs provided by DNIM.
author: joeloff
ms.date: 08/11/2026
---
docs/core/additional-tools/dnim-net-installs.md:75
- The path opens with a backtick but closes with an apostrophe, so the paragraph has malformed inline-code markup. Close
Program Files\dotnetwith a backtick.
Bin deployed installations refer to copies of .NET that aren't associated with an MSI. This can be achieved by running the install scripts as an administrator and setting the installation directory to `Program Files\dotnet'. This can complicate remediation. Scanners will report vulnerabilities, but administrators won't find MSIs that can be uninstalled. DNIM is able to detect bin deployed installs.
docs/core/additional-tools/dnim-net-installs.md:13
- Correct the misspelled heading before publishing.
## Aquiring .NET on Windows
docs/core/additional-tools/dnim-net-installs.md:17
- Correct the misspelled verb before publishing.
- Servicing updates distrubute the bundles through Microsoft Update using automatic updates, WSUS and the Windows Update Catalog.
docs/core/additional-tools/dnim-net-installs.md:45
- Correct the misspelled adjective before publishing.
- The desktop bundle includes an additioanl MSI that is shared with the SDK bundle.
docs/core/additional-tools/dnim-net-installs.md:68
- Correct the misspelled noun before publishing.
> Individual MSIs become orphaned when depedents remain registered after a bundle is removed, for example, when the uninstall is interrupted.
docs/core/additional-tools/dnim-net-installs.md:79
- Correct the spelling in this warning;
non-complaintchanges the meaning and should benon-compliant.
DNIM relies on a number of heuristics to identify bundles and MSIs associated with .NET. Accurately detecting installations is critical to successfully remediate a non-complaint devices.
docs/core/additional-tools/dnim-net-installs.md:83
- Correct the misspelled noun and remove the extra space before
executables.
Bundles are identified using their display names and file information stored in the registry. Additional checks are performed on executables to ensure they are valid installers. This informatio is also compared against the JSON data .NET publishes for each release.
docs/core/additional-tools/dnim-net-installs.md:87
- Correct the misspelled registry name before publishing.
DNIM performs an exhaustive search against the installer component data stored in the registery under `HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Installer\UserData\S-1-5-18\Components` to identify .NET MSIs.
docs/core/additional-tools/dnim-net-installs.md:89
registry eyis a typo and leaves the sentence grammatically incomplete; describe the registry entry explicitly.
The installer service tracks each component registry ey contains the component ID while its values contain MSI product codes. Both the component ID and product code is stored as packed GUIDs. The example below is of the component associated with `dotnet.exe`.
docs/core/additional-tools/dnim-net-installs.md:112
- Correct the missing period in
.NETand the missing space after the closing parenthesis.
Once a product (e.g., NET 10) is identified, additional information like the release (e.g., 10.0.4) and support phase (e.g., active)can be determined. This enables administrators to create flexible deployments.
docs/core/additional-tools/dnim-net-installs.md:114
- Correct the misspelled noun before publishing.
Installations are further classified according to the .NET components they represent, their architecure and type of installation.
docs/core/additional-tools/dnim-net-installs.md:127
- Correct the misspelled noun before publishing.
In .NET Core 1.0 and 1.1, SDKs used a versioning scheme similar to the runime. The last SDK in .NET Core 1.1 was versioned as 1.1.14 and included the 1.1.13 runtime.
docs/core/additional-tools/dnim-net-installs.md:120
every subsequent SDKshas incorrect number agreement. Useall subsequent SDKs.
Ensuring consistent behavior requires installations to define their product, release and support phase. The targeting pack for .NET Standard 2.1 presents an interesting challenge. It doesn't contain executable code and only provides reference assemblies for the APIs defined by the standard. The targeting pack first shipped as part of the .NET Core 3.0.100 SDK, but was included in every subsequent SDKs until .NET 10. While DNIM will classify the release and product under .NET Core 3.0, the support phase is always reported as active since it may be included in SDKs that are in active support.
docs/core/additional-tools/dnim-net-installs.md:129
SDK feature bandsis the established term, and the examples should avoid the prohibitede.g.andetc.abbreviations.
SDK features bands were introduced in the 2.1.100 SDK to differentiate between supported features in Visual Studio. The SDK shipped as part of the .NET Core 2.0.5 release. The last 2.0 SDK was versioned as 2.1.202 and included in the 2.0.9 release. The first SDK to ship in .NET Core 2.1 was versioned as 2.1.300. In later releases, SDK feature bands always start at 100, e.g., 2.2.100, 3.0.100, etc.
docs/core/additional-tools/dnim-net-installs.md:5
- This new article is missing the repository's required AI-use disclosure in its front matter. Add
ai-usage: ai-assistedbefore the closing delimiter.
---
title: Managed .NET installations on Windows
description: Provides a technical overview of .NET installations on windows, including composition and reference counting.
author: joeloff
---
docs/core/additional-tools/dnim-overview.md:21
- The clause needs a comma after the parenthetical phrase so the sentence clearly states that all changes are documented.
> Because DNIM is a single file application, new builds are regularly published to ensure the .NET runtime remains up to date. Any changes, including security fixes are documented in the release notes. Enterprise customers should contact their [customer support representative](https://engagecenter.microsoft.com/#view/Microsoft_AzureCXP_EngageHub/EngageHubMenu.MenuView/~/helpSupport) to address concerns or report issues.
docs/core/additional-tools/includes/dnim-cli-cve.md:5
- This option include isn't referenced by any command page, so the CVE filter is not discoverable in the published command reference. The same orphaned pattern applies to
download-updates-when-offline,layout-directory,security,update-EOL-versions, andupdate-discontinued-sdks. Add each option to its owning command reference or remove the unused includes.
**`--cve <CVE_ID>`**
docs/core/additional-tools/index.md:60
- This adds the only navigation entry for DNIM, but the new overview and command/reference pages aren't added to
docs/navigate/tools-diagnostics/toc.yml. As a result, most of the new documentation is unreachable from the site navigation; add the DNIM pages to the Additional tools TOC.
- Files reviewed: 46/48 changed files
- Comments generated: 18
- Review effort level: Lite
💡 Add a code-review agent skill for context-aware, tailored reviews. Learn more in the docs.
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
Co-authored-by: Genevieve Warren <24882762+gewarren@users.noreply.github.com>
Co-authored-by: Genevieve Warren <24882762+gewarren@users.noreply.github.com>
Co-authored-by: Genevieve Warren <24882762+gewarren@users.noreply.github.com>
Co-authored-by: Genevieve Warren <24882762+gewarren@users.noreply.github.com>
Co-authored-by: Genevieve Warren <24882762+gewarren@users.noreply.github.com>
Co-authored-by: Genevieve Warren <24882762+gewarren@users.noreply.github.com>
Co-authored-by: Genevieve Warren <24882762+gewarren@users.noreply.github.com>
Co-authored-by: Genevieve Warren <24882762+gewarren@users.noreply.github.com>
Co-authored-by: Genevieve Warren <24882762+gewarren@users.noreply.github.com>
|
@jamshedd do you want me to add a section to this document to reference DNIM - maybe to avoid confusion. |
Yes, please. The important thing in my mind is articulating c;learly the difference between one and the other and which one customers should use when. |
Agree. I already added an FAQ entry: https://review.learn.microsoft.com/en-us/dotnet/core/additional-tools/dnim-faq?branch=pr-en-us-55967#what-is-the-difference-between-dnim-and-the--net-uninstall-tool |
Summary
Initial documentation for DNIM
Internal previews
Toggle expand/collapse
Build report