执行第二个应用程序的调试器
问题描述:
我试图取消调用它之前卸载安装在我的应用程序上的所有插件。 我正在使用的代码波纹管,但我没有结果...执行第二个应用程序的调试器
for I := 0 to GetArrayLength(PluginsID)-1 do
begin
sUnInstallString := 'Software\Microsoft\Windows\CurrentVersion\Uninstall\' + PluginsID[I];
Exec(sUnInstallString, '/NORESTART','', SW_SHOW, ewWaitUntilTerminated, uResultCode);
end;
这有什么错?
EDITED
我更改代码,找到正确的反安装字符串:
for I := 0 to GetArrayLength(Plugins)-1 do
begin
sUnInstPath := 'Software\Microsoft\Windows\CurrentVersion\Uninstall\' + Plugins[I];
if RegQueryStringValue(HKLM, sUnInstPath, 'UninstallString', sUnInstallString) then
begin
Exec(sUnInstallString, '','', SW_HIDE, ewWaitUntilTerminated, uResultCode);
end;
end;
但它不会再次工作....该sUnInstallString
充满了正确的值。
答
我只是Exec
之前添加行
StringChangeEx(sUnInstallString, '"', '', True);
。该值从注册表卡梅斯与无效字符"
+0
这不是无效的,这是至关重要的。你不应该这样使用它。 – Miral 2013-03-24 01:38:35
那是因为你正试图执行注册表项。您可能要从该注册表项中查询卸载路径,不是吗? – TLama 2013-03-22 13:58:27
我在一个教程中发现我必须这样做。如果不是这样,我该如何进行卸载? – Victor 2013-03-22 13:59:08
那么是什么返回你'UninstallString'?有没有通往unistaller可执行文件和参数的路径? – TLama 2013-03-22 14:48:21