Patching an Inno Setup installer to run on Windows for ARM

0.00 avg. rating (0% score) - 0 votes

After getting the Windows 7 Games package from Win7Games.com working well on ordinary x86 and x64 Windows 11 machines, I decided to try the same installer inside Windows 11 ARM running under VMware on a MacBook.

The package includes the usual restored Windows 7 games: Solitaire, Spider Solitaire, Minesweeper, FreeCell, Hearts, Chess Titans, Mahjong Titans, Purble Place, Internet Spades, Internet Checkers, and Internet Backgammon. Win7Games.com also provides similar classic installers for WordPad, Paint, Notepad, and other old Windows utilities. Interestingly, those other installers appear to run fine. Only the games installer refused to continue, complaining that it only supported x86 and x64 Windows.

Screenshot 2026-06-24 155408

Since the installer was built with Inno Setup, the first step was to ask innounp what was inside:

.\innounp.exe -v .\win7game.exe

This listed the payload files, including the game EXEs, DLLs, icons, and MUI language files. I then extracted the reconstructed Inno Setup script:

.\innounp.exe -x -p .\win7game.exe install_script.iss

The problem was immediately visible:

ArchitecturesAllowed=x86 x64
ArchitecturesInstallIn64BitMode=x64

So the failure was not necessarily that the games could not run on Windows ARM. The installer had simply been told to stop before trying.

I wrote a PowerShell script to extract install_script.iss, remove the architecture directives, clean up some decompiler artifacts, and feed the result back into ISCC.exe:

& $Innounp -x -p $SetupExe "install_script.iss"

$text = [regex]::Replace($text,
  "(?im)^\s*ArchitecturesAllowed\s*=.*(?:\r?\n)?", "")

$text = [regex]::Replace($text,
  "(?im)^\s*ArchitecturesInstallIn64BitMode\s*=.*(?:\r?\n)?", "")

Here came the setback. At one point Bitdefender blocked the .ps1 script, apparently deciding that a PowerShell script which extracts and modifies an installer looked virus-like enough to stop. Annoying, but understandable.

A full extraction then hit this error:

A file is encrypted but no password has been specified

This might mean the original payload was encrypted, or it might simply be an artifact of using an unpacker against a newer or slightly different Inno Setup version. Either way, it stopped a clean rebuild.

Even after patching the script, the compiler later failed on a missing decompiled language stub:

Couldn't open include file "...extracted\embedded\english.isl"

Screenshot 2026-06-24 172953

That was fixed by replacing the language section with Inno Setup’s built-in English language file:

[Languages]
Name: "english"; MessagesFile: "compiler:Default.isl"

The next failure involved old MinVersion values. Each fix moved the process further, but the lesson became clear: the extracted .iss file was useful for understanding the installer, not necessarily for rebuilding it perfectly. No versions of innounp.exe I tried were able to extract any of the actual program files, apparently because the setup.exe I used had had its payload encrypted.

In the end, I decided to just install once on x86/x64 Windows, copy the installed game folder, and build a fresh ARM-friendly installer from that folder instead of trying to reconstruct the original package.

The PowerShell script I used can be downloaded here.

0.00 avg. rating (0% score) - 0 votes
ToughDev

ToughDev

A tough developer who likes to work on just about anything, from software development to electronics, and share his knowledge with the rest of the world.

Leave a Reply

Your email address will not be published. Required fields are marked *

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>