Installing My TV Player on Windows 11

There are two install channels and they exist for different reasons. One of them keeps working if the other disappears.

There are 2 ways to install the Windows app, and the second is not a fallback for people who cannot use the first. They serve different purposes.

From the Microsoft Store

The normal route. Search for My TV Player, install, done. Updates arrive the way every other Store app's updates arrive, and you never think about it again.

For most people this is the answer and the rest of this article is background.

From our own domain

The second channel exists for one reason, stated plainly in our own distribution notes: the Store can delist an app, and that must not stop new installs or updates.

So the same desktop build is also published as an MSIX package, advertised through an App Installer document served from our domain and its mirrors. Windows App Installer polls that document and services the app with no Store involvement at all.

A release publishes 4 artifacts plus a checksum list:

MyTvPlayer.appinstaller                     the feed, stable URL, carries update policy
MyTvPlayer.Desktop.Windows_<ver>_x64.msix   the app, version-stamped
Microsoft.WindowsAppRuntime.1.8_<ver>_x64.msix   framework dependency
SHA256SUMS.txt                              integrity list for the download page

Two things about that list matter.

The app package is .NET self-contained, so there is no step 0 where you install a .NET runtime first. The Windows App SDK stays framework-dependent, because it is a shared serviceable framework, which is why its package sits alongside rather than being folded in. A first install needs no Store round trip to fetch it.

And the version in the file name is design, not tidiness. The URLs are immutable and therefore cacheable, which is what makes a mirror useful. The one file that must never be cached is the feed itself, and its own version attribute has to increase on every publish or the document is treated as unchanged.

What I did not expect to be a hosting problem, until our own notes named it the classic one: serve the feed with the wrong content type and Windows either downloads it as text or rejects it with no useful error. 5 file extensions need explicit types, and the fix belongs at the origin rather than at an edge that rewrites HTML.

What is not in the package

No credentials. The build refuses to run at all if an untracked local settings override is present, and after packing it verifies that the shipped settings file still has empty key fields.

Metadata service keys are delivered after you authenticate and applied at runtime, so nothing sensitive sits in an artifact anyone can download. The check keeps it that way. It does not exist to catch a known problem.

If you are checking a downloaded package yourself: Windows will not install an unsigned MSIX at all, and the publisher declared in the package has to match the signing certificate's subject exactly. A mismatch produces an opaque signtool error rather than a helpful one, which matters if you ever repackage for an organisation.

The first launch

Startup got a lot of attention and the numbers moved: warm launch to Home came down from 11.6 seconds to about 4.6, and picking a profile to reaching Home was roughly halved, to about 1.2 seconds.

One thing deliberately did not get faster. The profile picker never skips itself, even in a household with one profile, and even though auto-advancing was on the table as the way to hit an under 3 second target. It was rejected permanently. Choosing a profile is a security boundary, and a boundary you cross automatically has stopped being one. If your household uses parental controls, that picker is the thing enforcing them.

The first launch after adding a large source is a separate matter, and it is slower than every launch after it, because the playlist is parsed and indexed locally rather than on a server. On a console the cold case has been measured at 39.5 seconds and 1.4 GB; a desktop is faster but the shape is the same.

Next

Import a playlist in the web console, or straight in the Windows app, and the app has something to show. If you have an Xbox as well, pair it now and it inherits everything: installing on Xbox.

Two things worth setting up on day 1 on a desktop specifically: the keyboard shortcuts, which are standard media player keys with one live TV rule that catches people out, and watching on a second monitor if the machine is a work machine.

What this article measured22 claims, each with the evidence behind it
ClaimEvidenceCounted
A second install channel exists specifically so that a Store delisting cannot stop new installs or updates. It serves the same desktop build as an MSIX advertised through an App Installer document on our own domain.n = 1Aug 31, 2026
The package is .NET self-contained by default, so no .NET runtime has to be installed first. The Windows App SDK stays framework-dependent and its package is published alongside.n = 1Aug 31, 2026
No credentials are baked into the installer. The build refuses to package a local settings override, and verifies after packing that the shipped settings file still has empty key fields.n = 1Aug 31, 2026
Windows will not install an unsigned MSIX, and the package's declared publisher must match the signing certificate's subject exactly.n = 1Aug 31, 2026
The packaging format reserves a fourth version field, so a release numbered 1.4.2 is packaged as 1.4.2.0, and the feed's own version attribute must increase on every publish or the update document is treated as unchanged.n = 1Sep 1, 2026
The signature has to be timestamped, or installed packages stop validating on the day the signing certificate expires rather than continuing to work.n = 1Sep 1, 2026
A publicly trusted certificate makes installation ordinary; a self-signed or private-CA one requires every user to import a certificate into a machine-level trust store with administrator rights, which is explicitly not a consumer flow.n = 1Sep 1, 2026
Serving the update document with the wrong content type is named as the classic hosting failure, producing either a text download or a rejection with no useful error. Five extensions need explicit types.n = 5Sep 1, 2026
The update document is the one artifact that must not be cached, while the version-stamped packages beside it are immutable and therefore safe to cache indefinitely.n = 1Sep 1, 2026
The hosting guidance warns that HTML-oriented edge transforms must not be applied to these files, and that the content type fix belongs at the origin rather than the edge.n = 1Sep 1, 2026
How often the installed app checks the feed is baked into the package at build time rather than being a user setting.n = 1Sep 1, 2026
Rolling back to an earlier version is possible but gated behind an explicit build switch, because normally a lower version in the feed is refused.n = 1Sep 1, 2026
A smaller package that depends on an installed runtime is buildable and explicitly marked as not for public releases.n = 1Sep 1, 2026
An ARM64 package is produced by the same script with a platform switch rather than by a separate pipeline.n = 1Sep 1, 2026
The secret-injection step used elsewhere is deliberately not part of this pipeline, because those credentials have been delivered after authentication and applied at runtime since an earlier phase.n = 1Sep 1, 2026
The application runtime framework is published next to the app so a first install needs no store round trip to obtain it.n = 1Sep 1, 2026
The Windows and console applications are two heads of one solution sharing all business logic and shared UI, compiled into each head rather than forked.n = 1Sep 1, 2026
The packaging script refuses to build at all when an untracked local settings file is present, because the project file would copy it into the payload.n = 1Sep 1, 2026
The feed can be regenerated from a previous build without recompiling, which is what makes a hosting fix cheap to reissue.n = 1Sep 1, 2026
The public address the artifacts will be served from is baked into the feed at build time and must match where they actually land.n = 1Sep 1, 2026
Warm launch to Home was brought from 11.6 seconds to about 4.6 seconds, and picking a profile to reaching Home from about 2.4 to roughly 1.2 seconds.n = 1Aug 31, 2026
The profile picker does not skip itself even when only one profile has ever been used, and the shortcut that would have made startup faster was rejected permanently.n = 1Aug 31, 2026