From 34299b4fac44eac111733888679edaaea8f777c5 Mon Sep 17 00:00:00 2001 From: "Marc G. Fournier" Date: Wed, 15 Apr 1998 21:56:54 +0000 Subject: [PATCH] From: David Hartwig Marc, I overlooked this file it should be included in the source. Oops Also the binary file is only 1.2 meg not 2.5 meg. Oops again. --- src/interfaces/odbc/setup.rul | 455 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 455 insertions(+) create mode 100644 src/interfaces/odbc/setup.rul diff --git a/src/interfaces/odbc/setup.rul b/src/interfaces/odbc/setup.rul new file mode 100644 index 0000000000..fe1e5cd3c3 --- /dev/null +++ b/src/interfaces/odbc/setup.rul @@ -0,0 +1,455 @@ +/* +# Insight Distribution Systems - System V - Oct 1997 +#ident "@(#)setup.rul 1.3 :/sccs/sql/odbc/s.setup.rul 11/13/97 12:18:11" +*/ + + +/*----------------------------------------------------------------------------*\ + * + * PostgreSQL ODBC Driver Installation Script for InstallShield + * +\*----------------------------------------------------------------------------*/ + + +#define APP_NAME "PostgreSQL ODBC Driver" +#define DRIVER_NAME "PostgreSQL" +#define DRIVER_FILE "PODBC32.DLL" + +#define COMPANY_NAME "Insight" +#define PRODUCT_NAME "PostgreSQL ODBC Driver" +#define PRODUCT_VERSION "6.2" +#define PRODUCT_KEY "PODBC32.DLL" +#define UNINSTALL_KEY "PODBC32v6.2" + +#define ODBC_DM_KEY "\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\SharedDLLs" +#define ODBC_COMP_KEY "\\SOFTWARE\\ODBC\\ODBCINST.INI" +#define ODBC_CORE_KEY "\\SOFTWARE\\ODBC\\ODBCINST.INI\\ODBC Core" +#define ODBC_DRIVERS_KEY "\\SOFTWARE\\ODBC\\ODBCINST.INI\\ODBC Drivers" + + +declare + // functions + prototype SetupScreen(); + prototype FileCompare(STRING, STRING, STRING, STRING); + + // variables + STRING svMainDirectory [_MAX_STRING], svGrp, svUninstLogFile, svPath; + STRING svValue, szName, szKey, szMessage; + STRING szMsg, szTmp, szTmp2, szFileSet, szProgram; + NUMBER nResult, nvType, nvSize, nStartup, ComponentUsageCount; + + NUMBER nvDoNot, nvVersion, nvInstall, nCore, nDM; + STRING dm, core, szFileName; + NUMBER options, nvInfo, nvResult; + LONG lResult; + STRING svCompVersion, svFileVersion, svCompDate, svCompTime, svFileDate, svFileTime; + +program + +StartHere: + Disable( BACKGROUND ); + + // Set up the installation screen. + SetupScreen(); + InstallationInfo(COMPANY_NAME, PRODUCT_NAME, PRODUCT_VERSION, PRODUCT_KEY); + RegDBSetAppInfo("Location", REGDB_STRING, WINSYSDIR ^ DRIVER_FILE, -1); + +// Create a Welcome dialog. +WelcomeDlg: + Disable( BACKBUTTON ); + Welcome( "Welcome to the PostgreSQL Odbc Driver Installation", 0 ); + Enable( BACKBUTTON ); + Enable( NEXTBUTTON ); + +GetTargetDirectory: + svMainDirectory = WINSYSDIR; + +OptionsDlg: + RegDBSetDefaultRoot(HKEY_LOCAL_MACHINE); + szKey = ODBC_DM_KEY; + nCore = RegDBKeyExist(szKey); + + szName = WINSYSDIR ^ "ODBC32.DLL"; + nDM = RegDBGetKeyValueEx(szKey, szName, nvType, svValue, nvSize); + + szMessage = "Select options for installing the ODBC Driver Manager.\n" + + "Analysis of your system suggests that the ODBC Driver Manager\n"; + + nvDoNot = FALSE; + nvInstall = FALSE; + nvVersion = FALSE; + if (nCore >= 0 && nDM >= 0) then + nvDoNot = TRUE; + szMessage = szMessage + "is already installed. Therefore, you may choose not to install it."; + else + nvInstall = TRUE; + szMessage = szMessage + "is not installed. Therefore, you should install it now."; + endif; + + Enable(FINISHBUTTON); + nResult = AskOptions(EXCLUSIVE, szMessage, + "Do not install Driver Manager", nvDoNot, + "Install Driver Manager ", nvInstall, + "Install Driver Manager (with version checking)", nvVersion); + + if (nResult = BACK) then + Disable(FINISHBUTTON); + goto WelcomeDlg; + endif; + +Version: + CompressInfo("driver.z", DRIVER_FILE, COMP_INFO_VERSIONMS|COMP_INFO_VERSIONLS, nvInfo, svCompVersion); + + szFileName = WINSYSDIR ^ "PODBC32.DLL"; + nResult = VerGetFileVersion(szFileName, svFileVersion); + // MessageBox("System file PODBC32.dll version is " + svFileVersion, INFORMATION); + + lResult = VerCompare(svCompVersion, svFileVersion, VERSION); + + if (lResult = EQUALS) then + //date + CompressInfo("driver.z", DRIVER_FILE, COMP_INFO_DATE, nvInfo, svCompDate); + GetFileInfo(szFileName, FILE_DATE, nvResult, svFileDate); + + //time + CompressInfo("driver.z", DRIVER_FILE, COMP_INFO_TIME, nvInfo, svCompTime); + GetFileInfo(szFileName, FILE_TIME, nvResult, svFileTime); + + // If compressed file date/time is earlier than system file date/time + // then + nResult = FileCompare(svCompDate, svCompTime, svFileDate, svFileTime); + if (nResult < 0) then + lResult = LESS_THAN; + endif; + + NumToStr(szTmp, nResult); + // MessageBox("File Compare = " + szTmp, INFORMATION); + endif; + + if (lResult = LESS_THAN) then + MessageBeep(0); + nResult = AskYesNo("The " + PRODUCT_NAME + " is already installed on your system \nand is a newer version than the one that is about to be installed.\n\n" + + "Would you like to continue the installation anyway (not recommended)?", NO); + if (nResult = NO) then + MessageBeep(0); + MessageBox("Installation has been aborted.\nNo changes have been made to your system.", WARNING); + exit; + endif; + else + /* + nResult = AskYesNo("Ready to install " + PRODUCT_NAME + ".\n\nPress Yes to proceed with the installation.\nPress No to abort the installation.", YES); + if (nResult = NO) then + MessageBeep(0); + MessageBox("Installation has been aborted.\nNo changes have been made to your system.", WARNING); + exit; + endif; + */ + endif; + +CheckRegistry: + Enable(STATUSDLG); + + SetStatusWindow(5, "Checking registry entries..."); + Delay(1); + + RegDBSetDefaultRoot(HKEY_LOCAL_MACHINE); + szKey = ODBC_DM_KEY; + nResult = RegDBKeyExist(szKey); + if (nResult < 0 && nvDoNot = TRUE) then + MessageBeep(0); + MessageBox("ODBC Core Components are not installed!", SEVERE); + Disable(STATUSDLG); + MessageBeep(0); + MessageBox("Please install the ODBC Core Components\nand rerun this setup program.", INFORMATION); + exit; + endif; + + szName = WINSYSDIR ^ "ODBC32.DLL"; + nResult = RegDBGetKeyValueEx(szKey, szName, nvType, svValue, nvSize); + if (nResult < 0 && nvDoNot = TRUE) then + MessageBeep(0); + MessageBox("ODBC Driver Manager (ODBC32.DLL) is not installed!", SEVERE); + Disable(STATUSDLG); + MessageBeep(0); + MessageBox("Please install the ODBC Driver Manager\nand rerun this setup program.", INFORMATION); + exit; + endif; + + +FileSetup: + + SetStatusWindow( 10, "Copying program files..."); + StatusUpdate(ON, 90); + + DeinstallStart(svMainDirectory, svUninstLogFile, UNINSTALL_KEY, 0); + + // Show the uninstall under Add/Remove Programs in Control Panel + RegDBSetItem(REGDB_UNINSTALL_NAME, PRODUCT_NAME); + + szFileSet = "podbc32"; + + TARGETDIR = svMainDirectory; // winsys + + FileSetBeginDefine(szFileSet); + + + nResult = CompressGet("driver.z", "*.*", COMP_NORMAL); + if (nResult < 0) then + NumToStr(szTmp, nResult); + MessageBox("Compress Get Error on driver.z files.\n\nError # " + szTmp, SEVERE); + exit; + endif; + + TARGETDIR = svMainDirectory; // winsys + + // Driver Manager stuff + if (! nvDoNot) then + if (nvVersion) then + options = COMP_UPDATE_VERSION; + else + options = COMP_NORMAL; + endif; + + // The File usage count increments are handled by CompressGet + // with the SHAREDFILE option. + + nResult = CompressGet("redist.z", "*.*", options|SHAREDFILE); + if (nResult < 0) then + NumToStr(szTmp, nResult); + MessageBox("Compress Get Error on redist.z files.\n\nError # " + szTmp, SEVERE); + exit; + endif; + endif; + + + FileSetEndDefine(szFileSet); + +FileTransfer: + nResult = FileSetPerformEz(szFileSet, 0); + + switch(nResult) + case FS_DONE: + case FS_CREATEDIR: + MessageBeep(0); + MessageBox("Unable to create a required subdirectory under " + TARGETDIR + "." + + "\nPlease check write access to this directory.", SEVERE); + + abort; + default: + NumToStr(szTmp, nResult); + MessageBeep(0); + MessageBox("Error copying files to " + TARGETDIR + "." + + "\nPlease check this location and try again." + + "\n\nError Number:"+szTmp, SEVERE); + + abort; + + endswitch; + + +UpdateRegistry: + SetStatusWindow(95, "Creating registry entries..."); + Delay(2); + + RegDBSetDefaultRoot(HKEY_LOCAL_MACHINE); + + Disable(LOGGING); + + // Create ODBC Core Subkey (if it doesn't exist) + // (But don't create uninstall information for it) + szKey = ODBC_CORE_KEY; + nResult = RegDBCreateKeyEx(szKey, ""); + if (nResult < 0) then + MessageBeep(0); + MessageBox("Unable to create ODBC Core subkey.", SEVERE); + exit; + endif; + + // Create Installed Driver Key (if it doesn't exist) + // (But don't create uninstall information for it) + szKey = ODBC_DRIVERS_KEY; + nResult = RegDBCreateKeyEx(szKey, ""); + if (nResult < 0) then + MessageBeep(0); + MessageBox("Unable to create ODBC Drivers subkey.", SEVERE); + exit; + endif; + + + // Increment Driver Manager Component UsageCount + szKey = ODBC_CORE_KEY; + szName = "UsageCount"; + if (RegDBGetKeyValueEx(szKey, szName, nvType, svValue, nvSize) < 0) then + ComponentUsageCount = 0; + endif; + + // MessageBox("Current Driver Manager Component Usage Count = " + svValue, INFORMATION); + + StrToNum(ComponentUsageCount, svValue); + ComponentUsageCount = ComponentUsageCount + 1; + NumToStr(szTmp, ComponentUsageCount); + // MessageBox("New Driver Manager Component Usage Count = " + szTmp, INFORMATION); + + nResult = RegDBSetKeyValueEx(szKey, szName, REGDB_NUMBER, szTmp, -1); + if (nResult < 0) then + MessageBeep(0); + MessageBox("Unable to increment Driver Manager component usage count.", SEVERE); + exit; + endif; + + // Re-enable logging now + Enable(LOGGING); + + // set ODBC Drivers Subkey (installed) + szKey = ODBC_DRIVERS_KEY; + nResult = RegDBSetKeyValueEx(szKey, DRIVER_NAME, REGDB_STRING, "Installed", -1); + if (nResult < 0) then + MessageBeep(0); + MessageBox("Unable to create 'Installed' key value.", SEVERE); + exit; + endif; + + + // Driver Specification Subkey (PostgreSQL) + szKey = ODBC_COMP_KEY + "\\" + DRIVER_NAME; + nResult = RegDBCreateKeyEx(szKey, ""); + if (nResult < 0) then + MessageBeep(0); + MessageBox("Unable to create ODBC Driver Key.", SEVERE); + exit; + endif; + + nResult = RegDBSetKeyValueEx(szKey, "APILevel", REGDB_STRING, "1", -1); + if (nResult < 0) then + MessageBeep(0); + MessageBox("Unable to create 'APILevel' key value.", SEVERE); + exit; + endif; + + nResult = RegDBSetKeyValueEx(szKey, "ConnectFunctions", REGDB_STRING, "YYN", -1); + if (nResult < 0) then + MessageBeep(0); + MessageBox("Unable to create 'ConnectFunctions' key value.", SEVERE); + exit; + endif; + + nResult = RegDBSetKeyValueEx(szKey, "Driver", REGDB_STRING, WINSYSDIR ^ DRIVER_FILE, -1); + if (nResult < 0) then + MessageBeep(0); + MessageBox("Unable to create 'Driver' key value.", SEVERE); + exit; + endif; + + nResult = RegDBSetKeyValueEx(szKey, "DriverODBCVer", REGDB_STRING, "02.00", -1); + if (nResult < 0) then + MessageBeep(0); + MessageBox("Unable to create 'DriverODBCVer' key value.", SEVERE); + exit; + endif; + + nResult = RegDBSetKeyValueEx(szKey, "FileUsage", REGDB_STRING, "0", -1); + if (nResult < 0) then + MessageBeep(0); + MessageBox("Unable to create 'FileUsage' key value.", SEVERE); + exit; + endif; + + nResult = RegDBSetKeyValueEx(szKey, "Setup", REGDB_STRING, WINSYSDIR ^ DRIVER_FILE, -1); + if (nResult < 0) then + MessageBeep(0); + MessageBox("Unable to create 'Setup' key value.", SEVERE); + exit; + endif; + + nResult = RegDBSetKeyValueEx(szKey, "SQLLevel", REGDB_STRING, "1", -1); + if (nResult < 0) then + MessageBeep(0); + MessageBox("Unable to create 'SQLLevel' key value.", SEVERE); + exit; + endif; + + nResult = RegDBSetKeyValueEx(szKey, "UsageCount", REGDB_NUMBER, "1", -1); + if (nResult < 0) then + MessageBeep(0); + MessageBox("Unable to create 'UsageCount' key value.", SEVERE); + exit; + endif; + +Done: + Delay(1); + SetStatusWindow(100, "Installation complete"); + + Delay(1); + Disable(STATUSDLG); + + if (BATCH_INSTALL = TRUE) then + szMsg = "Some files could not be updated because they are " + + "currently in use by other programs on the system. " + + "Files in use will be updated the next time you restart " + + "your system."; + RebootDialog("Restart Windows", szMsg, SYS_BOOTMACHINE); + CommitSharedFiles(0); + szMsg = "Driver setup complete.\n\nReboot your system to complete the installation."; + MessageBeep(0); + MessageBox(szMsg, INFORMATION); + else + + szMsg = "Driver installation completed successfully."; + MessageBeep(0); + MessageBox(szMsg, INFORMATION); + endif; + + exit; + +/*---------------------------------------------------------------------------*\ + * + * Function: SetupScreen + * + * Purpose: This function will set up the screen look. This includes + * colors, fonts, text to be displayed, etc. + * + * + * Input: + * + * Returns: + * + * Comments: +\*---------------------------------------------------------------------------*/ + +function SetupScreen() + begin + + Enable( INDVFILESTATUS ); + + SetTitle( APP_NAME + " Setup", 28, WHITE ); + + SetTitle( "Setup", 0, BACKGROUNDCAPTION ); // Caption bar text. + + Enable( BACKGROUND ); + + end; + +function FileCompare(szCompInfoDate, szCompInfoTime, szFileInfoDate, szFileInfoTime) + STRING year, month, day, file_date, file_time; + NUMBER nResult; + begin + StrSub(year, szFileInfoDate, 2, 2); + StrSub(month, szFileInfoDate, 5, 2); + StrSub(day, szFileInfoDate, 8, 2); + file_date = month + "-" + day + "-" + year; + + nResult = StrCompare(szCompInfoDate, file_date); + if (nResult != 0) then + return nResult; + endif; + + StrSub(file_time, szFileInfoTime, 0, 5); + + // MessageBox("Comp = " + szCompInfoDate + " " + szCompInfoTime + ", File = " + file_date + " " + file_time, INFORMATION); + nResult = StrCompare(szCompInfoTime, file_time); + + return nResult; + end; + + + -- 2.11.0