Skip to content

Windows Built App Changes in 2015 Release 2

Xojo 2015 Release 2 has a couple changes to how your Windows apps are built.

In Xojo 2014 Release 3, we started using the ICU library on Windows to provide international support which helped us to solve Text, Date and Currency/Numberic problems when dealing with international languages and locales. A consequence of using this library is that it did increase the size of Windows builds (by about 24MB) starting with 2014r3.

With 2015 Release 2, we’ve been able to slightly decrease the size of this library so your built apps should be a bit smaller than in 2014r3 and 2015r1. And compressed app size increases remain small, at about 5-6MB.

The second change is related to external items embedded in your projects. In the past, these items were embedded into the main EXE for your app. This had a couple negative side effects. First, it obviously greatly increased the size of the EXE, which made Xojo apps looks much larger than they really were. But more importantly, it had the effect of using extra memory to load these items. Because they were in the EXE, they would get loaded into memory when your app launched. And then would get loaded a second time when these embedded items were used.

To solve this problem, all embedded project items are now copied to a Resources folder that lives alongside your EXE. These items are now only loaded once when needed, providing a sometimes substantial memory savings. You’ll want to update any tools you use to create your installers to ensure that this Resources folder is also copied to the installer.

Related to this, Windows images were always converted to BMP format before they were embedded into the EXE. This could also greatly increase the size of the EXE because BMP images are often much larger than JPG or PNG images. Now these images are left in their original format when copied to the Resources folder.

This change does make it easier for your users to see external items used by your app. If you would prefer that these not be visible, you can choose to embed these items in your own container, such as a SQLiteDatabase or a VirtualVolume, extracting them yourself when needed.