/* ** Name:ingres_unset_odbc_reg_entries ** ** Description: ** Reverse the changes to the system made by ingres_set_odbc_reg_entries ** during windows installer is creating script. ** ** Inputs: ** hInstall Handle to the installation. ** ** Outputs: ** None. ** Returns: ** ERROR_SUCCESS The function succeeds. ** ERROR_INSTALL_FAILURE The function fails. ** Exceptions: ** None. ** ** Side Effects: ** None. ** ** History: ** 21-Aug-2001 (penga03) ** Created. ** 21-mar-2002 (penga03) ** Changed the function always return ERROR_SUCCESS since ** installation already completes at this point. */ UINT __stdcall ingres_unset_odbc_reg_entries(MSIHANDLE hInstall) { char ii_code[3]; DWORD ret; char RegKey[256], data[256]; DWORD type, size; HKEY hkRegKey; BOOL bRemoved=0; ret=sizeof(ii_code); if(MsiGetProperty(hInstall, "II_INSTALLATION", ii_code, &ret)!=ERROR_SUCCESS) return ERROR_SUCCESS; sprintf(RegKey, "Software\\IngresCorporation\\Ingres\\%s_Installation", ii_code); if(RegOpenKeyEx(HKEY_LOCAL_MACHINE, RegKey, 0, KEY_ALL_ACCESS, &hkRegKey)) return ERROR_SUCCESS; size=sizeof(data); *data=0; if(!RegQueryValueEx(hkRegKey, "InstalledFeatures", NULL, &type, (BYTE *)data, &size)) { bRemoved=DelTok(data, "ODBC"); if(*data==0) RegDeleteValue(hkRegKey, "InstalledFeatures"); else if (bRemoved) RegSetValueEx(hkRegKey, "InstalledFeatures", 0, REG_SZ, data, strlen(data)+1); } size=sizeof(data); *data=0; if(!RegQueryValueEx(hkRegKey, "RemovedFeatures", NULL, &type, (BYTE *)data, &size)) { bRemoved=DelTok(data, "ODBC"); if(*data==0) RegDeleteValue(hkRegKey, "RemovedFeatures"); else if (bRemoved) RegSetValueEx(hkRegKey, "RemovedFeatures", 0, REG_SZ, data, strlen(data)+1); } size=sizeof(data); if(RegQueryValueEx(hkRegKey, "Ingres ODBC Driver", NULL, &type, (BYTE *)data, &size)) { RegCloseKey(hkRegKey); return ERROR_SUCCESS; } RegDeleteValue(hkRegKey, "Ingres ODBC Driver"); RegDeleteValue(hkRegKey, "setup_ingresodbc"); RegDeleteValue(hkRegKey, "setup_ingresodbcreadonly"); RegDeleteValue(hkRegKey, "serviceauto"); RegDeleteValue(hkRegKey, "serviceloginid"); RegDeleteValue(hkRegKey, "servicepassword"); RegDeleteValue(hkRegKey, "PostInstallationNeeded"); RegDeleteValue(hkRegKey, "SilentInstall"); RegDeleteValue(hkRegKey, "RebootNeeded"); RegCloseKey(hkRegKey); return ERROR_SUCCESS; }
/* ** Name:ingres_rollback_rep ** ** Description: ** Reverse the changes to the system made by ingres_set_rep_reg_entries and ** ingres_remove_rep_files. Executed only during an installation rollback. ** ** Inputs: ** hInstall Handle to the installation. ** ** Outputs: ** None. ** Returns: ** ERROR_SUCCESS The function succeeds. ** ERROR_INSTALL_FAILURE The function fails. ** Exceptions: ** None. ** ** Side Effects: ** None. ** ** History: ** 03-Aug-2001 (penga03) ** Created. */ UINT __stdcall ingres_rollback_rep(MSIHANDLE hInstall) { char ii_code[3]; DWORD ret; char RegKey[256], data[256]; DWORD type, size; HKEY hkRegKey; BOOL bRemoved=0; ret=sizeof(ii_code); if(MsiGetProperty(hInstall, "CustomActionData", ii_code, &ret)!=ERROR_SUCCESS) return ERROR_INSTALL_FAILURE; sprintf(RegKey, "Software\\CIngresCorporation\\Ingres\\%s_Installation", ii_code); if(RegOpenKeyEx(HKEY_LOCAL_MACHINE, RegKey, 0, KEY_ALL_ACCESS, &hkRegKey)) return ERROR_SUCCESS; size=sizeof(data); *data=0; if(RegQueryValueEx(hkRegKey, "InstalledFeatures", NULL, &type, (BYTE *)data, &size)==ERROR_SUCCESS) { bRemoved=DelTok(data, "REP"); if(*data==0) RegDeleteValue(hkRegKey, "InstalledFeatures"); else if (bRemoved) RegSetValueEx(hkRegKey, "InstalledFeatures", 0, REG_SZ, data, strlen(data)+1); } size=sizeof(data); *data=0; if(RegQueryValueEx(hkRegKey, "RemovedFeatures", NULL, &type, (BYTE *)data, &size)==ERROR_SUCCESS) { bRemoved=DelTok(data, "REP"); if(*data==0) RegDeleteValue(hkRegKey, "RemovedFeatures"); else if (bRemoved) RegSetValueEx(hkRegKey, "RemovedFeatures", 0, REG_SZ, data, strlen(data)+1); } size=sizeof(data); if(RegQueryValueEx(hkRegKey, "Ingres/Replicator", NULL, &type, (BYTE *)data, &size)!=ERROR_SUCCESS) { RegCloseKey(hkRegKey); return ERROR_SUCCESS; } RegDeleteValue(hkRegKey, "Ingres/Replicator"); RegDeleteValue(hkRegKey, "serviceauto"); RegDeleteValue(hkRegKey, "serviceloginid"); RegDeleteValue(hkRegKey, "servicepassword"); RegDeleteValue(hkRegKey, "PostInstallationNeeded"); RegDeleteValue(hkRegKey, "SilentInstall"); RegDeleteValue(hkRegKey, "RebootNeeded"); RegCloseKey(hkRegKey); return ERROR_SUCCESS; }
/* ** Name:ingres_rollback_odbc ** ** Description: ** Reverse the changes to the system made by ingres_set_odbc_reg_entries and ** ingres_remove_odbc_files. Executed only during an installation rollback. ** ** Inputs: ** hInstall Handle to the installation. ** ** Outputs: ** None. ** Returns: ** ERROR_SUCCESS The function succeeds. ** ERROR_INSTALL_FAILURE The function fails. ** Exceptions: ** None. ** ** Side Effects: ** None. ** ** History: ** 03-Aug-2001 (penga03) ** Created. */ UINT __stdcall ingres_rollback_odbc(MSIHANDLE hInstall) { char ii_code[3], buf[MAX_PATH+1]; DWORD ret; char RegKey[256], data[256]; DWORD type, size; HKEY hkRegKey; BOOL setup_IngresODBC, setup_IngresODBCReadOnly, bRemoved; char *p, *q, *tokens[3]; int count; setup_IngresODBC=setup_IngresODBCReadOnly=bRemoved=0; /* **CustomActionData:[II_INSTALLATION];[INGRES_ODBC];[INGRES_ODBC_READONLY] */ ret=sizeof(buf); MsiGetProperty(hInstall, "CustomActionData", buf, &ret); p=buf; for (count=0; count<=2; count++) { if (p) q=strchr(p, ';'); if (q) *q='\0'; tokens[count]=p; if (q) p=q+1; else p=NULL; } strcpy(ii_code,tokens[0]); if (tokens[1] && !_stricmp(tokens[1], "1")) setup_IngresODBC=1; if (tokens[2] && !_stricmp(tokens[2], "1")) setup_IngresODBCReadOnly=1; sprintf(RegKey, "Software\\IngresCorporation\\Ingres\\%s_Installation", ii_code); if(RegOpenKeyEx(HKEY_LOCAL_MACHINE, RegKey, 0, KEY_ALL_ACCESS, &hkRegKey)!=ERROR_SUCCESS) return ERROR_SUCCESS; size=sizeof(data); *data=0; if(!RegQueryValueEx(hkRegKey, "InstalledFeatures", NULL, &type, (BYTE *)data, &size)) { bRemoved=DelTok(data, "ODBC"); if(*data==0) RegDeleteValue(hkRegKey, "InstalledFeatures"); else if (bRemoved) RegSetValueEx(hkRegKey, "InstalledFeatures", 0, REG_SZ, data, strlen(data)+1); } size=sizeof(data); *data=0; if(!RegQueryValueEx(hkRegKey, "RemovedFeatures", NULL, &type, (BYTE *)data, &size)) { bRemoved=DelTok(data, "ODBC"); if(bRemoved) { size=sizeof(buf); RegQueryValueEx(hkRegKey, "II_SYSTEM", NULL, &type, (BYTE *)buf, &size); SetEnvironmentVariable("II_SYSTEM", buf); SetODBCEnvironment(setup_IngresODBC, setup_IngresODBCReadOnly, 1); } if(*data==0) RegDeleteValue(hkRegKey, "RemovedFeatures"); else if (bRemoved) RegSetValueEx(hkRegKey, "RemovedFeatures", 0, REG_SZ, data, strlen(data)+1); } size=sizeof(data); if(RegQueryValueEx(hkRegKey, "Ingres ODBC Driver", NULL, &type, (BYTE *)data, &size)) { RegCloseKey(hkRegKey); return ERROR_SUCCESS; } RegDeleteValue(hkRegKey, "Ingres ODBC Driver"); RegDeleteValue(hkRegKey, "setup_ingresodbc"); RegDeleteValue(hkRegKey, "setup_ingresodbcreadonly"); RegDeleteValue(hkRegKey, "serviceauto"); RegDeleteValue(hkRegKey, "serviceloginid"); RegDeleteValue(hkRegKey, "servicepassword"); RegDeleteValue(hkRegKey, "PostInstallationNeeded"); RegDeleteValue(hkRegKey, "SilentInstall"); RegDeleteValue(hkRegKey, "RebootNeeded"); RegCloseKey(hkRegKey); return ERROR_SUCCESS; }
/* ** Name:ingres_rollback_star ** ** Description: ** Reverse the changes to the system made by ingres_set_star_reg_entries and ** ingres_remove_star_files. Executed only during an installation rollback. ** ** Inputs: ** hInstall Handle to the installation. ** ** Outputs: ** None. ** Returns: ** ERROR_SUCCESS The function succeeds. ** ERROR_INSTALL_FAILURE The function fails. ** Exceptions: ** None. ** ** Side Effects: ** None. ** ** History: ** 03-Aug-2001 (penga03) ** Created. */ UINT __stdcall ingres_rollback_star(MSIHANDLE hInstall) { char ii_code[3], ii_system[MAX_PATH+1], sdir[MAX_PATH+1], buf[3*(MAX_PATH+1)], Host[33]; DWORD ret; char RegKey[256], data[256]; DWORD type, size; HKEY hkRegKey; BOOL bRemoved=0; ret=sizeof(ii_code); if(MsiGetProperty(hInstall, "CustomActionData", ii_code, &ret)!=ERROR_SUCCESS) return ERROR_INSTALL_FAILURE; sprintf(RegKey, "Software\\IngresCorporation\\Ingres\\%s_Installation", ii_code); if(RegOpenKeyEx(HKEY_LOCAL_MACHINE, RegKey, 0, KEY_ALL_ACCESS, &hkRegKey)) return ERROR_SUCCESS; size=sizeof(data); *data=0; if(RegQueryValueEx(hkRegKey, "InstalledFeatures", NULL, &type, (BYTE *)data, &size)==ERROR_SUCCESS) { bRemoved=DelTok(data, "STAR"); if(*data==0) RegDeleteValue(hkRegKey, "InstalledFeatures"); else if (bRemoved) RegSetValueEx(hkRegKey, "InstalledFeatures", 0, REG_SZ, data, strlen(data)+1); } size=sizeof(data); *data=0; if(RegQueryValueEx(hkRegKey, "RemovedFeatures", NULL, &type, (BYTE *)data, &size)==ERROR_SUCCESS) { bRemoved=DelTok(data, "STAR"); if(bRemoved) { size=sizeof(ii_system); RegQueryValueEx(hkRegKey, "II_SYSTEM", NULL, &type, (BYTE *)ii_system, &size); SetEnvironmentVariable("II_SYSTEM", ii_system); GetSystemDirectory(sdir, sizeof(sdir)); sprintf(buf, "%s\\ingres\\bin;%s\\ingres\\utility;%s", ii_system, ii_system, sdir); SetEnvironmentVariable("PATH", buf); Local_PMhost(Host); sprintf(buf, "iisetres.exe ii.%s.ingstart.*.star 1", Host); Execute(buf, TRUE); } if(*data==0) RegDeleteValue(hkRegKey, "RemovedFeatures"); else if (bRemoved) RegSetValueEx(hkRegKey, "RemovedFeatures", 0, REG_SZ, data, strlen(data)+1); } size=sizeof(data); if(RegQueryValueEx(hkRegKey, "Ingres/STAR", NULL, &type, (BYTE *)data, &size)!=ERROR_SUCCESS) { RegCloseKey(hkRegKey); return ERROR_SUCCESS; } RegDeleteValue(hkRegKey, "Ingres/STAR"); RegDeleteValue(hkRegKey, "serviceauto"); RegDeleteValue(hkRegKey, "serviceloginid"); RegDeleteValue(hkRegKey, "servicepassword"); RegDeleteValue(hkRegKey, "PostInstallationNeeded"); RegDeleteValue(hkRegKey, "SilentInstall"); RegDeleteValue(hkRegKey, "RebootNeeded"); RegCloseKey(hkRegKey); return ERROR_SUCCESS; }
/* ** Name:ingres_rollback_dbms ** ** Description: ** Reverse the changes to the system made by ingres_set_dbms_reg_entries and ** ingres_remove_dbms_files. Executed only during an installation rollback. ** ** Inputs: ** hInstall Handle to the installation. ** ** Outputs: ** None. ** Returns: ** ERROR_SUCCESS The function succeeds. ** ERROR_INSTALL_FAILURE The function fails. ** Exceptions: ** None. ** ** Side Effects: ** None. ** ** History: ** 03-Aug-2001 (penga03) ** Created. ** 16-Aug-2001 (penga03) ** Do not have to delete leftover.log since it belongs to old policy. */ UINT __stdcall ingres_rollback_dbms(MSIHANDLE hInstall) { char ii_code[3], ii_system[MAX_PATH+1], sdir[MAX_PATH+1], buf[3*(MAX_PATH+1)], Host[33]; DWORD ret; char RegKey[256], data[256]; DWORD type, size; HKEY hkRegKey; BOOL bRemoved=0; ret=sizeof(ii_code); if(MsiGetProperty(hInstall, "CustomActionData", ii_code, &ret)!=ERROR_SUCCESS) return ERROR_INSTALL_FAILURE; sprintf(RegKey, "Software\\IngresCorporation\\Ingres\\%s_Installation", ii_code); if(RegOpenKeyEx(HKEY_LOCAL_MACHINE, RegKey, 0, KEY_ALL_ACCESS, &hkRegKey)) return ERROR_SUCCESS; size=sizeof(data); *data=0; if(RegQueryValueEx(hkRegKey, "InstalledFeatures", NULL, &type, (BYTE *)data, &size)==ERROR_SUCCESS) { bRemoved=DelTok(data, "DBMS"); if(*data==0) RegDeleteValue(hkRegKey, "InstalledFeatures"); else if (bRemoved) RegSetValueEx(hkRegKey, "InstalledFeatures", 0, REG_SZ, data, strlen(data)+1); } size=sizeof(data); *data=0; if(RegQueryValueEx(hkRegKey, "RemovedFeatures", NULL, &type, (BYTE *)data, &size)==ERROR_SUCCESS) { bRemoved=DelTok(data, "DBMS"); if(bRemoved) { size=sizeof(ii_system); RegQueryValueEx(hkRegKey, "II_SYSTEM", NULL, &type, (BYTE *)ii_system, &size); SetEnvironmentVariable("II_SYSTEM", ii_system); GetSystemDirectory(sdir, sizeof(sdir)); sprintf(buf, "%s\\ingres\\bin;%s\\ingres\\utility;%s", ii_system, ii_system, sdir); SetEnvironmentVariable("PATH", buf); Local_PMhost(Host); sprintf(buf, "iisetres.exe ii.%s.ingstart.*.dbms 1", Host); Execute(buf, TRUE); sprintf(buf, "iisetres.exe ii.%s.ingstart.*.rmcmd 1", Host); Execute(buf, TRUE); } if(*data==0) RegDeleteValue(hkRegKey, "RemovedFeatures"); else if (bRemoved) RegSetValueEx(hkRegKey, "RemovedFeatures", 0, REG_SZ, data, strlen(data)+1); } size=sizeof(data); if(RegQueryValueEx(hkRegKey, "Ingres DBMS Server", NULL, &type, (BYTE *)data, &size)!=ERROR_SUCCESS) { RegCloseKey(hkRegKey); return ERROR_SUCCESS; } RegDeleteValue(hkRegKey, "Ingres DBMS Server"); RegDeleteValue(hkRegKey, "logfilesize"); RegDeleteValue(hkRegKey, "enableduallogging"); RegDeleteValue(hkRegKey, "enablesql92"); RegDeleteValue(hkRegKey, "iidatabasedir"); RegDeleteValue(hkRegKey, "iicheckpointdir"); RegDeleteValue(hkRegKey, "iijournaldir"); RegDeleteValue(hkRegKey, "iidumpdir"); RegDeleteValue(hkRegKey, "iiworkdir"); RegDeleteValue(hkRegKey, "primarylogdir"); RegDeleteValue(hkRegKey, "duallogdir"); RegDeleteValue(hkRegKey, "destroytxlogfile"); RegDeleteValue(hkRegKey, "upgradeuserdatabases"); RegDeleteValue(hkRegKey, "clusterinstall"); RegDeleteValue(hkRegKey, "clusterresource"); RegDeleteValue(hkRegKey, "mdbinstall"); RegDeleteValue(hkRegKey, "mdbname"); RegDeleteValue(hkRegKey, "mdbsize"); RegDeleteValue(hkRegKey, "mdbdebug"); RegCloseKey(hkRegKey); return ERROR_SUCCESS; }
/* ** Name:ingres_unset_dbms_reg_entries ** ** Description: ** Reverse the changes to the system made by ingres_set_dbms_reg_entries ** during windows installer is creating script. ** ** Inputs: ** hInstall Handle to the installation. ** ** Outputs: ** None. ** Returns: ** ERROR_SUCCESS The function succeeds. ** ERROR_INSTALL_FAILURE The function fails. ** Exceptions: ** None. ** ** Side Effects: ** None. ** ** History: ** 21-Aug-2001 (penga03) ** Created. ** 21-mar-2002 (penga03) ** Changed the function always return ERROR_SUCCESS since ** installation already completes at this point. */ UINT __stdcall ingres_unset_dbms_reg_entries(MSIHANDLE hInstall) { char ii_code[3]; DWORD ret; char RegKey[256], data[256]; DWORD type, size; HKEY hkRegKey; BOOL bRemoved=0; ret=sizeof(ii_code); if(MsiGetProperty(hInstall, "II_INSTALLATION", ii_code, &ret)!=ERROR_SUCCESS) return ERROR_SUCCESS; sprintf(RegKey, "Software\\IngresCorporation\\Ingres\\%s_Installation", ii_code); if(RegOpenKeyEx(HKEY_LOCAL_MACHINE, RegKey, 0, KEY_ALL_ACCESS, &hkRegKey)) return ERROR_SUCCESS; size=sizeof(data); *data=0; if(RegQueryValueEx(hkRegKey, "InstalledFeatures", NULL, &type, (BYTE *)data, &size)==ERROR_SUCCESS) { bRemoved=DelTok(data, "DBMS"); if(*data==0) RegDeleteValue(hkRegKey, "InstalledFeatures"); else if (bRemoved) RegSetValueEx(hkRegKey, "InstalledFeatures", 0, REG_SZ, data, strlen(data)+1); } size=sizeof(data); *data=0; if(RegQueryValueEx(hkRegKey, "RemovedFeatures", NULL, &type, (BYTE *)data, &size)==ERROR_SUCCESS) { bRemoved=DelTok(data, "DBMS"); if(*data==0) RegDeleteValue(hkRegKey, "RemovedFeatures"); else if (bRemoved) RegSetValueEx(hkRegKey, "RemovedFeatures", 0, REG_SZ, data, strlen(data)+1); } size=sizeof(data); if(RegQueryValueEx(hkRegKey, "Ingres DBMS Server", NULL, &type, (BYTE *)data, &size)!=ERROR_SUCCESS) { RegCloseKey(hkRegKey); return ERROR_SUCCESS; } RegDeleteValue(hkRegKey, "Ingres DBMS Server"); RegDeleteValue(hkRegKey, "logfilesize"); RegDeleteValue(hkRegKey, "enableduallogging"); RegDeleteValue(hkRegKey, "enablesql92"); RegDeleteValue(hkRegKey, "iidatabasedir"); RegDeleteValue(hkRegKey, "iicheckpointdir"); RegDeleteValue(hkRegKey, "iijournaldir"); RegDeleteValue(hkRegKey, "iidumpdir"); RegDeleteValue(hkRegKey, "iiworkdir"); RegDeleteValue(hkRegKey, "primarylogdir"); RegDeleteValue(hkRegKey, "duallogdir"); RegDeleteValue(hkRegKey, "destroytxlogfile"); RegDeleteValue(hkRegKey, "upgradeuserdatabases"); RegDeleteValue(hkRegKey, "clusterinstall"); RegDeleteValue(hkRegKey, "clusterresource"); RegDeleteValue(hkRegKey, "mdbinstall"); RegDeleteValue(hkRegKey, "mdbname"); RegDeleteValue(hkRegKey, "mdbsize"); RegDeleteValue(hkRegKey, "mdbdebug"); RegCloseKey(hkRegKey); return ERROR_SUCCESS; }