0

我正在开发的应用程序之一正在被各种客户使用。应用程序需要连接到数据库,因此在 app.config 中定义了一个连接字符串。然而,每个客户端都需要不同的连接字符串。

客户必须在产品安装过程中提供数据库信息。他们需要在每个新版本中提供此信息。

我真正想要的是一些设置,如连接字符串,存储在不受新安装影响的位置。处理这个问题的最佳方法是什么?

4

2 回答 2

0

您是否考虑过为每个客户创建一个转换(http://wix.tramontana.co.hu/tutorial/transforms)?将连接字符串粘贴在属性中,并使用转换在客户端上对其进行更新,这比更新安装程序以使用他们在安装期间输入的内容要快得多/容易得多(并且可能更不容易出错)。像运行一样简单:

安装程序.msi 转换=client.mst

缺点是他们必须确保在运行安装程序时使用转换,现在确定如何打包或启动它们等。如果你只是给任何老汤姆、迪克或哈利,这可能不是最好的解决方案,如果是您或您认识的人安装它,那么它可能是一个简单的解决方案。

或者,您可以使用机器上的 DSN 或其他设置来保持它们的一致性。

否则你必须修改/编辑你的安装,在这种情况下你应该看看http://wix.tramontana.co.hu/tutorial/user-interface-revisited

于 2012-12-07T18:52:14.050 回答
0

我建议将连接字符串存储在注册表中,您可以在进行升级时通过搜索该值来检索该值并将其存储为属性。如果未找到该值,您可以将其视为全新安装并提示输入该值,或将其作为命令行属性检索。

可以使用RegistrySearch来实现搜索,这是一个示例:

<Property Id="DATABASECONNECTIONSTRING">
  <RegistrySearch Id="DbConnectionString" Root="HKLM" Key="MyDBConnectionStringLocation" Name="ConnectionString" Type="raw" />
</Property>

要存储值,请使用RegsitryValue元素:

<Component Id="PersistentProperty" KeyPath="yes">
  <RegistryValue Id="DbConnectionString" Root="HKLM" Key="MyDBConnectionStringLocation" Value="[DATABASECONNECTIONSTRING]" Name="DbConnectionString" Type="string" />
</Component>
于 2012-12-10T09:54:08.297 回答