我正在尝试取消安装在我的应用程序上的所有插件,然后再解除它。 我正在使用下面的代码,但我没有结果......
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
我更改代码以找到正确的unistall字符串:
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
填充了正确的值。
答案 0 :(得分:0)
我只需要添加一行
StringChangeEx(sUnInstallString, '"', '', True);
在Exec
之前。该值来自Registry,其中包含无效的char "
答案 1 :(得分:0)
将您的Exec调用更改为:
Exec('>', sUnInstallString, ...)
(在执行此操作之前不要删除引号。)