stevedlawrence opened a new pull request, #1456:
URL: https://github.com/apache/daffodil/pull/1456
We currently use sbt-native-packager to build the CLI Windows installer,
which does so by generating wsx files and running Wix to compile them to an
msi. But this has a number of complications:
- Wix does not currently create reproducible MSI files
- We currently maintain custom wsx files in addition to having to manually
transform the wsx files that the plugin generates
- The wsx files only work with Wix3--we can't easily upgrade to new versions
of Wix that might fix bugs or add new features (like reproducibility)
- Even if we could convert the wsx files to a newer version, Wix v6 switches
to a license that is likely not ASF compatible so we are essentially stuck with
older versions of Wix
- In order to build Wix on Linux, we sort of hack things by replacing the
Wix light.exe and candle.exe files with scripts that runs them in wine,
complicating Wix setup
An alternative to Wix is using wixl, a Gnome developed tool to build MSI
files on Linux. This solves some of the above problems, but wixl still fairly
immature and has the same reproducibility issues.
However, switching to Inno Setup to build the Windows installer solves many
of these problems:
- It has an ASF compatible license
- It creates reproducible builds
- It is easy to run under wine without custom scripts
- The configuration file is significantly more simple and supports things
like paramaterization. The only real complication is we now need to manually
modify the Path since Inno Setup has no native support for this
Note that this no longer uses MSI's, so we lose some of the native install
capabilities that MSI's provide, but users are unlikely to notice the
differences.
One drawback is that Inno Setup isn't supported by sbt-native-packager. But
executing the InnoSetup CLI compiler with the necessary arguments is fairly
straightforward. A new "packageWindowsBin" SBT task is created in just a
handful of lines that executes the compiler, including support for running
under Wine for non-Windows operation systems.
With this change, instead of the old command to build windows installer:
sbt daffodil-cli/Windows/packageBin
we now run this:
sbt daffodil-cli/packageWindowsBin
The only setup for this to work is Inno Setup must be manually downloaded
and installed, but this is pretty straightforward and works well in wine. The
setup is also only needed when building windows installers--if you don't care
about that and never run the above command then you don't need to install Inno
Setup or wine.
This also updates the release candidate container to install Inno Setup and
build the new exe file. When we switch to the new tag-based release process,
these changes will need to be copied to that infrastructure.
Compatibility/Deprecation:
The windows installer has switched from an MSI to an EXE. Installing the new
version will not uninstall the previous version. Previously installed Daffodil
MSIs should be uninstalled prior to installing new EXEs.
DAFFODIL-2980
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: [email protected]
For queries about this service, please contact Infrastructure at:
[email protected]