1

我正在尝试在卸载之前卸载我的应用程序上安装的所有插件。我正在使用下面的代码,但我没有结果......

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;

有什么问题吗?

已编辑

我更改代码以找到正确的 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填充了正确的值。

4

2 回答 2

0

将您的 Exec 调用更改为:

Exec('>', sUnInstallString, ...)

(在执行此操作之前不要去掉引号。)

于 2013-03-24T01:37:36.803 回答
0

我只需要添加行

StringChangeEx(sUnInstallString, '"', '', True); 

之前Exec。该值来自具有无效字符的注册表"

于 2013-03-22T17:26:24.170 回答