{"id":215,"date":"2026-07-21T09:00:03","date_gmt":"2026-07-21T16:00:03","guid":{"rendered":"https:\/\/devblogs.microsoft.com\/insidemsix\/?p=215"},"modified":"2026-07-20T11:56:00","modified_gmt":"2026-07-20T18:56:00","slug":"msix-displayname-vs-package-identity","status":"publish","type":"post","link":"https:\/\/devblogs.microsoft.com\/insidemsix\/msix-displayname-vs-package-identity\/","title":{"rendered":"Display Name is for Humans"},"content":{"rendered":"<p><a href=\"https:\/\/devblogs.microsoft.com\/insidemsix\/package-identity\/\">Package identity<\/a> exists for one primary purpose:<\/p>\n<pre><code>To provide software with a stable and unambiguous way to identify a package.\n<\/code><\/pre>\n<p>This is a considerable improvement over the historical tendency to assign <a href=\"https:\/\/en.wikipedia.org\/wiki\/Universally_unique_identifier\">UUIDs<\/a> and GUIDs to nearly everything &#8211; including things that humans were expected to discuss in meetings.<\/p>\n<h2>Identity Is for Systems<\/h2>\n<p>A package&#8217;s <strong>Name<\/strong>, <a href=\"https:\/\/learn.microsoft.com\/windows\/apps\/desktop\/modernize\/package-identity-overview#package-full-name\">Package Full Name<\/a>, and other identity-derived values are intended for developer and system use.<\/p>\n<p>These identifiers prioritize correctness, uniqueness, and programmatic consumption &#8211; not clarity or friendliness from an end-user&#8217;s perspective.<\/p>\n<p>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.<\/p>\n<h2>DisplayName Is for Humans<\/h2>\n<p>That&#8217;s where <code>DisplayName<\/code> comes in.<\/p>\n<p>People use a package&#8217;s display name. You&#8217;ll typically see it in Start, Settings, installation experiences, and runtime surfaces.<\/p>\n<pre><code class=\"xml\">&lt;Package&gt;\n  &lt;Identity Name=\"Contoso.Parts\"\n            Publisher=\"CN=Contoso LLC, O=Contoso LLC, L=Paris, C=France\"\n            Version=\"1.2.3.4\"\n            ProcessorArchitecture=\"x64\" \/&gt;\n  &lt;Properties&gt;\n    &lt;DisplayName&gt;Contoso Parts 2026&lt;\/DisplayName&gt;\n    ...\n<\/code><\/pre>\n<p>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.<\/p>\n<p>Identity tells the system what the package <strong>is<\/strong>.<\/p>\n<p>The display name tells the user what it&#8217;s <strong>called<\/strong>.<\/p>\n<p>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.<\/p>\n<h2>Localization<\/h2>\n<p>Users speak many languages, so hard-coding a single human-readable string would be somewhat limiting.<\/p>\n<p>To support localization, the value of <a href=\"https:\/\/learn.microsoft.com\/uwp\/schemas\/appxpackage\/uapmanifestschema\/element-f-displayname\"><DisplayName><\/a> may be prefixed with <code>ms-resource:<\/code>. The runtime resolves the value to a localized string for the user&#8217;s language and region.<\/p>\n<pre><code class=\"xml\">&lt;DisplayName&gt;ms-resource:PackageDisplayName&lt;\/DisplayName&gt;\n<\/code><\/pre>\n<p>Developers can then provide the referenced as multiple language-specific values in the package.<\/p>\n<p>Users may see different strings based on their localization context &#8211; all without altering the package&#8217;s underlying identity.<\/p>\n<h2>TL;DR<\/h2>\n<ul>\n<li><strong>Package identity is for machines<\/strong><\/li>\n<li><strong>Display name is for humans<\/strong><\/li>\n<\/ul>\n<p>Confusing the two tends to make at least one of them unhappy &#8211; and occasionally both.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>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 &#8211; including things that humans were expected to discuss in meetings. Identity Is for Systems A package&#8217;s Name, [&hellip;]<\/p>\n","protected":false},"author":911,"featured_media":81,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[1],"tags":[8,9,11,19,2,10],"class_list":["post-215","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-msix","tag-architecture","tag-code","tag-identity","tag-localization","tag-msix","tag-terminology"],"acf":[],"blog_post_summary":"<p>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 &#8211; including things that humans were expected to discuss in meetings. Identity Is for Systems A package&#8217;s Name, [&hellip;]<\/p>\n","_links":{"self":[{"href":"https:\/\/devblogs.microsoft.com\/insidemsix\/wp-json\/wp\/v2\/posts\/215","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/devblogs.microsoft.com\/insidemsix\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/devblogs.microsoft.com\/insidemsix\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/insidemsix\/wp-json\/wp\/v2\/users\/911"}],"replies":[{"embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/insidemsix\/wp-json\/wp\/v2\/comments?post=215"}],"version-history":[{"count":1,"href":"https:\/\/devblogs.microsoft.com\/insidemsix\/wp-json\/wp\/v2\/posts\/215\/revisions"}],"predecessor-version":[{"id":224,"href":"https:\/\/devblogs.microsoft.com\/insidemsix\/wp-json\/wp\/v2\/posts\/215\/revisions\/224"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/insidemsix\/wp-json\/wp\/v2\/media\/81"}],"wp:attachment":[{"href":"https:\/\/devblogs.microsoft.com\/insidemsix\/wp-json\/wp\/v2\/media?parent=215"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/insidemsix\/wp-json\/wp\/v2\/categories?post=215"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/insidemsix\/wp-json\/wp\/v2\/tags?post=215"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}