ODBC Connection

From WPKG | Open Source Software Deployment and Distribution
Jump to: navigation, search

A WPKG Package to create an ODBC Connection[edit]

The Installer Package[edit]

This uses one of 8 template files, all based on registry exports, to produce entries using a mix of:-

  • trusted connection
  • SQL authentication
  • named Database
  • database not specified

- as needed. For example:-

  1. ODBC_template_SQL2K5_int_auth_db.reg
  2. ODBC_template_SQL2K5_int_auth_no_db.reg
  3. ODBC_template_SQL2K5_sql_auth_db.reg
  4. ODBC_template_SQL2K5_sql_auth_no_db.reg
  5. ODBC_template_SQL2K8_int_auth_db.reg
  6. ODBC_template_SQL2K8_int_auth_no_db.reg
  7. ODBC_template_SQL2K8_sql_auth_db.reg
  8. ODBC_template_SQL2K8_sql_auth_no_db.reg
<package id="ODBC_CONN_X"
           name="Create ODBC Connect to DB XYZ on SQL 2008 Server ABC..."
           revision="1.1"
           reboot="false"
           execute="always">

    <depends package-id="SETUP" />
    <depends package-id="SETUPTOOLS" /> <!-- TxtReplace.exe -->
    <depends package-id="SQL_SERVER_NATIVECLIENT_10.0" />
    
    <variable name="LOCALDOWNLOADS" value="C:\downloads\provisioning" />
    <variable name="WPKGHOME"       value="\\enterprise\development\infrastructure\provisioning\wpkg-1.1.2\" />
    <variable name="tools"          value="c:\tools" />

    <variable name="ODBC_DSN_NAME"      value="ODBC_CONN_X" />
    <variable name="ODBC_DBSERVER"      value="SQLDEV-2005-A" />
    <variable name="ODBC_DBNAME"        value="AutomationTest" />
    <variable name="ODBC_DESC"          value="A test of blah for blah" />
    <variable name="ODBC_DRIVERNAME"    value="SQL Server Native Client 10.0" />
    <variable name="ODBC_TEMPLATE_FILE" value="ODBC_template_SQL2K8_int_auth_db.reg" />

    <check type="registry" condition="equals" path="HKEY_LOCAL_MACHINE&#92;SOFTWARE&#92;ODBC&#92;ODBC.INI&#92;ODBC Data Sources&#92;%ODBC_DSN_NAME%" value="%ODBC_DRIVERNAME%" />
        
    <install cmd="xcopy /Y &quot;%WPKGHOME%\ODBC\%ODBC_TEMPLATE_FILE%&quot; &quot;%LOCALDOWNLOADS%\&quot;" />
    <install cmd="%tools%\TxtReplace\TxtReplace.exe -i &quot;%LOCALDOWNLOADS%\%ODBC_TEMPLATE_FILE%&quot; -r __ODBC_DSN_NAME__ &quot;%ODBC_DSN_NAME%&quot; -r __ODBC_DESCRIPTION__ &quot;%ODBC_DESC%&quot; -r __ODBC_DBSERVER__ &quot;%ODBC_DBSERVER%&quot; -r __ODBC_DBNAME__ &quot;%ODBC_DBNAME%&quot; " />
    <install cmd="%tools%\reg.exe import &quot;%LOCALDOWNLOADS%\%ODBC_TEMPLATE_FILE%&quot;" />

    <remove cmd="cmd /c %tools%\reg.exe DELETE &quot;HKEY_LOCAL_MACHINE\SOFTWARE\ODBC\ODBC.INI\ODBC Data Sources&quot; /v &quot;%ODBC_DSN_NAME%&quot; /f" />
    <remove cmd="cmd /c %tools%\reg.exe DELETE &quot;HKEY_LOCAL_MACHINE\SOFTWARE\ODBC\ODBC.INI&#92;%ODBC_DSN_NAME%&quot; /f" />
    
  </package>

This <depend>s on package SQL Server 2008 ODBC Driver.

The Registry Template[edit]

This requires "TxtReplace.exe" substitution utility, and "reg.exe" from the Windows 2000 resource kit (on the W2K CD)

Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SOFTWARE\ODBC\ODBC.INI\ODBC Data Sources]
"__ODBC_DSN_NAME__"="SQL Server"

[HKEY_LOCAL_MACHINE\SOFTWARE\ODBC\ODBC.INI\__ODBC_DSN_NAME__]
"Driver"="C:\\WINDOWS\\system32\\SQLSRV32.dll"
"Description"="__ODBC_DESCRIPTION__"
"Server"="__ODBC_DBSERVER__"
"Trusted_Connection"="Yes"