windows-nt/Source/XPSP1/NT/base/cluster/setup/common/common.cpp
2020-09-26 16:20:57 +08:00

144 lines
3.6 KiB
C++

extern "C" {
#include <nt.h>
#include <ntrtl.h>
#include <nturtl.h>
}
#include <windows.h>
#include <setupapi.h>
VOID
DoUninstall(
IN HWND hWnd
)
/*++
Routine Description:
Uninstalls the cluster software by running the uninstall
section of the cluster INF.
Arguments:
hWnd - Supplies the hWnd of the dialog to run the INF in.
Return Value:
None.
--*/
{
HINF ClusterSetupInf;
CString TargetInf;
CString error;
CString GroupName;
CString ItemName;
DoingUninstall = TRUE;
if(IsOtherSoftwareInstalled())
return;
//
// Stop the services if they are running.
//
StopService(L"ClusSvc");
// StopService(L"ClusDisk");
StopService(L"TimeServ");
UnloadClusDB();
//
// Register CluAdMMC.
//
error = registerCOMObject(FALSE /*bRegister*/, _T("CluAdMMC.dll"), theApp.m_SetupDirectory);
if (!error.IsEmpty()) {
MessageBox(hWnd, error, _T("SETUP ERROR"), MB_OK | MB_ICONEXCLAMATION);
}
//
// Register ClAdmWiz.
//
error = registerCOMObject(FALSE /*bRegister*/, _T("ClAdmWiz.dll"), theApp.m_SetupDirectory);
if (!error.IsEmpty()) {
MessageBox(hWnd, error, _T("SETUP ERROR"), MB_OK | MB_ICONEXCLAMATION);
}
//
// Register CluAdmEx.
//
error = registerCOMObject(FALSE /*bRegister*/, _T("CluAdmEx.dll"), theApp.m_SetupDirectory);
if (!error.IsEmpty()) {
MessageBox(hWnd, error, _T("SETUP ERROR"), MB_OK | MB_ICONEXCLAMATION);
}
//
// Register IISClEx3.
//
error = registerCOMObject(FALSE /*bRegister*/, _T("IISClEx3.dll"), theApp.m_SetupDirectory);
if (!error.IsEmpty()) {
MessageBox(hWnd, error, _T("SETUP ERROR"), MB_OK | MB_ICONEXCLAMATION);
}
//
// Register ClNetREx.
//
error = registerCOMObject(FALSE /*bRegister*/, _T("ClNetREx.dll"), theApp.m_SetupDirectory);
if (!error.IsEmpty()) {
MessageBox(hWnd, error, _T("SETUP ERROR"), MB_OK | MB_ICONEXCLAMATION);
}
TargetInf = theApp.m_SetupDirectory;
TargetInf +=_T("\\CLUSTER.INF");
//
// Open the cluster setup INF file.
//
ClusterSetupInf = SetupOpenInfFile(TargetInf,
NULL,
INF_STYLE_WIN4,
NULL);
if (ClusterSetupInf == INVALID_HANDLE_VALUE ) {
MessageBox(hWnd,_T("couldn't open INF"),_T("SETUP ERROR"),MB_OK | MB_ICONEXCLAMATION);
return;
}
// Uninstall stuff ...
#ifdef COPYCLUSTERFILES_IS_OBSOLETE
error = copyClusterFiles(ClusterSetupInf, hWnd, _T("DefaultUninstall"));
if(!error.IsEmpty()) {
MessageBox(hWnd,error, _T("SETUP ERROR"), MB_OK | MB_ICONEXCLAMATION);
return;
}
#endif // COPYCLUSTERFILES_IS_OBSOLETE
//
// Remove the cluster network provider
//
error = removeNetworkProvider();
if(!error.IsEmpty()) {
MessageBox(hWnd,error, _T("SETUP ERROR"), MB_OK | MB_ICONEXCLAMATION);
}
//
// Remove the cluster item from the start menu
//
GroupName.LoadString(IDS_START_GROUP_NAME);
ItemName.LoadString(IDS_START_ITEM_NAME);
DeleteItem(GroupName, TRUE, ItemName, FALSE);
if ((!theApp.m_UninstallOnError) || theApp.m_RebootOnUninstall) {
if (theApp.m_CommandLine->m_Force) {
SystemShutdown();
} else {
BOOL nResponse = AfxMessageBox(IDS_WRN_UNINSTALL,MB_OKCANCEL | MB_ICONEXCLAMATION);
if(nResponse == IDOK)
SystemShutdown();
/* SetupPromptReboot(NULL,
hWnd,
FALSE);*/
}
}
}