mirror of
https://github.com/ultimatepp/ultimatepp.git
synced 2026-05-16 06:05:58 -06:00
71 lines
2.1 KiB
C++
71 lines
2.1 KiB
C++
#include "ide.h"
|
|
|
|
#ifdef PLATFORM_WIN32
|
|
|
|
String GetShellFolder(const char *name, HKEY type)
|
|
{
|
|
return GetWinRegString(name,
|
|
"Software\\Microsoft\\Windows\\CurrentVersion\\Explorer\\Shell Folders",
|
|
type);
|
|
}
|
|
|
|
void DelKey(const char *dir, const char *key)
|
|
{
|
|
HKEY hkey;
|
|
if(RegOpenKeyEx(HKEY_LOCAL_MACHINE, dir, 0, KEY_READ, &hkey) != ERROR_SUCCESS)
|
|
return;
|
|
RegDeleteKey(hkey, key);
|
|
RegCloseKey(hkey);
|
|
}
|
|
|
|
void RemoveWindowsItems()
|
|
{
|
|
DeleteFile(AppendFileName(GetShellFolder("Common Programs", HKEY_LOCAL_MACHINE), "Ultimate++ IDE.lnk"));
|
|
DeleteFile(AppendFileName(GetShellFolder("Desktop", HKEY_CURRENT_USER), "TheIde.lnk"));
|
|
|
|
DelKey("SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\Ultimate++",
|
|
"DisplayName");
|
|
DelKey("SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\Ultimate++",
|
|
"UninstallString");
|
|
DelKey("SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Uninstall",
|
|
"Ultimate++");
|
|
}
|
|
|
|
void Uninstall()
|
|
{
|
|
String path = GetExeFilePath();
|
|
String bat = AppendFileName(GetShellFolder("Desktop", HKEY_CURRENT_USER), "removepp.bat");
|
|
String dir = GetFileFolder(path);
|
|
if(!PromptYesNo("[*3 Do you wish to uninstall Ultimate`+`+ development system ?&&]"
|
|
"Uninstall will remove [* " + DeQtf(dir) + "] directory and all "
|
|
"registry and desktop items associated with Ultimate`+`+.")) return;
|
|
DeleteFolderDeep(dir);
|
|
RemoveWindowsItems();
|
|
SaveFile(bat,
|
|
":Repeat\r\n"
|
|
"del \"" + path + "\"\r\n"
|
|
"if exist \"" + path + "\" goto Repeat\r\n"
|
|
"del \"" + GetExeDirFile("theide.log") + "\"\r\n"
|
|
"rmdir \"" + dir + "\"\r\n"
|
|
"del \"" + bat + "\"\r\n"
|
|
);
|
|
|
|
STARTUPINFO si;
|
|
PROCESS_INFORMATION pi;
|
|
ZeroMemory(&si, sizeof(si));
|
|
si.cb = sizeof(si);
|
|
si.dwFlags = STARTF_USESHOWWINDOW;
|
|
si.wShowWindow = SW_HIDE;
|
|
char h[512];
|
|
strcpy(h, bat);
|
|
if(!CreateProcess(NULL, h, NULL, NULL, FALSE,
|
|
IDLE_PRIORITY_CLASS, NULL, GetShellFolder("Desktop", HKEY_CURRENT_USER),
|
|
&si, &pi))
|
|
Exclamation("Uninstall failed to remove some files...&" + DeQtf(GetLastErrorMessage()));
|
|
}
|
|
|
|
#else
|
|
|
|
void Uninstall() {}
|
|
|
|
#endif
|