Have any of you considered using CrossOver for this? Innosetup runs quite well in that environment.
Yes there are others having considered or using that.
As there are others just building the Windows Executable on a Windows machine and do these additional build steps there.
This is the “Extras” category of the Forum talking about this project: GitHub: jo-tools/ats-codesign-innosetup
It offers another approach (using Docker), and covers both CodeSigning (with the “new” Azure Trusted Signing, as well as .pfx
certs) and (codesigned) Windows Installer creation using InnoSetup in a “build on” platform-independent way - with minimal setup and configuration.
And especially for “first timers” doing a Windows Installer, the included “universal InnoSetup script” (driven by Parameters from the Post Build Script) is interesting - it’s a “drop in” that should work without modification for most basic Xojo projects (even covering differences of the 3 windows build targets that Xojo supports).
Greg Yes I started down that path, and CrossOver seemed like a great product. I had already gathered the recommended integration scripts. But it’s a paid for tool that’s only part of the required solution. It still needed to be integrated with InnoSetup, and also with a Xojo build script.
Then I discovered Jurg’s Docker based solution which handles all of that plus he’s reintegrated everything one needs. He uses the old shareware model. It’s free, and he accepts tips/donations. So I could try it out risk free and very quickly, due to the preconfigured docker container to meet my very close deadline.
It worked so well that I did send Jurg the same donation as CrossOver required for just their part of the alternative solution.
I run Inno on Parallels, under control of a Xojo deployment utility I wrote. It checks that all the versioning stuff is correct, builds my Xojo app, creates the installer, sets up all my auto-update stuff, and uploads everything to a server, all with a couple of clicks. Have never tried Code Signing, though.
I forgot that parallels is scriptable!
I don’t script Parallels, I just do everything with Windows shells. One annoyance is that Inno doesn’t like its source being on a network volume, so I have to copy everything over to Windows first.
I’ve just released v.1.3.0 of GitHub: jo-tools/ats-codesign-innosetup – an open-source project that makes Windows Code Signing and Installer Creation (with InnoSetup) easier than ever.
New in v.1.3.0:
- InnoSetup MinVersion is now a constant and set by the Post Build Script via Parameter.
It sets the Minimum System Requirements for the built Windows application- Xojo 2024r4.2: Windows 8.1 with Update 1
- Xojo 2025r1.1: Windows 10 Version 1903
- The Post Build Script InnoSetup can also be used without CodeSigning.
If that’s intended, one can now change the value ofbCODESIGN_ENABLED
toFalse
which will omit Information Messages about CodeSigning not being available. - Docker Image updated with InnoSetup 6.4.3
- Show an Information if Docker Image is not available locally (and couldn’t be retrieved automatically), explaining how to pull it manually.
Take a look at the project on GitHub: GitHub: jo-tools/ats-codesign-innosetup.
The ReadMe has all the details to get started.
And btw:
All the included Post Build Scripts can be used individually.
So you could just use the CreateZIP
and InnoSetup
steps, but without CodeSign
- in case you just want to create a ZIP and a Windows Installer for your Xojo Desktop Project, but aren’t codesigning your Windows executables (yet).
On macOS, as an alternative to Docker desktop, I’m wondering if Apple’s brand new container framework will be able to be used with this process.
It works fine for me. For years now, I’ve been using InnoSetup running on a Windows VM where everything (Inno scripts, the xojo app, assets, code-signing certificate etc.) are located on a my Mac, and shared to the windows VM using the folder sharing feature.
I’m using VMWare Fusion, but I’m pretty sure it works in Parallels too.
Looking back at my code, it seems the issue was not with Inno but with Parallels. My comment says
// Parallels prlctl doesn't work when invoking InnoSetup if script file is on a network drive