From: David Hartwig <daveh@insightdist.com>
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.
This commit is contained in:
parent
4a333c4918
commit
34299b4fac
455
src/interfaces/odbc/setup.rul
Normal file
455
src/interfaces/odbc/setup.rul
Normal file
@ -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;
|
||||||
|
|
||||||
|
|
||||||
|
|
Loading…
x
Reference in New Issue
Block a user