为不同的客户部署默认设置

时间:2010-01-13 11:17:22

标签: c# .net winforms deployment appsettings

我的问题与现有问题有关

How to deploy a desktop .Net application with custom settings per user

但是,我理解使用应用程序设置我无法找到信息的想法是,我应该如何为不同的客户部署应用程序设置?

我们有一个可以正常运行的自定义设置系统,但是当应用程序首次运行时,它需要知道一些事情,例如公司名称和应用程序服务器。这些显然会因客户而异。

我不希望用户在首次运行时必须输入这些设置,因为在大多数情况下,应用程序将由组策略部署。

目前我的想法是在每个客户的单独构建中设置某种设置文件。这是要走的路,还是我错过了对“客户档案”这个想法的某种原生支持?

编辑:

更多可以帮助人们解决问题的信息。

这是一个企业应用程序,由一个中央数据库和应用程序服务器组成,另外还有100个客户端应用程序安装。我需要能够为客户端应用程序提供一些应用程序设置,这些设置对于不同的客户显然会有所不同。

3 个答案:

答案 0 :(得分:0)

许多应用程序在第一次启动时会询问您一些初始设置(Microsoft Office,Visual Studio等)。因此,这种行为通常为用户所知。

问题可能更多,这些初始设置会恢复应用程序的更新。为此,您可以将数据保存在注册表中的版本无关路径中,或者保存在%AppData%以下的某个位置。

在第一次启动时预先填写这些对话框会有所帮助,方法是将这些信息从机器中取出(例如,公司名称可以从注册表[HKLM \ Software \ Microsoft \ WindowsNT \ CurrentVersion \ RegisteredOrganization]获取,或者作为Application Server采用网关地址,AD服务器,无论最常匹配的是什么。)

因此,在最佳情况下,将向用户呈现已经正确填写的表格,只需按Enter键或者他只进行必要的更改,但不会自己填写完整的对话框。< / p>


更新

因此,如果用户不知道Application Server路径。谁做到了?在哪里有这些信息?也许您可以强制您的客户以同样的方式提供这些信息。也许他们在登录脚本中设置了一些环境变量,或者他们将一个包含所需信息的文件放在一个全局可访问的地方(例如登录脚本所在的位置)。

答案 1 :(得分:0)

如果我理解正确,您希望为每个用户部署预定制软件。 您可以使用WIX为每个客户创建一个MSI包。您可以在面向客户的msi中提供多个用户设置。您可以根据存储客户的数据源动态生成WIX-XML-Document。 有点工作,但后来节省了很多工作。通过WIX创建MSI可以轻松地集成到构建过程中。

答案 2 :(得分:0)

鉴于它是一个企业环境,您是否考虑过使用ClickOnce?我们主要通过启动论证取得了成功,例如: http://servername/OurApp.application?environment=uat

它并不总是扩展,但您可以使用GET变量传递参数,并在通过HTTP传递时解析生成的QueryString - http://msdn.microsoft.com/en-us/library/ms172242.aspx

您可以传递QueryString中的设置,或者在数据库中创建它们,生成(哈希?)键并构建一个对该引用唯一的QueryString(具有好奇的用户无法使用的附加好处)操纵URI并伪造一组不同的参数)。