na ofrmie jest button
po jego kliknieciu ma sie odinstalwoac proram
tak jak po kliknieciu usun w dodaj/usun programy
jak to z robic jakia fiunkcje z winapi wywolac czy moze cos inengo
na ofrmie jest button
po jego kliknieciu ma sie odinstalwoac proram
tak jak po kliknieciu usun w dodaj/usun programy
jak to z robic jakia fiunkcje z winapi wywolac czy moze cos inengo
Blech.. Po prostu musisz uruchomic program odinstalowujący, który sie znajduje przeważnie w folderze głównynm tego czegoś, co chcesz usunąć. Jak nie wiesz, jak uruchamiać programy, zobacz w FAQ... :)
Witam
Chyba nie ma funkcji WinApi, która to za Ciebie zrobi. Rzecz sprowadza sie do dwóch etapów:
lzuik
ale jak pobrac wartosc klucza
uninstall string jesli nie znam wczesniejszego klucza
zapisanego np ciaglem liter i cyfr
a znam wartosc np klucza publisher
Witam
soki1981 napisał(a)
lzuik
ale jak pobrac wartosc kluczauninstall string jesli nie znam wczesniejszego klucza
zapisanego np ciaglem liter i cyfra znam wartosc np klucza publisher
Można napisać sobie np. taką funkcję:
type
TAppInfo = record
DisplayName: string;
UninstallString: string;
QuietDisplayName: string;
QuietUninstallString: string;
end;
//Do uses dodaj Registry
function GetUninstallInfoByAppName(var AppInfo: TAppInfo): Boolean;
var
Reg: TRegistry;
KeyNamesList: TStringList;
i: integer;
begin
result:= False;
Reg:= TRegistry.Create;
KeyNamesList:= TStringList.Create;
try
Reg.RootKey:= HKEY_LOCAL_MACHINE;
Reg.OpenKeyReadOnly('\Software\Microsoft\Windows\CurrentVersion\Uninstall');
Reg.GetKeyNames(KeyNamesList);
Reg.CloseKey;
for i:=0 to KeyNamesList.Count - 1 do
begin
Reg.OpenKeyReadOnly('\Software\Microsoft\Windows\CurrentVersion\Uninstall\'
+ KeyNamesList[i]);
if Reg.ValueExists('DisplayName')then
begin
if lstrcmpi(PChar(Reg.ReadString('DisplayName')),
PChar(AppInfo.DisplayName)) = 0 then
begin
if Reg.ValueExists('UninstallString') then
begin
AppInfo.UninstallString:= Reg.ReadString('UninstallString');
result:= True;
end;
end;
end;
if Reg.ValueExists('QuietDisplayName')then
begin
if lstrcmpi(PChar(Reg.ReadString('QuietDisplayName')),
PChar(AppInfo.QuietDisplayName)) = 0 then
begin
if Reg.ValueExists('QuietUninstallString') then
begin
AppInfo.QuietUninstallString:= Reg.ReadString('QuietUninstallString');
result:= True;
end;
end;
end;
Reg.CloseKey;
if result = True then
break;
end;
finally
KeyNamesList.Clear;
KeyNamesList.Free;
Reg.Free;
end;
end;
A to masz przykład użycia:
var
AppInfo: TAppInfo;
begin
AppInfo.DisplayName:= 'FTP Now'; //Tu wpisz nazwę programu
AppInfo.UninstallString:= ''; //Tu zostanie zwrócona ścieżka i ew. parametry deinstalcji
AppInfo.QuietDisplayName:= 'FTP Now'; //Tu wpisz nazwę programu
AppInfo.QuietUninstallString:= ''; //Tu zostanie zwrócona ścieżka i ew. parametry deinstalcji cichej jeżeli przewidziano taką możliwość
if GetUninstallInfoByAppName(AppInfo) then
begin
if Length(AppInfo.UninstallString) > 0 then
ShowMessage(AppInfo.DisplayName + #13#10 + AppInfo.UninstallString)
else
ShowMessage(AppInfo.QuietDisplayName + #13#10 + AppInfo.QuietUninstallString)
end
else
ShowMessage('Nie znaleziono aplikacji')
end;
Pozdrawiam