{"id":330,"date":"2026-09-22T09:00:56","date_gmt":"2026-09-22T16:00:56","guid":{"rendered":"https:\/\/devblogs.microsoft.com\/insidemsix\/?p=330"},"modified":"2026-09-21T00:07:09","modified_gmt":"2026-09-21T07:07:09","slug":"msix-footprint-vs-payload-files","status":"publish","type":"post","link":"https:\/\/devblogs.microsoft.com\/insidemsix\/msix-footprint-vs-payload-files\/","title":{"rendered":"Footprint vs Payload files"},"content":{"rendered":"<h2>Payload files<\/h2>\n<p><strong>Payload files<\/strong> are files stored in and delivered by the package. This includes your code, assets, and data, such as executables, DLLs, images, configuration files, and resources. For example:<\/p>\n<ul>\n<li>MyApp.exe<\/li>\n<li>MyLibrary.dll<\/li>\n<li>Assets\\Logo.png<\/li>\n<li>Config\\defaults.json<\/li>\n<li>Resources.pri<\/li>\n<\/ul>\n<h3>Content files<\/h3>\n<p>The term <strong>content<\/strong> is sometimes used in MSIX-related APIs and documentation, but it does not provide as clean a classification as <strong>payload<\/strong> and <strong>footprint<\/strong>. For example, the <a href=\"https:\/\/learn.microsoft.com\/windows\/win32\/api\/appxpackaging\/\">Packaging API<\/a> associates a content type with payload files. To avoid ambiguity, we&#8217;ll use <strong>payload file<\/strong> when referring to files stored in the package.<\/p>\n<h2>Footprint files<\/h2>\n<p><strong>Footprint files<\/strong> are package metadata and infrastructure files used to describe, validate, or otherwise support the package and its payload.<\/p>\n<p><strong>Not just terminology:<\/strong> The <a href=\"https:\/\/learn.microsoft.com\/windows\/win32\/api\/appxpackaging\/\">Packaging API<\/a> distinguishes between the two concepts directly: <a href=\"https:\/\/learn.microsoft.com\/windows\/win32\/api\/appxpackaging\/nf-appxpackaging-iappxpackagewriter-addpayloadfile\">IAppxPackageWriter::AddPayloadFile()<\/a> adds payload files, while <a href=\"https:\/\/learn.microsoft.com\/windows\/win32\/api\/appxpackaging\/nf-appxpackaging-iappxpackagewriter-close\">IAppxPackageWriter::Close()<\/a> writes the package&#8217;s footprint files. The API also prevents reserved footprint filenames such as <code>AppxManifest.xml<\/code>, <code>AppxBlockMap.xml<\/code>, and <code>AppxSignature.p7x<\/code> from being added as payload files.<\/p>\n<h3>APPX_FOOTPRINT_FILE_TYPE<\/h3>\n<p>The <a href=\"https:\/\/learn.microsoft.com\/windows\/win32\/api\/appxpackaging\/ne-appxpackaging-appx_footprint_file_type\">APPX_FOOTPRINT_FILE_TYPE<\/a> enumeration identifies the package&#8217;s footprint file types:<\/p>\n<table>\n<thead>\n<tr>\n<th>Constant<\/th>\n<th>Filename<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td><code>APPX_FOOTPRINT_FILE_TYPE_MANIFEST<\/code><\/td>\n<td><code>AppxManifest.xml<\/code><\/td>\n<\/tr>\n<tr>\n<td><code>APPX_FOOTPRINT_FILE_TYPE_BLOCKMAP<\/code><\/td>\n<td><code>AppxBlockMap.xml<\/code><\/td>\n<\/tr>\n<tr>\n<td><code>APPX_FOOTPRINT_FILE_TYPE_SIGNATURE<\/code><\/td>\n<td><code>AppxSignature.p7x<\/code><\/td>\n<\/tr>\n<tr>\n<td><code>APPX_FOOTPRINT_FILE_TYPE_CODEINTEGRITY<\/code><\/td>\n<td><code>AppxMetadata\\CodeIntegrity.cat<\/code><\/td>\n<\/tr>\n<tr>\n<td><code>APPX_FOOTPRINT_FILE_TYPE_CONTENTGROUPMAP<\/code><\/td>\n<td><code>AppxContentGroupMap.xml<\/code><\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>A package contains core footprint files such as <code>AppxManifest.xml<\/code> and <code>AppxBlockMap.xml<\/code>. Other footprint files are conditional. For example, <code>AppxContentGroupMap.xml<\/code> is only present in packages that define <a href=\"https:\/\/learn.microsoft.com\/windows\/msix\/package\/streaming-install\">content groups<\/a>.<\/p>\n<h3>APPX_BUNDLE_FOOTPRINT_FILE_TYPE<\/h3>\n<p><a href=\"https:\/\/devblogs.microsoft.com\/insidemsix\/msix-package-types\/\">Bundles<\/a> have a different set of footprint files. The <a href=\"https:\/\/learn.microsoft.com\/windows\/win32\/api\/appxpackaging\/ne-appxpackaging-appx_bundle_footprint_file_type\">APPX_BUNDLE_FOOTPRINT_FILE_TYPE<\/a> enumeration identifies the bundle&#8217;s footprint file types:<\/p>\n<table>\n<thead>\n<tr>\n<th>Constant<\/th>\n<th>Filename<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td><code>APPX_BUNDLE_FOOTPRINT_FILE_TYPE_MANIFEST<\/code><\/td>\n<td><code>AppxBundleManifest.xml<\/code><\/td>\n<\/tr>\n<tr>\n<td><code>APPX_BUNDLE_FOOTPRINT_FILE_TYPE_BLOCKMAP<\/code><\/td>\n<td><code>AppxBlockMap.xml<\/code><\/td>\n<\/tr>\n<tr>\n<td><code>APPX_BUNDLE_FOOTPRINT_FILE_TYPE_SIGNATURE<\/code><\/td>\n<td><code>AppxSignature.p7x<\/code><\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<h2>Practical terminology<\/h2>\n<p>Here&#8217;s a little cheat sheet summarizing the terms:<\/p>\n<table>\n<thead>\n<tr>\n<th>\n        Term\n      <\/th>\n<th>\n        Meaning\n      <\/th>\n<th>\n        Example\n      <\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td>\n        <strong>Package file<\/strong>\n      <\/td>\n<td>\n        A file represented in the package\n      <\/td>\n<td>\n        Any file in the package\n      <\/td>\n<\/tr>\n<tr>\n<td>\n        <strong>Payload file<\/strong>\n      <\/td>\n<td>\n        A file stored in and delivered by the package\n      <\/td>\n<td>\n        <code>.exe<\/code>, <code>.dll<\/code>, <code>.png<\/code>, <code>.json<\/code>, <code>.pri<\/code>\n      <\/td>\n<\/tr>\n<tr>\n<td>\n        <strong>Footprint file<\/strong>\n      <\/td>\n<td>\n        Package metadata or infrastructure\n      <\/td>\n<td>\n        <code>AppxManifest.xml<\/code>, <code>AppxBlockMap.xml<\/code>, <code>AppxSignature.p7x<\/code>\n      <\/td>\n<\/tr>\n<tr>\n<td>\n        <strong>Content file<\/strong>\n      <\/td>\n<td>\n        An ambiguous term; prefer &#8220;payload file&#8221; when that is what you mean\n      <\/td>\n<td>\n      <\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n","protected":false},"excerpt":{"rendered":"<p>Payload files Payload files are files stored in and delivered by the package. This includes your code, assets, and data, such as executables, DLLs, images, configuration files, and resources. For example: MyApp.exe MyLibrary.dll Assets\\Logo.png Config\\defaults.json Resources.pri Content files The term content is sometimes used in MSIX-related APIs and documentation, but it does not provide as [&hellip;]<\/p>\n","protected":false},"author":911,"featured_media":101,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[1],"tags":[8,9,33,10],"class_list":["post-330","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-msix","tag-architecture","tag-code","tag-packaging","tag-terminology"],"acf":[],"blog_post_summary":"<p>Payload files Payload files are files stored in and delivered by the package. This includes your code, assets, and data, such as executables, DLLs, images, configuration files, and resources. For example: MyApp.exe MyLibrary.dll Assets\\Logo.png Config\\defaults.json Resources.pri Content files The term content is sometimes used in MSIX-related APIs and documentation, but it does not provide as [&hellip;]<\/p>\n","_links":{"self":[{"href":"https:\/\/devblogs.microsoft.com\/insidemsix\/wp-json\/wp\/v2\/posts\/330","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=330"}],"version-history":[{"count":2,"href":"https:\/\/devblogs.microsoft.com\/insidemsix\/wp-json\/wp\/v2\/posts\/330\/revisions"}],"predecessor-version":[{"id":333,"href":"https:\/\/devblogs.microsoft.com\/insidemsix\/wp-json\/wp\/v2\/posts\/330\/revisions\/333"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/insidemsix\/wp-json\/wp\/v2\/media\/101"}],"wp:attachment":[{"href":"https:\/\/devblogs.microsoft.com\/insidemsix\/wp-json\/wp\/v2\/media?parent=330"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/insidemsix\/wp-json\/wp\/v2\/categories?post=330"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/insidemsix\/wp-json\/wp\/v2\/tags?post=330"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}