How do appX, appXUpload, MSIX/MSIXBundle, and appInstaller packages differ?
I'm aware that, at the least:
.appX has been superseded by .MSIX.
.appX is more restricted than .MSIX is.
.MSIXBundle contains multiple .MSIX packages (a little like AOSP's .APK versus .AAB formats, respectively).
.appXUpload is not installable.
Consequently, I want to know:
If you've never encountered one, you can see, in github.com/microsoft/winget-pkgs/issues/166364, an example of one.
(Lack of) Duplicates
I'm not the first to have asked this:
What's the difference between .MSIXBundle and .AppInstaller?
However, the response(s) I've seen are generally unhelpful:
I have no idea about the .AppInstaller format, though…
Additionally, it doesn't appear to have been asked on SE before now, for superuser.com/search?q=appinstaller+vs+msix returns 0 results.
Top Answer/Comment:
Paraphrased, github.com/microsoft/winget-pkgs/issues/166364#issuecomment-2273966067 explains:
.AppX and .MSIX are basically the same. You can change the extension from one to the other and things will generally work. The difference is that .AppX is older. Older versions of the OS don't know MSIX (I think those are already out of support), and there are probably features that are only supported in MSIX and not APPX, but the package format is the same.
A bundle (either MSIX or AppX) contains a collection of individual packages. Those can be variations of the same package, just for different architectures. Or they can be resource packages with the strings/assets for different locales.
An .AppInstaller file is an XML file that helps the OS manage auto-updates and dependencies for an MSIX package/bundle. It lists a URI for a main package and its dependencies, so that the OS can install the dependencies before the main package. It also lists a URI where a new version of the .AppInstaller file can be found, and the OS can use that to check for updates.
However, In the context of WinGet:
Without changes to WinGet, you can already add a package for which you have an .AppInstaller by just opening it in a text editor and extracting the package URI to use in WinGet.
*.AppInstaller of this package is currently not supported by winget.exe, since it can't be installed unattendedly
It isn't true that it cannot be installed unattended (but it's true that WinGet doesn't support it). You can do the undermentioned in PowerShell:
Add-AppPackage -AppInstallerFile "$Path"
Alternatively, use the API "PackageManager.AddPackageByUriAsync()".
I've mentioned this because now that WinGet is the default package manager for Windows ≥ V11, the WinGet team shall have a say (as they already have in a few issues) about how the format shall progress.
상단 광고의 [X] 버튼을 누르면 내용이 보입니다