我可以在Wix安装程序中读取ODBCDataSource属性吗?

时间:2017-04-28 10:02:11

标签: wix odbc installer

我有一个Wix安装程序,他在安装过程中从用户设置的某些参数创建系统DSN(ODBCDataSource组件)。

        <Component Id="ODBCDATASOURCE" Guid="xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx" KeyPath="yes">
            <ODBCDataSource Id="ODBCDATASOURCE" Name="DBconnection" Registration="machine" DriverName="PostgreSQL Unicode" >
                 <Property Id="Database" Value="[ODBCDATABASENAME]" />
                 <Property Id="Server" Value="[ODBCSERVERIP]" />
                 <Property Id="Username" Value="[ODBCUSER]" />
                 <Property Id="Port" Value="5432" />
                 <Property Id="Password" Value="[ODBCPASSWORD]" />
            </ODBCDataSource>
        </Component

我已将所有这些ODBCDataSource参数存储在注册表项中,以便在升级期间重用它们。

但是如果用户手动修改了ODBC配置(例如更改服务器IP地址),我的安装程序将不会在升级期间考虑此更改,因为它从注册表项中读取属性值。

我的安装程序是否有办法从现有的OdbcDataSource而不是注册表项中读取属性?

感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

最后,解决方案比预期更容易。 我只是从注册表中读取ODBC值:

<Property Id="ODBCSERVERIP" Secure="yes">
  <RegistrySearch Id="SearchReg_ODBCSERVERIP" Type="raw" Root="HKLM" Key="Software\ODBC\ODBC.INI\DBconnection" Name="Servername" />
</Property>
<Property Id="ODBCDATABASENAME" Secure="yes">
  <RegistrySearch Id="SearchReg_ODBCDATABASENAME" Type="raw" Root="HKLM" Key="Software\ODBC\ODBC.INI\DBconnection" Name="Database" />
</Property>
<Property Id="ODBCUSER" Secure="yes">
  <RegistrySearch Id="SearchReg_ODBCUSER" Type="raw" Root="HKLM" Key="Software\ODBC\ODBC.INI\DBconnection" Name="Username" />
</Property>
<Property Id="ODBCPASSWORD" Secure="yes" Hidden="yes">
  <RegistrySearch Id="SearchReg_ODBCPASSWORD" Type="raw" Root="HKLM" Key="Software\ODBC\ODBC.INI\DBconnection" Name="Password" />
</Property>

这也可以通过自定义操作(读取注册表并将值设置为属性)来完成,但这种方法对我来说已经足够了。