Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Update installer.in.iss to support ARM64 #250

Open
wants to merge 1 commit into
base: master
Choose a base branch
from

Conversation

Gert-L
Copy link

@Gert-L Gert-L commented Nov 6, 2024

Release notes Inno Setup 6.3.0:

Support for Arm64 systems improved, and related enhancements

  • Setup now officially supports the installation of x64 apps on Arm64 Windows 11 systems, which are able to run x64 binaries via emulation. To enable your x64 app installers to run properly on Arm64 Windows 11, some minor changes may be needed in your scripts. Most importantly:

    1. In ArchitecturesAllowed and ArchitecturesInstallIn64BitMode, change any use of x64 to x64compatible.
    2. In Check parameters and [Code], change any use of IsX64 to IsX64Compatible.
    3. In [Code], if there are any ProcessorArchitecture = paX64 comparisons, replace them with calls to IsX64Compatible.

    The key difference between x64/IsX64 and the new x64compatible/IsX64Compatible is that the latter matches both x64 Windows and Arm64 Windows 11.
    In most cases, you should make the above changes, because otherwise, users on Arm64 systems may not be able to run your installers. For example, an ArchitecturesAllowed=x64 setting will only allow the installer to run on x64 Windows — not on Arm64 Windows 11. Or, if you ship x86 and x64 versions of your app in the same installer, the 32-bit x86 version may be chosen instead of the expected x64 version when running on Arm64 Windows 11.

  • The [Setup] section directives ArchitecturesAllowed and ArchitecturesInstallIn64BitMode have been enhanced:

    • Six new architecture identifiers have been introduced. Briefly:
      • arm32compatible matches systems capable of running 32-bit Arm binaries.
      • x64compatible matches systems capable of running x64 binaries.
      • x64os matches systems running x64 Windows only. (Equivalent to the existing x64 identifier, which is now deprecated.)
      • x86compatible matches systems capable of running 32-bit x86 binaries.
      • x86os matches systems running 32-bit x86 Windows only. (Equivalent to the existing x86 identifier.)
      • win64 matches systems running 64-bit Windows, regardless of architecture.
        See the new Architecture Identifiers help topic for further details on each.
    • Boolean expressions are now supported. Through use of the and operator, for example, it is possible to require two architecture identifiers to match at the same time. See the ArchitecturesAllowed help topic for usage examples.
  • The x64 architecture identifier is now deprecated. If it is used, the compiler will issue a warning and substitute x64os, which has the same effect. But as mentioned above, in most cases, scripts should be changed to use x64compatible because it matches both x64 Windows and Arm64 Windows 11.

@dechamps
Copy link
Owner

dechamps commented Nov 8, 2024

Thanks for the PR, I'll give it a spin once I have some time.

Did you actually test this on Windows ARM? I don't have any Windows ARM system at hand, and GitHub Actions still doesn't have Windows ARM runners, so I don't have any way to check that this actually fixes #206.

@Gert-L
Copy link
Author

Gert-L commented Nov 9, 2024 via email

@dechamps
Copy link
Owner

dechamps commented Nov 9, 2024

GitHub Actions automatically builds FlexASIO including the installer on every push, so you can see the outcome of your change here. (Ignore the sigstore error, that's an issue on my end)

@Gert-L
Copy link
Author

Gert-L commented Nov 11, 2024

Thanks, I've downloaded it. The guy maintaining the Mac has this week off, I'll get back to you when he returns.

@Gert-L
Copy link
Author

Gert-L commented Nov 18, 2024

Installer appears to run fine and deploys into the correct directory. I've done just a quick test and our software appears to communicate with the library.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants