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:
Content files
The term content is sometimes used in MSIX-related APIs and documentation, but it does not provide as clean a classifica...
Every MSIX package is one of four package types:
MSIX also supports Bundle packages. Bundles are somewhat different from those four package types: a Bundle is a container for one or more MSIX packages. Windows APIs nevertheless expose Bundle alongside the other package types when identifying packages.
Each package type has its own behavior...
An MSIX package can be staged in several ways and locations:
By far the most common is PackageVolume. We'll dig into the rest in future posts, but for now let's focus on MSIX PackageVolume.
In the beginning...
When MSIX first appeared in Windows 81 packages would be staged to a unique directory under . More specifically, packages were pl...
How does MSIX service a package while it's in use?
Simple: It doesn't.
A core principle of MSIX servicing is:
Do not service a package while it's in use.
Deployment provides several ways to deal with that constraint. Options range from terminating applications to deferring servicing until the package is no longer in use.
How hard can it be?
'...
As previously discussed, we can divide processes into the two broad categories of packaged vs unpackaged, based on if the process HAS or LACKS package identity.
Packaged processes can be divided into three broad categories:
All three have package identity, but they make different tradeoffs between compatibility and modern packaged behavior....
What's a PFN?
MSIX introduced Package identity in Windows 8. While the familiar package identity "5-tuple" was functional, it wasn't especially convenient to pass through APIs or embed in resources such as files, registry keys, URLs, or XML documents.
To address this, Windows defined an opaque string representation known as a Package Moniker. Win...
MSIX uses a Garbage Collection (GC) design for staged package lifetime and destaging.
Throughout this article:
Package Core Principles
A staged package can't be destaged while any references to it exist. This is a direct consequence of MSIX's core architectural principles:
Consequently, removing a package's payload from disk is not ...
Just as There is no Install – it’s ‘Stage’ and ‘Register’ explained that Install is not truly an installation operation in MSIX, Remove is similarly not an uninstall operation.
This can be surprising - sometimes even alarming - to developers coming from traditional installer technologies such as MSI, where uninstalling software typically implies:
...
A recent conversation started (as many interesting conversations do) with a simple question:
"Why is MSIX secure?"
MSIX includes multiple layers of protection designed to defend against both accidental damage and malicious tampering. But as with all good security solutions, it's not the individual elements so much as their interlocking design tha...
Package identity exists for one primary purpose:
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 deve...