{"id":366,"date":"2026-10-20T09:00:30","date_gmt":"2026-10-20T16:00:30","guid":{"rendered":"https:\/\/devblogs.microsoft.com\/insidemsix\/?p=366"},"modified":"2026-10-19T14:30:56","modified_gmt":"2026-10-19T21:30:56","slug":"activatable-extension-points","status":"publish","type":"post","link":"https:\/\/devblogs.microsoft.com\/insidemsix\/activatable-extension-points\/","title":{"rendered":"Activatable Extension Points"},"content":{"rendered":"<p>We often talk about <strong>&#8220;running an application&#8221;<\/strong>, <strong>&#8220;launching an app&#8221;<\/strong>, or <strong>&#8220;starting an app&#8221;<\/strong>. This conjures up visions of <code>CreateProcess()<\/code> spinning up a new process, giving the application life.<\/p>\n<p>For packaged applications, Windows has a specific term for bringing an application to life: activation.<\/p>\n<p>Bringing a <a href=\"https:\/\/devblogs.microsoft.com\/insidemsix\/is-this-a-packaged-process\/\">packaged process<\/a> to life involves more than ordinary <a href=\"https:\/\/devblogs.microsoft.com\/insidemsix\/is-this-a-packaged-process\/\">unpackaged process<\/a> creation. Windows calls this machine &#8220;activation&#8221;.<\/p>\n<p>Activation does more than simply create a process. Among other things, it creates the new process with the appropriate <a href=\"https:\/\/devblogs.microsoft.com\/insidemsix\/package-identity\/\">package identity<\/a>. Activation also verifies the package is in an <a href=\"https:\/\/devblogs.microsoft.com\/insidemsix\/package-status\/\">appropriate state<\/a> before starting the process and can initiate repair (also known as remediation) when it isn&#8217;t.<\/p>\n<h1>Activatable Extension Points<\/h1>\n<p>There&#8217;s more that can be activated than applications. An activatable extension point defines something Windows can activate. <a href=\"https:\/\/learn.microsoft.com\/uwp\/schemas\/appxpackage\/uapmanifestschema\/element-f-application\">&lt;Application&gt;<\/a> declarations and certain <a href=\"https:\/\/learn.microsoft.com\/uwp\/schemas\/appxpackage\/uapmanifestschema\/element-f-package-extension\">&lt;Extension&gt;<\/a> declarations represent activatable extension points. These declarations can cause Windows to activate a packaged process.<sup>1<\/sup><\/p>\n<p>Activation is the mechanism Windows uses to start a packaged process through an activatable extension point. This includes obvious scenarios such as launching a packaged application from the Start menu or double-clicking a file in File Explorer whose file type is associated with a packaged application<sup>2<\/sup>. It also includes less obvious scenarios, such as instantiating a COM or WinRT out-of-process (OOP) object hosted by a packaged process<sup>3<\/sup>.<\/p>\n<hr \/>\n<p><sup>1<\/sup> Manifested <code>Extension<\/code> elements can appear in many namespaces. For example, <a href=\"https:\/\/learn.microsoft.com\/uwp\/schemas\/appxpackage\/uapmanifestschema\/element-uap17-extension\">&lt;uap17:extension Category=&#8221;windows.packageExtension&#8221;&gt;<\/a>, <a href=\"https:\/\/learn.microsoft.com\/uwp\/schemas\/appxpackage\/uapmanifestschema\/element-com4-extension\">&lt;com4:extension Category=&#8221;windows.comServer&#8221;&gt;<\/a> and <a href=\"https:\/\/learn.microsoft.com\/uwp\/schemas\/appxpackage\/uapmanifestschema\/element-desktop9-extension\">&lt;desktop9:extension Category=&#8221;windows.fileExplorerClassicContextMenuHandler&#8221;&gt;<\/a> are all examples of <code>&lt;Extension&gt;<\/code> declarations.<\/p>\n<p><sup>2<\/sup> Examples include <a href=\"https:\/\/learn.microsoft.com\/uwp\/schemas\/appxpackage\/uapmanifestschema\/element-uap-extension\">&lt;uap:extension Category=&#8221;windows.fileTypeAssociation&#8221;&gt;<\/a>.<\/p>\n<p><sup>3<\/sup> Examples include <a href=\"https:\/\/learn.microsoft.com\/uwp\/schemas\/appxpackage\/uapmanifestschema\/element-com4-extension\">&lt;com4:extension Category=&#8221;windows.comServer&#8221;&gt;<\/a> or <a href=\"https:\/\/learn.microsoft.com\/uwp\/schemas\/appxpackage\/uapmanifestschema\/element-uap5-extension\">&lt;uap5:extension Category=&#8221;windows.hostRuntime&#8221;&gt;<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>We often talk about &#8220;running an application&#8221;, &#8220;launching an app&#8221;, or &#8220;starting an app&#8221;. This conjures up visions of CreateProcess() spinning up a new process, giving the application life. For packaged applications, Windows has a specific term for bringing an application to life: activation. Bringing a packaged process to life involves more than ordinary unpackaged [&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":[28,8,9,2,34,10],"class_list":["post-366","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-msix","tag-activation","tag-architecture","tag-code","tag-msix","tag-runtime","tag-terminology"],"acf":[],"blog_post_summary":"<p>We often talk about &#8220;running an application&#8221;, &#8220;launching an app&#8221;, or &#8220;starting an app&#8221;. This conjures up visions of CreateProcess() spinning up a new process, giving the application life. For packaged applications, Windows has a specific term for bringing an application to life: activation. Bringing a packaged process to life involves more than ordinary unpackaged [&hellip;]<\/p>\n","_links":{"self":[{"href":"https:\/\/devblogs.microsoft.com\/insidemsix\/wp-json\/wp\/v2\/posts\/366","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=366"}],"version-history":[{"count":2,"href":"https:\/\/devblogs.microsoft.com\/insidemsix\/wp-json\/wp\/v2\/posts\/366\/revisions"}],"predecessor-version":[{"id":379,"href":"https:\/\/devblogs.microsoft.com\/insidemsix\/wp-json\/wp\/v2\/posts\/366\/revisions\/379"}],"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=366"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/insidemsix\/wp-json\/wp\/v2\/categories?post=366"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/insidemsix\/wp-json\/wp\/v2\/tags?post=366"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}