How can we have single MSI file with different configuration for each user.
So when I push it, the configuration will be according to the username.
This is for a custom utility application.
What constitutes the configuration differences between each user? Is it a single xml file with settings? Some registry values? Something else?
Setting up configuration isn't really an MSI setup task, but a post install administrator task. I would not use MSI to manage this if I could help it. It is slow and error prone work. In the past I have written executables myself which will do post-setup work based on the environment I am in. Typically such an executable will take a file installed by the MSI and process it for each individual user. You can run such an executable once using Microsoft's ActiveSetup feature. See my answer here: MSI package for reg deployment
I'm not an expert with this, but to get you in the right direction:
You will need a "transform file", which has the .mst extension. The MST file basically overwrites or sets properties in the MSI file.
You should check out this article, it explains it pretty well: http://www.frickelsoft.net/blog/?p=240.
You can use ORCA (a free tool from Microsoft) to create the MST, but there should be a few commercial software products as well. You apply the transformation file, using