On Thursday, 8 December 2016 at 11:03:07 UTC, Thomas Mader wrote:
I think you might be right about using WiX. MSI seems to be
build upon transactional installation.
Do you think it would be possible to use D instead of C++ to
write custom code?
Short answer is yes, I've created such and actually inject my
custom DLL for testing purposes.
MSI's are pretty awkward, no one knows how to create the MSI
database instead there are 3 example databases provided which you
can merge together if you desire that feature. From there the
Database consists of tables which layout the installation
sequence along with the installation sequence for the GUI. These
sequences can call "Custom Actions" which are just table entries
that point to a DLL (there is more to Custom Actions).
The signature looks something like below. I've got a little
wrapper around the MSIHANDLE so as to add some safety and
convenience.
extern(Windows):
export uint MyCustomActionName(const MsiLiveHandle hModule) {
I'm not too familiar with WIX and the exposure I've had is with
older versions (3.x) which have had annoying and weird bugs. D
certainly could be used to create the D MSI installer, but that
is even lower level than WIX.