Search code examples
wixwindows-installernant

Fastest route to creating MSI with nant


I have a current build process which does a .NET build using MSBuild and then I end up with all my project DLLs/EXEs and 3rd party DLLs in the same directory with some resources in a sub-directory.

I would like to package this bundle up into an MSI. I have looked around and found WiX and it has nant tasks available. However it appears I need to maintain a .wxs file with references to the full list of DLLs. I would really like to avoid having to manual maintain this file or any other file.

I actually have many projects that use a shared build script so every project builds in a consistent fashion. I would therefore like the MSI step to be automated as well otherwise every project has to maintain the .wxs file with the current DLL list + any resource files.

Is it possible to use WiX or another any tool where I can just point it at a directory and get it to package every file/sub-directory without needing a config file?


Solution

  • Refer to the documentation for Heat (part of Wix) and use that in your build process.

    As an example, something like this should work:

    heat.exe dir C:\Build\Release -srd -ag -suid -cg AutoHarvestCG -out c:\Build\Setup\AutoHarvest.wxs
    

    Then AutoHarvest.wxs will be automatically generated and contain all files from C:\Source\Release under a ComponentGroup called AutoHarvestCG which you can include with a ComponentGroupRef element in any Feature element.

    You'll still have to maintain a .wxs file with your Product, Package, and Feature information, along with any custom actions you might have.