views:

35

answers:

1

We are developing a Windows application using C#. We would like to change the GUI (background images and other control images and text) based on brandname.

The typical installer of the application will be having the name brandname_programname.msi. We have to take the brandname from the MSI and allocate the GUI based on that. Please note we are not passing any other objects, settings to indicate the differences other than different brandnames in the MSI. How can we achieve this result?

We don’t want a WPF solution please.

+4  A: 

Your description leads me to believe that you're sending the entire collection of brand images and text in all installations, and then by changing the name of the msi file you want to filter the gui elements.

I find this a very volatile solution, since you rely completely on your admins not renaming the msi file - what will happen for instance if an admin changes the name from "CompanyA_programname.msi" to just "programname.msi", justifying the decision with "There is no use in having our name in the file name - we only have this one."

Furthermore, many customers do not wish to share their brand elements with the competition - so including all brand images in the msi would potentially be in conflict with your customer agreement.

In my opinion, you should approach the issue from the other way - either build a separate msi file for each brand, or just build a single type of msi and force the installation environment to supply the gui elements as a folder or a zip file. Then use those elements to populate the gui regardless of company.

Granted, the folder/zip approach is still volatile and you have to handle the case when there are no such files, but there is still not that single point of failure.

Based on my previous experience, I would strongly suggest that you build a separate msi file for each brand. This way you minimize the risk of failure caused by misuse, or the risk of malignant actions.

Streamcap