コード例 #1
0
/*
**  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;	
}
コード例 #2
0
/*
**  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;
}
コード例 #3
0
/*
**  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;	
}
コード例 #4
0
/*
**  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;
}
コード例 #5
0
/*
**  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;
}
コード例 #6
0
/*
**  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;
}