MSIX MRT Resource installation

Copper Contributor

Hi, 

MSIX uses MRT (Modern Resource Technology) to split up the application bundle into more device specific msix packages, all inside one msixbundle, if I understand it correctly. 

 

Can someone explain how this works? So this morning I set my dpi scaling from 150% to 125%, after that I notice that the Microsoft Store had 40+ updates for apps. Is MRT what is happening? Is the system loading new packages for the less dpi case?

 

So it seemed like even though the store is set to "Update apps automatically" it only installed after I had checked manually (and incidentally had switched my DPIs back to 150%).

 

Is this system in place for MSIX sideloading? My understanding is/was that AppInstaller will do ranged-HTTP requests to only download and install packages from the bundle that are actually needed? Will AppInstaller update this selection dynamically, in case of dpi change, or language switch? Can the user or developer influence this system? (i.e. can I always install both German and English for my app when sideloaded?)

 

Really interested in this since I found: https://docs.microsoft.com/en-us/windows/uwp/app-resources/using-mrt-for-converted-desktop-apps-and-...

Seems like such a good idea that I am pretty surprised that so little information is out there. 

 

The goal for me is definitely to put more of our WPF assets in these MRT resource packages. But if I understand it correctly I will have to wait until MRT-Core in Reunion is ready to really get this done.

 

Thanks for any pointers already 

 

Kind regards, 

 

Marvin

 

1 Reply

Hi @marvin_r, MRT is an underlying technology that allows app developers to more easily localize their content and split out resources upon the supported dimensions (language, scale aka dpi, directx level). There’s more to it in the APIs the app can call to resolve various strings and/or assets into the appropriate one for the user’s chosen language/scale/dxfl. All the resource packages are grouped together in the .appxbundle, but when we go to download the .appxbundle, we can determine which of the resource packages we need to download based on the user settings. 

 

User influences the settings by changing the applicability context (i.e. select language, or change DPI)

Developer cannot influence the settings using appinstaller file (we don’t have that support to say always make x language applicable), but the app itself when grouping the resource packages has the ability to say main package has x+y language resources instead of splitting those resources into resource packs. 

 

I recommend looking at 

https://docs.microsoft.com/en-us/windows/uwp/app-resources/build-resources-into-app-package to see how to re-arrange some resources into the app package.