Every package has a set of status flags describing its current health and availability. These can be queried via the Package.Status property.
A package may report more than one status value at a time if multiple conditions apply.
Package Status Groups
The various states fall into three groups:
NeedsRemediation
Status values in th...
Applications are not packages.
Let me repeat.
Applications are not packages.
This is a common misconception due to the (too) often blurring of concepts and terminology. Packages and applications are different and distinct things, so it's important to understand what those words mean (to MSIX).
Packages and Applications Are Different Things
An ...
MSIX supports making a package available to all users; the formal term is provisioning. Provisioning a package family makes it available to all users, whereas registration makes a package available to a single user.
Per-User vs All Users
Traditional installers often provide a "per-machine" installation mode to make software available to all users...
As previously mentioned to 'install' a package, as people think of the term, Windows actually performs two separate operations: staging and registration.
To oversimplify:
One way to 'install' a package for a user is to explicitly stage it, then register the package:
But this scenario is common enough that deployment handles it more effici...
MSIX has several core principles underlying its design and implementation. Engineers half-jokingly call these The Rules of MSIX. The Third Rule of MSIX is arguably the most important and certainly the most foundational:
Package identity is unique across space and time
Packageidentity is a unique identifier corresponding to a specific set of b...
"Disk space optimizations" is one of the key features of MSIX:
Disk space optimizations. With MSIX there is no duplication of files across apps and Windows manages the shared files across apps. The apps are still independent of each other so updates will not impact other apps that share the file.
But how does MSIX accomplish this?
Every pac...
A key phase in installing a package is staging the package:
When a package is staged for the first time, deployment performs several actions, including:
Deployment secures these directories with strict permissions, typically granting users Read and potentially Execute access - but notably not Write access.
This ensures one user cannot ...
The PackageManager API submits requests to the deployment engine for processing. Each request represents an instruction for the deployment system to carry out a defined set of actions, collectively referred to as a deployment operation.
The operation associated with a request depends primarily on the API used to initiate it and, in some cases, its...
An MSIX package identity is composed of a five-part tuple that uniquely identifies a package. It consists of the following attributes:
Together, these fields form the canonical identity of a package. Programmatically, this identity can be represented using APIs such as Windows.ApplicationModel.PackageId or the PACKAGE_ID structure.
Why Pa...
Sometimes you need to know whether the current process has package identity. Certain Windows features require it, and behaviors can differ—both technically and culturally.
For example, classic Windows applications often store settings in the registry, whereas packaged applications typically use ApplicationData.LocalSettings.
So how can your code ...