NTSTATUS SetupUninstallBuild( _In_ PPH_SETUP_CONTEXT Context ) { Context->SetupInstallPath = SetupFindInstallDirectory(); // Stop Process Hacker. if (!ShutdownProcessHacker()) goto CleanupExit; // Stop the kernel driver(s). if (!SetupUninstallKph(Context)) goto CleanupExit; // Remove autorun and shortcuts. SetupDeleteWindowsOptions(Context); // Remove the uninstaller. SetupDeleteUninstallFile(Context); // Remove the ARP uninstall entry. SetupDeleteUninstallKey(); // Remove the previous installation. PhDeleteDirectory(Context->SetupInstallPath); ShowUninstallCompleteDialog(Context); return STATUS_SUCCESS; CleanupExit: ShowUninstallErrorDialog(Context); return STATUS_SUCCESS; }
NTSTATUS SetupUpdateBuild( _In_ PPH_SETUP_CONTEXT Context ) { Context->SetupInstallPath = SetupFindInstallDirectory(); if (!ShutdownProcessHacker()) goto CleanupExit; if (!SetupUninstallKph(Context)) goto CleanupExit; if (!SetupCreateUninstallFile(Context)) goto CleanupExit; SetupCreateUninstallKey(Context); if (!SetupExtractBuild(Context)) goto CleanupExit; SetupStartKph(Context); if (!SetupExecuteProcessHacker(Context)) goto CleanupExit; PostMessage(Context->DialogHandle, WM_QUIT, 0, 0); PhDereferenceObject(Context); return STATUS_SUCCESS; CleanupExit: PostMessage(Context->DialogHandle, WM_APP + IDD_ERROR, 0, 0); PhDereferenceObject(Context); return STATUS_FAIL_CHECK; }