function BOOL SetNewODBC(sNewZrodlo,sOldZrodlo, szDataBase, szServer, szUser, nVersionSQL) string RegPath,sKey,sValue,sDriver,sServer,sUser,sDataBase,sClass,sData; number nSize,nType,nResult,nDriver,nServer,nUser,nDataBase; number nsDriver,nsServer,nsUser,nsDataBase,nsDataSource; begin RegDBSetDefaultRoot(HKEY_LOCAL_MACHINE); RegPath="SOFTWARE\\ODBC\\ODBC.INI\\"+sNewZrodlo; if (RegDBKeyExist(RegPath)<0) then RegPath="SOFTWARE\\ODBC\\ODBC.INI\\"+sOldZrodlo; if (RegDBKeyExist(RegPath)==1) then sDataBase=""; sValue="Driver"; sKey = "SOFTWARE\\ODBC\\ODBC.INI\\"+sOldZrodlo; nDriver = RegDBGetKeyValueEx( sKey, sValue, nType, sDriver, nSize ); sValue="Server"; nServer = RegDBGetKeyValueEx( sKey, sValue, nType, sServer, nSize ); sValue="LastUser"; nUser = RegDBGetKeyValueEx( sKey, sValue, nType, sUser, nSize ); sValue="Database"; nDataBase=RegDBGetKeyValueEx( sKey, sValue, nType, sDataBase, nSize ); if ((nDriver==0)&&(nServer==0)&&(nUser==0)) then sClass=""; sKey="SOFTWARE\\ODBC\\ODBC.INI\\"+sNewZrodlo; RegPath="SOFTWARE\\ODBC\\ODBC.INI"; if (RegDBCreateKeyEx(sKey, sClass) < 0) then WriteLog(1,"- nie można utworzyć źrodła ODBC do "+sNewZrodlo); else //Zapis wartosci do nowego zrodla WriteLog(1,"- Utworzono klucz ODBC \""+sNewZrodlo+"\""); nType=REGDB_STRING; sKey="SOFTWARE\\ODBC\\ODBC.INI\\"+sNewZrodlo; nsDriver = RegDBSetKeyValueEx ( sKey, "Driver", nType, sDriver, nSize ); nsServer = RegDBSetKeyValueEx ( sKey, "Server", nType, sServer, nSize ); nsUser = RegDBSetKeyValueEx ( sKey, "LastUser", nType, sUser, nSize ); if (StrLength(sDataBase)>0) then sDataBase=szDataBase; nsDataBase = RegDBSetKeyValueEx ( sKey, "Database", nType, sDataBase, nSize ); endif; if (nsDriver==0) then WriteLog(2,"- utworzono klucz 'Driver' wartość \""+sDriver+"\""); else WriteLog(2,"- nie utworzono wartość klucza 'Driver'"); endif; if (nsServer==0) then WriteLog(2,"- utworzono klucz 'Server' wartość \""+sServer+"\""); else WriteLog(2,"- nie utworzono wartość klucza 'Server'"); endif; if (nsUser==0) then WriteLog(2,"- utworzono klucz 'LastUser' wartość \""+sUser+"\""); else WriteLog(2,"- nie utworzono wartość klucza 'LastUser'"); endif; if ((StrLength(sDataBase)>0)&&(nsDataBase==0)) then WriteLog(2,"- utworzono klucz 'Database' wartość \""+sDataBase+"\""); else WriteLog(2,"- nie utworzono wartość klucza 'Database'"); endif; //Utworzenie wpisu do ODBC Data Sources sKey="SOFTWARE\\ODBC\\ODBC.INI\\ODBC Data Sources"; nsDataSource = RegDBGetKeyValueEx ( sKey, sOldZrodlo, nType, sData, nSize ); if (nsDataSource==0) then if (RegDBSetKeyValueEx ( sKey, sNewZrodlo, nType, sData, nSize )==0) then WriteLog(2,"- utworzono wartość klucza ODBC Data Sources do "+sNewZrodlo); else WriteLog(2,"- nie utworzono wartość klucza ODBC Data Sources do "+sNewZrodlo); endif;; endif; endif; else //Brak wszystkich wymaganych danych do utworzenia zrodla ODBC WriteLog(1,"Brak wszystkich wymaganych danych do utworzenia zrodla ODBC "); //Usuwam zrodla endif; else //brak sOldZrodla - stworz sClass=""; sKey="SOFTWARE\\ODBC\\ODBC.INI\\"+sNewZrodlo; RegPath="SOFTWARE\\ODBC\\ODBC.INI"; if (RegDBCreateKeyEx(sKey, sClass) < 0) then WriteLog(1,"- nie można utworzyć źrodła ODBC do "+sNewZrodlo); else //Zapis wartosci do nowego zrodla WriteLog(1,"- Utworzono klucz ODBC do "+sNewZrodlo); nType=REGDB_STRING; sKey="SOFTWARE\\ODBC\\ODBC.INI\\"+sNewZrodlo; WriteLog(1,"- wyszukiwanie sterownika SQL"); if (nVersionSQL<90) then if (Is(FILE_EXISTS,WINSYSDIR^"sqlsrv32.dll")) then sDriver = WINSYSDIR^"sqlsrv32.dll"; elseif (Is(FILE_EXISTS,WINSYSDIR64^"sqlsrv32.dll")) then sDriver = WINSYSDIR64^"sqlsrv32.dll"; endif; elseif (nVersionSQL>=90)&&(nVersionSQL<100) then if (Is(FILE_EXISTS,WINSYSDIR^"sqlncli.dll")) then sDriver = WINSYSDIR^"sqlncli.dll"; elseif (Is(FILE_EXISTS,WINSYSDIR64^"sqlncli.dll")) then sDriver = WINSYSDIR64^"sqlncli.dll"; endif; elseif (nVersionSQL>=100) then if (Is(FILE_EXISTS,WINSYSDIR^"sqlncli10.dll")) then sDriver = WINSYSDIR^"sqlncli10.dll"; elseif (Is(FILE_EXISTS,WINSYSDIR64^"sqlncli10.dll")) then sDriver = WINSYSDIR64^"sqlncli10.dll"; elseif (Is(FILE_EXISTS,WINSYSDIR^"sqlncli.dll")) then sDriver = WINSYSDIR^"sqlncli.dll"; elseif (Is(FILE_EXISTS,WINSYSDIR64^"sqlncli.dll")) then sDriver = WINSYSDIR64^"sqlncli.dll"; endif; endif; WriteLog(2,"- sterownik SQL to \""+sDriver+"\""); nsDriver = RegDBSetKeyValueEx ( sKey, "Driver", nType, sDriver, nSize ); nsServer = RegDBSetKeyValueEx ( sKey, "Server", nType, szServer, nSize ); nsUser = RegDBSetKeyValueEx ( sKey, "LastUser", nType, szUser, nSize ); if (StrLength(szDataBase)>0) then nsDataBase = RegDBSetKeyValueEx ( sKey, "Database", nType, szDataBase, nSize ); endif; if (nsDriver==0) then WriteLog(2,"- utworzono klucz 'Driver' wartość \""+sDriver+"\""); else WriteLog(2,"- nie utworzono wartość klucza 'Driver' = \""+sDriver+"\""); endif; if (nsServer==0) then WriteLog(2,"- utworzono klucz 'Server' wartość \""+szServer+"\""); else WriteLog(2,"- nie utworzono wartość klucza 'Server' = \""+szServer+"\""); endif; if (nsUser==0) then WriteLog(2,"- utworzono klucz 'LastUser' wartość \""+szUser+"\""); else WriteLog(2,"- nie utworzono wartość klucza 'LastUser'"); endif; if ((StrLength(szDataBase)>0)&&(nsDataBase==0)) then WriteLog(2,"- utworzono klucz 'Database' wartość \""+szDataBase+"\""); else WriteLog(2,"- nie utworzono wartość klucza 'Database' = \""+szDataBase+"\""); endif; //Utworzenie wpisu do ODBC Data Sources sKey="SOFTWARE\\ODBC\\ODBC.INI\\ODBC Data Sources"; if StrFind(sDriver,"sqlsrv32.dll")>=0 then sData = "SQL Server"; endif; if StrFind(sDriver,"sqlncli.dll")>=0 then sData = "SQL Native Client"; endif; if StrFind(sDriver,"sqlncli10.dll")>=0 then sData = "SQL Server Native Client 10.0"; endif; /* if (nVersionSQL<90) then sData = "SQL Server"; elseif (nVersionSQL>=90)&&(nVersionSQL<100) then sData = "SQL Native Client"; elseif (nVersionSQL>=100) then sData = "SQL Server Native Client 10.0"; endif; */ if StrLength(sData)>0 then if (RegDBSetKeyValueEx ( sKey, sNewZrodlo, nType, sData, nSize )==0) then WriteLog(2,"- utworzono wartość klucza ODBC Data Sources do "+sNewZrodlo+ " na \""+sData+"\""); else WriteLog(2,"- nie utworzono wartość klucza ODBC Data Sources do "+sNewZrodlo+ " na \""+sData+"\""); endif; else WriteLog(1,"Błąd rozpoznania sterownika SQL. Nie można utworzyć ODBC Data Sources do \""+sNewZrodlo+ "\""); endif; endif; endif; else WriteLog(2,"Istnieje klucz ODBC "+sNewZrodlo); endif; end;
Programowanie c++/c#/delphi/javas/php/installscript/nativescript
Przykłady - przydatne funkcje
piątek, 1 kwietnia 2011
Utworzenie źródła ODBC DSN w InstallShield do serwera MSSQL
Funkcja tworzy nowe źródło ODBC DSN z ewentualnym usunięciem źródła starego
Etykiety:
InstallShield - funkcje
Subskrybuj:
Komentarze do posta (Atom)
Brak komentarzy:
Prześlij komentarz