[MS] Display Name is for Humans - devamazonaws.blogspot.com

Package identity exists for one primary purpose:

To provide software with a stable and unambiguous way to identify a package.

This is a considerable improvement over the historical tendency to assign UUIDs and GUIDs to nearly everything - including things that humans were expected to discuss in meetings.

Identity Is for Systems

A package's Name, Package Full Name, and other identity-derived values are intended for developer and system use.

These identifiers prioritize correctness, uniqueness, and programmatic consumption - not clarity or friendliness from an end-user's perspective.

Identity must remain stable across servicing operations and dependency resolution. If it changes, the system quite reasonably concludes that it is no longer the same package.

DisplayName Is for Humans

That's where DisplayName comes in.

People use a package's display name. You'll typically see it in Start, Settings, installation experiences, and runtime surfaces.

<Package>
  <Identity Name="Contoso.Parts"
            Publisher="CN=Contoso LLC, O=Contoso LLC, L=Paris, C=France"
            Version="1.2.3.4"
            ProcessorArchitecture="x64" />
  <Properties>
    <DisplayName>Contoso Parts 2026</DisplayName>
    ...

Unlike package identity fields, which must remain stable for deployment, runtime and servicing, a display name is free to evolve for branding, marketing, or usability reasons.

Identity tells the system what the package is.

The display name tells the user what it's called.

Localization varies for the same product. As a result, localized values make poor programmatic identifiers. In addition, branding changes usually affect the display name, not the package identity. The package remains the same package even if marketing decides to call it something else.

Localization

Users speak many languages, so hard-coding a single human-readable string would be somewhat limiting.

To support localization, the value of may be prefixed with ms-resource:. The runtime resolves the value to a localized string for the user's language and region.

<DisplayName>ms-resource:PackageDisplayName</DisplayName>

Developers can then provide the referenced as multiple language-specific values in the package.

Users may see different strings based on their localization context - all without altering the package's underlying identity.

TL;DR

  • Package identity is for machines
  • Display name is for humans

Confusing the two tends to make at least one of them unhappy - and occasionally both.


Post Updated on July 21, 2026 at 05:00PM
Thanks for reading
from devamazonaws.blogspot.com

Comments

Popular posts from this blog

[MS] Pulling a single item from a C++ parameter pack by its index, remarks - devamazonaws.blogspot.com

[MS] Boosting Azure DevOps Security with GHAS Code Scanning - devamazonaws.blogspot.com

AWS CodeBuild is now available in AWS Asia Pacific (Melbourne) Region - devamazonaws.blogspot.com