views:

24

answers:

1

We have a suite of software solutions developed by a third party which are branded under our company. Using their tools we create our own XML scripts, which are used by their software, to do various things which make up the application the end user interacts with.

The software consists of several directories and several hundred files (exe, dll, xml, etc). We do not have access to any of the source code. Even though we do not own the code, we have to create the installer for the application. Our business partner gives us zips of the directories which we have to package into some kind of installer which can be given to clients.

The dilemma is that for each client there are 6 or so dynamic ini files. All other files within the application are static. What is the best solution for creating an installer that will:

  • Create the necessary directories/files under Program Files
  • Install shared assemblies to the GAC
  • Require .NET 3.5/install it
  • Create Desktop and Start Menu shortcuts
  • Provide a relatively easy mechanism for updates
  • Be able to include several directories/files in the install
    • meaning include a directory that has 8 sub-directories and 50 files all being static across the app, and 2 client specific files

It is not feasible to add each directory/file to a Visual Studio Setup Project for each client. There has to be another way.

A: 

I think it would best suit your needs to create a base WXS file (WiX Source File) and then create a script or small internal tool that will automatically add in the required client specific files.

One other option would be to have the WXS pull the files from a folder on your server (or local computer) and simply place the proper files for the current client in the folder that will be used to pull from for the build. Neither one is particularly graceful or pretty, but both options will get the job done.

Adkins
The situation we are in isn't ideal, so any solution that will make installs and updates easier on us and the client is a step in the right direction. I was leaning towards your second suggestion but don't know WiX - yet. If I can tell WiX to pull files from folder X and not have to specify each file that should work. Then just put the client specific files in the folder before the build.
neshdrum
WiX comes with a tool that will create a basic install based on a folder or folder tree. It is also possible to just create on install and then change the files in the source folders to change out for each client. As long as the file names are the same (as I am assuming) then it should work perfectly.
Adkins
Yes, in doing more research on WiX I found the Heat tool. This is exactly what I need. I will probably use it to harvest my directory tree to create the WXS file. Once that is done I can swap out the client files since the names are the same and rebuild. Thanks for actually providing an answer!
neshdrum