//********************************************************************* //* Microsoft Windows ** //* Copyright(c) Microsoft Corp., 1994 ** //********************************************************************* // // UNINSTAL.C - code to uninstall MSN // // HISTORY: // // 6/22/95 jeremys Created. // #include "wizard.h" extern DOGENINSTALL lpDoGenInstall; /******************************************************************* NAME: DoUninstall SYNOPSIS: Uninstalls MSN1.05 if we installed it in the past, and it's still installed ********************************************************************/ BOOL DoUninstall(VOID) { BOOL fRet = TRUE; BOOL fNeedToRemoveMSN105 = FALSE; // check registry entry to see if we installed MSN1.05 RegEntry re(szRegPathInternetSettings,HKEY_LOCAL_MACHINE); ASSERT(re.GetError() == ERROR_SUCCESS); if (re.GetError() == ERROR_SUCCESS) { if (re.GetNumber(szRegValInstalledMSN105,0) > 0) { // yes, we installed MSN1.05. now see if it's still installed. RegEntry reSetup(szRegPathOptComponents,HKEY_LOCAL_MACHINE); ASSERT(reSetup.GetError() == ERROR_SUCCESS); reSetup.MoveToSubKey(szRegPathMSNetwork105); ASSERT(reSetup.GetError() == ERROR_SUCCESS); if (reSetup.GetError() == ERROR_SUCCESS) { TCHAR szInstalledVal[10]; // big enough for "1" if (reSetup.GetString(szRegValInstalled,szInstalledVal, sizeof(szInstalledVal)) && !lstrcmpi(szInstalledVal,sz1)) { // yes, MSN1.05 is still installed. we need to remove it. fNeedToRemoveMSN105 = TRUE; } } } } if (fNeedToRemoveMSN105) { // warn user that this will remove MSN! int iRet=MsgBox(NULL,IDS_WARNWillRemoveMSN,MB_ICONEXCLAMATION,MB_OKCANCEL); if (iRet == IDOK) { TCHAR szInfFilename[SMALL_BUF_LEN+1]; TCHAR szInfSectionName[SMALL_BUF_LEN+1]; DEBUGMSG("Uninstalling MSN 1.05"); // load file name and section name out of resources LoadSz(IDS_MSN105_INF_FILE,szInfFilename,ARRAYSIZE(szInfFilename)); LoadSz(IDS_MSN105_UNINSTALL_SECT,szInfSectionName, ARRAYSIZE(szInfSectionName)); // call GenInstall to remove files, do registry edits, etc. RETERR err = lpDoGenInstall(NULL,szInfFilename,szInfSectionName); if (err == OK) { DEBUGMSG("Uninstalling MSN 1.0"); // load file name and section name out of resources LoadSz(IDS_MSN100_INF_FILE,szInfFilename,ARRAYSIZE(szInfFilename)); LoadSz(IDS_MSN100_UNINSTALL_SECT,szInfSectionName, ARRAYSIZE(szInfSectionName)); // call GenInstall to remove files, do registry edits, etc. RETERR err = lpDoGenInstall(NULL,szInfFilename,szInfSectionName); } if (err != OK) { DisplayErrorMessage(NULL,IDS_ERRUninstallMSN,err,ERRCLS_SETUPX, MB_ICONEXCLAMATION); fRet = FALSE; } else { // remove our registry marker that we installed MSN 1.05 re.DeleteValue(szRegValInstalledMSN105); } } } // remove the Internet icon from the desktop. To do this, we have to // delete a registry key (not a value!). Plus! setup won't // do this from their .inf file, they can only delete values. So we // have to write some actual code here to remove the key. // open the name space key. The key we want to remove is a subkey // of this key. // //10/24/96 jmazner Normandy 6968 // //No longer neccessary thanks to Valdon's hooks for invoking ICW. // 11/21/96 jmazner Normandy 11812 // oops, it _is_ neccessary, since if user downgrades from IE 4 to IE 3, // ICW 1.1 needs to morph the IE 3 icon. RegEntry reNameSpace(szRegPathNameSpace,HKEY_LOCAL_MACHINE); ASSERT(reNameSpace.GetError() == ERROR_SUCCESS); if (reNameSpace.GetError() == ERROR_SUCCESS) { // delete the subkey that causes the internet icon to appear RegDeleteKey(reNameSpace.GetKey(),szRegKeyInternetIcon); } return fRet; }