DOpus doesn't install x64 version on Windows ARM in Parallels on Apple Silicon M1

Hello,
I was very happy to see DOPus running on my M1 mac with Parallels and Windows ARM. Windows ARM has x64 emulation and it works great, I have several x64 windows programs running. However the universal DOpus installer always wants to install x86. It works nicely, but I would prefer x64. Compatibility settings of the intaller do not offer any switch to change that. Could you please for example offer a switch for command line that will force x64 installation? Thank you!

I would like to add that other universal installers all automatically chose x64, it was only DOpus that didn't.

I don't think there's a simple way we can do that. Inno Setup seems to need to be told what architectures to install the 64 bit files on in advance. We could tell it to do so on arm64 but as far as we know x64 support on ARM is still in beta so this would mean it wouldn't work for anyone who wasn't using the Insider build. Once x64 support is out of beta we'll be able to change it so the x64 files are installed automatically.

Hello, just for your information, DOpus x64 (!) seems to run with no issues on my MacBook M1. I tend to be very careful and since I'm not 100% sure if it installed absolutely perfectly, I'm deleting the (cloned) VM and will continue to use the 32 bit version.

In the 12.24.3 beta we've changed the installer to install the 64 bit version on ARM systems as an experiment. Please let us know if it works OK as we have no way to test this ourselves.

Has anyone tried out this change in the recent betas?

We've had zero feedback, and can't test it ourselves, so we're considering undoing the change before the next stable release.

If you want the change, please try it out ASAP and let us know if it works or not.

I will do testing within one hour!

I did not receive the notification about Jon's post. I double-checked my e-mail backups, I got no notification.

I have the suspicion that perhaps one does not get notification if the browser tab with this conversation is open and auto-loads after a browser start without the user actually reading the new posting, but the forum software thinking one did due to the reload. But that is just speculation, it would have to be tested. If my speculation is the case, I wonder if it is possible to trigger "is-read" information by the user scrolling to the latest post. - It is relatively unlikely that the post notification got eaten by anti-spam, I use a very low false positive anti spam spam software that I can only recommend (server side, (Cyren / Eleven Expurgate))

I backuped my configuration, uninstalled Directory Opus, restarted, installed the beta, installed my certificate, restored my configuration (using the "ALL configuration data" option).

RESULT: Directory Opus shows as 32 bit in Taskmanager and in the ABOUT windows it says x86. Everything else worked.

Thus x64 is NOT installed with the new installer. Please refer to a private message about the installer I am going to send to Jon and Leo now.

For your information, I installed via Directory Opus 12.24.5 (Beta) via https://www.gpsoft.com.au/DScripts/download.asp?id=50
it must thus have been 12 24 5 beta, I did not explicitly check the exe but I it must thus have been the 12 24 5 beta.

Many thanks, and for the extra info via PM.

Looks like it's more complex on the installer side than we thought. We'll need to investigate in more detail when we have time.

Win 11 Final with official x64 on ARM support has been around for quite some time now, did you get any explanation from InnoSetup why they continue to ignore this? I used to post about the issue in their google forums back then and got a promise they would look into it, but there seems to be no new info so far. I could ask again but first I wanted to ask abou the official state for DOpus. As far as I can remember the only reason for them installing x86 on ARM systems that support x64 is that detecting x64 cannot be done as elegantly as it could theoretically be as a result of Microsoft not providing some easy to read code about the window installations emulation capabilities. I also pointed that out to Microsoft but it seems they did not react. In any case, ALL other installers that I have been using so far, and they were many, all allow x64 installation.

It's not a pressing issue as x86 seems to work just as well for my demands, but in the long run I guess things cannot stay like this as ARM-based Windows Laptops are going to show up more and more, as I have read just recently, because of some Qualcomm deal expiring etc. ARM is incredible, I recommend to anybody using Parallels on a 16GB MacBook Air because of the great touchpad and fanless design, if you do office work and browsing primarily.

Hello, I am going to quote Jordan Russell from the InnoSetup Google forums as this might be of interest to DOpus developers.

( My personal opinion is that the release and spread of Windows 11 (which always supports x64 emulation on Arm64) and the expected releases of more ARM-based notebooks in the future suggests that making x64 installation the default would be the better choice. ARM64 Windows 10 laptops that do not support x64 emulation are a) rare and b) support upgrading to Windows 11. )

Profilbild von Jordan Russell
Jordan Russell
ungelesen,
04.10.2021, 23:45:40
an innosetup
I don't think Setup's ability to detect ARM64 is broken; the log you posted previously shows "Processor architecture: ARM64". To be sure, though, maybe you should test again on the latest Windows build.

ArchitecturesAllowed has no impact on what gets installed. It merely causes Setup to show an error message when run on an architecture that is not listed. In a dual-arch x86+x64 installer, ArchitecturesAllowed should be left unset.

If their installer is using "ArchitecturesInstall64BitMode=x64" together with "Check: Is64BitInstallMode" conditions on the x64 files, then that would explain why you aren't getting the x64 files: "x64" only matches true x64 Windows.

If they were to switch to "ArchitecturesInstall64BitMode=x64 arm64", then you should get the x64 files. Unfortunately, however, the x64 files would also be installed on older ARM64 builds that don't support x64 emulation, resulting in a non-functioning app.

At this time, the best workaround I can suggest is that they split their installer into separate 32-bit and 64-bit versions. The 32-bit version would leave ArchitecturesInstall64BitMode unset and always install the x86 files, while the 64-bit version would set it to "x64 arm64" and always install the x64 files. Users of older ARM64 Windows would download the 32-bit version.

I do still plan, though, to add official support for detecting x64 emulation in the near future. A new architecture identifier "x64compatible" will match both x64 Windows and ARM64 Windows with x64 emulation support, and an IsX64Compatible function will also be added. To encourage adoption of "x64compatible" so that more x64 apps can be installed on ARM64, the existing "x64" will be deprecated and renamed to "x64strict", and later on the compiler will print a warning when "x64" is used.

You can get the 64-bit version to install on the current release of Windows 11 by renaming DOpusInstall.exe to pdf24-creator-install.exe.

Wait, what?

This works because Windows itself applies compatibility fixes to a couple of 3rd-party installers and pretends to them that the system as x64 rather than Arm64. The rename just makes it match the pattern pdf24-creator-*.exe in its compatibility database, applying the compatibility fix.

Still, I'd also appreciate it if you enabled this on the regular installer; x64 emulation has been generally available for almost two years now.

As far as building for Arm architecture is concerned, Arm64EC would work well here. On the developer side you have the benefit of compiling to high-performance native machine code, but you can even link x64 libs into the build, if needed, and have just these parts of the application run under emulation.
On the end-user side, an Arm64EC application loads regular x64 DLLs into its process without requiring any special handling and runs them under emulation, so you're not depending on 3rd-party DLLs to be available natively; great for interop with x64 shell extensions.

Indeed, building for non-EC Arm64 would require all-native static and dynamic libraries, and that really seems like it would be wasted effort.

1 Like

Well, WOW, thank you for this!!!

But what will happen when DOpus updates?

(It's also interesting that no Google results show up for that trick - what luck that you've posted this!)


Off-Topic

I've been having trouble with Macrium Reflect also because they prevent install on arm64 now even though it did work. (Caution: trying this might cause significant damage.)