We analysed the bandwidth savings when using an MSIX package - and it's more than 50%.
It has been almost a year since we started building MSI and MSIX packages for Advanced Installer. The first versions were purely for internal testing and evaluation of potential show stoppers (elevation requirements, virtual machine integrations, etc).
So, when we released v17.2 of Advanced Installer, we decided to publish an updated version of the Advanced Installer Express edition as an MSIX installer to the Microsoft Store. We kept the option of downloading the MSI installer to serve our users that chose not to upgrade to Windows 10.
Advanced Installer Express is a Free edition of Advanced Installer supporting packaging and repackaging to MSIX and it is available to download on Microsoft Store.
To feed into our sysadmin curiosity - we ran a test to figure out how much bandwidth and budget we could save when deploying an update. Since there were 10 MSIX releases over the last year, we leveraged the native support from MSIX for differential updates to get that data.
What are MSIX differential updates?
One of the core benefits of MSIX is the native support for auto-updates, a feature which was missing for MSI packages.
MSIX auto-updates are handled automatically by the OS, without requiring additional third-party auto-updater tools. The OS can download an update through the Microsoft Store, or you can enable auto-updates for your MSIX packages without publishing your apps in the Microsoft Store.
What’s even more valuable about this auto-update feature is that, during the update, the OS checks the differences between the old MSIX package and the new one, and knows only to download the new files.
For example, if you have a 100 MB package, but you only change a 5 MB file in the new version of the package, then only that 5 MB file will be downloaded on your machine (during the update). To read more about how this works, visit the Microsoft docs.
If you change your folder structure, MSIX will treat all the "moved files" as new ones, and they will be included in the download during the update process.
So, if your files are in “VFS\Program Files\My Application 1.0”, and you change the location of the files to “VFS\Program Files\My Application 2.0” (in v2 of your package), the OS will assume that all the files from “My Application 2.0” are new, and it will download the entire folder.
The same thing happens if you change registry entries, because the registry in MSIX is kept in the registry.dat file. If the only difference between the two packages is found in the registry, then only the registry.dat files will be downloaded.
What is the impact of using MSIX when updating you app?
If you want to find out the update impact of your MSIX file, Microsoft offers a tool called ComparePackage.exe - which you can find in the Windows 10 SDK.
To use ComparePackage.exe, all you have to do is run the following line in a CMD:
ComparePackage.exe [FirstPackage.MSIX] [SecondPackage.MSIX] -XML [PathToOutputXML] -o -v
If you run a comparison between two MSIX packages, the XML result should look like this:
As you can see, it shows a complete report including: exactly what files have been changed, what new files have been added, what files have been deleted, and what remains unchanged. It also displays the update impact.
You can use the FREE Express Edition of Advanced Installer to handle your MSIX packages.
We were intrigued to find out how much bandwidth would be saved during download between versions. And we monitored the Advanced Installer Express update packages (both MSI and MISX) for the last 10 versions. This is what we got:
As you can see from the graphs, the results are quite impressive. In the best case, you only download 37.6 MB out of 148 MB, which results in almost 75% in band usage savings. By analyzing our releases from the last year, we calculate an average of 55%of bandwidth savings.
As a small note, minor updates will always lead to smaller download sizes. If you have a look at versions 17.1.1 and 17.1.2 of Advanced Installer, the download size was reduced by almost 77% because they included a small number of changes.
At a first glance, it might not seem as much for a casual user, though it can be of great impact for an ISV that offers software for download and even more significant when handling a sizable amount of applications within enterprise’s large infrastructures.
Let’s do some quick math. Let’s suppose you have an app similar in size to Advanced Installer. For deploying its updates you can save ~ 1GB/user/year in bandwidth usage.
Now, let’s expand this to 100k active users -- which can be the case if you are a large global corporation or any top application. In this scenario, you save up to 100 TB per year in data transfers.
With an average price of $100 per TB of download (the average price provided by cloud providers), you could save around $10k per year on your cloud budget.
As an ISV, if you don’t want to publish your application to the Microsoft Store, you will probably publish it on your website, where users can download it through the MS-AppInstaller web protocol. Based on our estimates, you can practically double your number of users and still pay the same current amount to your cloud provider (for your MSI downloads).
It works the same for large enterprise infrastructures. Not only do you save on data traffic costs, but migrating to this process would play a big role in the overall network traffic inside your infrastructure. It will result in decreasing the load over your network --practically giving you more bandwidth to use for other purposes without the need of additional investment in your infrastructure.
Disclaimer: The data presented in this article is based on real estimates measured only for Advanced Installer’s MSIX package. For your own application, the bandwidth savings may vary depending on the updates frequency, percentage of changes inside your app between each update and your cloud provider pricing.