我正在尝试解决在制作安装包时出现的问题。安装包是在visual studio 2010的帮助下用wix编写的。安装包正在创建一个数据库并向该数据库添加一些表。当用户执行安装包并连接到要创建数据库的远程服务器时,就会出现问题。两个参与的主机不在同一个域中,所以必须使用 sql-server 身份验证。在安装包中,我让用户能够在 Windows 和 SQL Server 身份验证之间进行选择。目前,用户会看到一个对话框,他可以在其中选择两个选项之一。任一选项的结果是,在存储连接字符串的文件中,配置值,即Integrated Security
true
开关在和之间切换false
。问题是,在安装过程中,用户的凭据用于登录远程 sql 服务器。我必须更改安装程序以便使用 sql 凭据。我知道我可以通过使用以下 sql 元素来实现这一点:
<sql:SqlDatabase Id="MasterDB" Server="[SQLSERVER_SERVER]" Instance="[SQLSERVER_INSTANCENAME]" Database="master" User="SqlUser" />
其中 User 属性被分配了由 WixUtilExtension 提供的用户元素的 id:
<util:User Id="SqlUser" Name="[SQLSERVER_USERNAME]" Password="[SQLSERVER_PASSWORD]" />
我不知道如何创建两个不同的 SqlDatabase 元素,一个用于 Windows,另一个用于同名的 SQL-Authentication。理想情况下,我想要这样的东西:
<sql:SqlDatabase Id="MasterDB" Server="[SQLSERVER_SERVER]" Instance="[SQLSERVER_INSTANCENAME]" Database="master" User="SqlUser"><Condition>SQLSERVER_AUTHENTICATION=1</Condition></sql:SqlDatabase>
<sql:SqlDatabase Id="MasterDB" Server="[SQLSERVER_SERVER]" Instance="[SQLSERVER_INSTANCENAME]" Database="master"><Condition>SQLSERVER_AUTHENTICATION=0</Condition></sql:SqlDatabase>
SqlDatabase 元素不允许 Condition 元素作为子元素,因此必须以其他方式执行此操作。但我不知道怎么做。你能告诉我吗?