views:

75

answers:

3

My question is sort of linked to this existing question

http://stackoverflow.com/questions/1262836/how-to-deploy-a-desktop-net-application-with-custom-settings-per-user

However, I understand the idea of using Application Settings what I can't find information on is, how should I deploy the application settings for different customers?

We have a custom settings system that works just fine, however when the app is first run it needs to know a couple of things, such as Company Name and Application Server. These will obviously differ on a customer basis.

I don't want the user to have to input these settings at first run as in most cases the app will be deployed by Group Policy.

Currently my thinking is to have some sort of setting file in a separate build per customer. Is this the way to go, or have I missed some kind of native support for this idea of "customer profiles"?

EDIT:

More info that might help people grok my question.

This is an enterprise application that consists of a central database and application server, plus 100 installations of a client application. I need to be able to give the client application some application settings that will obviously be different for different customers.

A: 

A lot of applications ask you some initial settings at the first start (Microsoft Office, Visual Studio, etc.). So this behaviour is commonly known by the user.

Maybe the problem is more, that these initial settings revive an update of your application. To accomplish this you could save your data in a version independent path within the registry or somewhere below %AppData%.

Also it would be helpful to prefill these dialogs at the first startup, by getting these informations somewhere out of the machine (e.g. Company Name can be get from registry [HKLM\Software\Microsoft\WindowsNT\CurrentVersion\RegisteredOrganization] or as Application Server take the Gateway address, AD Server, whatever most commonly matches).

So in a best case the user will be presented with a already correct filled out form and just has to press enter or he makes only the changes that are necessary, but doesn't to fill out the complete dialog by himself.


Update:

So if the user doesn't know the Application Server path. Who does it? Where resides this information? Maybe you can enforce your customers to provide this information all the same way. Maybe they set some environment variable within the logon script or they put a file with the needed informations on a global accessible place (e.g. where the logon script resides).

Oliver
In principle the administrator of the system knows this information but the client app needs it in some way in the first instance. Is there a path stored on local PCs that is accessible and central to all computers on a domain and can be accessed in a generic way for all customers. Then the required information could be stored in this location and the application get the required settings on first run.
MrEdmundo
A: 

If I understand right you want to deploy a pre-customized software for each user. You could use WIX to create a MSI-package for each customer. You can deliver several user-settings in your customer-oriented msi. You can dynamically generate a WIX-XML-Document based on a data-source where you store your customers. Is a bit work, but later saves a lot of work. The MSI-creation through WIX can be easily integrated into the build-process.

martin
Thanks I'll have a look at this to see if it helps.
MrEdmundo
A: 

Given that it's an enterprise environment, have you considered using ClickOnce? We've had success mainly with startup arguments, e.g. http://servername/OurApp.application?environment=uat

It doesn't always scale, but you can pass arguments using GET variables and parsing the resulting QueryString when delivering via HTTP - http://msdn.microsoft.com/en-us/library/ms172242.aspx

You might pass in the settings in the QueryString, or create them in the database, generate a (hashed?) key and build a QueryString unique to that reference (with the added benefit that an inquisitive user wouldn't be able to manipulate the URI and fake a different set of parameters).

Unsliced
Hi, I have recently looked at ClickOnce which led to the following question: http://serverfault.com/questions/143055/enterprise-level-control-of-clickonce-product-on-corporate-network-with-group-polIf I can't solve that it's going to be trick to use. Thanks Ed
MrEdmundo