B4J Question [SOLVED] B4J x64 Apps Not Installing on Snapdragon (ARM) Windows Devices

Ralph Parkhurst

Member
Licensed User
Longtime User
I use B4J to build x64 desktop applications for Windows 11, using an Intel-based dev machine. I package these apps as standalone applications using B4X and then create an installer using Inno Setup. This approach has worked reliably for many years for customers using both Intel and AMD systems.

However, with the increasing use of Snapdragon (ARM-based) CPUs in laptop computers (something like 10% of Windows laptops I am told), I am now receiving more and more reports from customers that my software cannot be installed on these devices. I have since purchased a Snapdragon-powered laptop (Microsoft Surface Laptop with Snapdragon X 12-core CPU) to test this myself and can confirm the issue; the installer fails with an error message saying that x64 apps cannot be installed.
Screenshot 2026-03-28 151445.png

Is there a recommended way to support customers with ARM-based Windows systems with B4J?

For reference, my current setup is:
  • B4J 10.5
  • JDK 19.0.2
  • Inno Setup Compiler 6.0.2
Any guidance or suggested approaches would be appreciated.
 
Last edited:

Ralph Parkhurst

Member
Licensed User
Longtime User
Thanks for your input DonManfred. I am also leaning towards the idea of configuring InnoSetup to use ARM - the later versions support it I see. Then compile it on the Arm64 machine with an Arm64 JDK runtime.

If I am successful I will report my results back here.
 
Upvote 0

Ralph Parkhurst

Member
Licensed User
Longtime User
I am pleased to report that this has now been resolved. The solution turned out to be much simpler than expected. DonManfred’s suggestion that “Inno Setup should work” was exactly right.

If anyone else encounters the same issue, here is what worked for me:
  1. Update to the latest version of Inno Setup (v6.7.1 at the time of writing).
  2. Use the Build Standalone Package function within B4J as usual. I did this on my x64 dev machine.
  3. In Inno Setup, modify the following default line:
    ArchitecturesAllowed=x64
    to:
    ArchitecturesAllowed=x64 arm64

  4. Also modify:
    ArchitecturesInstallIn64BitMode=x64
    to:
    ArchitecturesInstallIn64BitMode=x64 arm64
  5. Run Inno Setep as usual on my x64 dev machine. I did not need to change my JDK.
That’s all that was required. My applications now install and run correctly on both x64 and ARM64 (Snapdragon) systems.
 
Last edited:
Upvote 0
Top