0

We are developing a software tool that is sold to other software companies to be redistributed. We deploy our software with WiX. We get some requests from our clients that they would like to use their own style for the msi (mainly their icons, images and titles). We do not want to let the customers do the packaging themselves since this is too sophisticated. Is it possible to create a msi package with WiX, where some resources as images and strings can be loaded dynamically from external resource later on.

I found Wix: Dynamically Add Features which gives a solution for dynamically add functionality, but not to change existing parts.

Community
  • 1
  • 1
StefanG
  • 1,234
  • 2
  • 22
  • 46
  • 1
    If it is only about some binaries in the `Binary`-table: how about a simple VBS-script replacing the entries in the `Binary`-table? Or do you explicitely want that such ressources are loaded during installation time dynamically? – taffit Apr 14 '14 at 10:10
  • @taffit Modify the binary table would be fine, it does not have to be dynamically. Am I correct that I would have to do the following: 1. Write a CustomAction to access and show the configurable elements. Add default values to the binary table. 2. Write a simple tool, the customer could start (with his values as parameters) that connects to the binary table and insert the configurable values into the binary table. 3. The custom would execute from now on the modified msi and his values are shown. – StefanG Apr 14 '14 at 10:33
  • I don't know your exact use case, but I would: 1. create the normal MSI with all the binaries and bitmaps 2. After building the MSI, invoke the VBS-script replacing the binaries and bitmaps with the ones of your customer 3. Send the modified MSI to the customer. If the changes are rather static you could also create a transform file with the modifications and then merge these into your base MSI file using e.g. the `WiMerge.vbs` from the Windows SDK located in `v7.1\Samples\sysmgmt\msi\scripts`. This would even be more simple and can easily be integrated into your build process. – taffit Apr 14 '14 at 11:21
  • @taffit Please change your last comment to an answer, for I can accept it. – StefanG Apr 14 '14 at 13:05

1 Answers1

1

Ok, so here my comment as answer (I hope it was helpful ;-)).

As I don't know the exact use case, I would:

  1. Create the base MSI containing all binaries, bitmaps and icons (in the Binary-table)
  2. After building the MSI, invoke the VBS-script rerplacing the binaries and bitmaps with the ones of your customer.
  3. Send the modified MSI to the customer.

If the changes are rather static you could also create a transform file (.MST) containing all the modifications for your customer. You can then merge this transform into your base MSI file using e.g. WiMerge.vbs from the Windows SDK located in v7.1\Samples\sysmgmt\msi\scripts. This would even simpler and can easily be integrated into your build process.

taffit
  • 1,979
  • 22
  • 23
  • It works fine when you use the solution in combination with http://stackoverflow.com/a/13978455/2707156 – StefanG Apr 16 '14 at 13:37