Feature: Add MSI packaging support. #51
Open
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
For a while now I've been working on SimpleMSI, a tool for creating MSIs simply from the command line based on WiX.
Since I'm also a fan of PupNet and MSI support was a thing I've been missing in it I've gone ahead and added support for building MSIs (funnily enough during the process I found some bugs in SimpleMSI as well and fixed them).
The MsiBuilder is based on SimpleMSI and therefore requires it (at least version 1.1.4) and WiX (theoretically >4 but only tested with 6) to work. There are some MSI specific options introduced, most of which are for the code signing process (which is different in SimpleMSI compared to Inno), duplicates from the SetupBuilder or a few (2) MSI specific options.
It should be noted that, by nature, MSI is more limited than custom setups by default (unless using custom actions which SimpleMSI deliberately does not do) so some features like custom uninstall scripts or the command prompt are difficult or impossible (in the current state) to implement. However since both MSI and Setups are in their core very similar, as mentioned above the MSI builder duplicates some code roughly and also tries to behave as closely to the setup one as possible.
This could also be a starting ground for #17 since Microsoft provides official tools for converting MSIs to MSIX.
So far I've tested both AvantGarde as well as PupNet as a base for feature completeness and they both package and install just fine.
Of course I'm happy to answer any questions regarding the MSI support and look into issues that might come up.
Edit: I'm pretty sure this is implied but please point out if I've made any mistakes that impact the functionality of other parts of PupNet.