执行第二个应用程序的unistaller

时间:2013-03-22 13:55:27

标签: windows inno-setup uninstall

我正在尝试取消安装在我的应用程序上的所有插件,然后再解除它。 我正在使用下面的代码,但我没有结果......

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填充了正确的值。

2 个答案:

答案 0 :(得分:0)

我只需要添加一行

StringChangeEx(sUnInstallString, '"', '', True); 
Exec之前

。该值来自Registry,其中包含无效的char "

答案 1 :(得分:0)

将您的Exec调用更改为:

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

(在执行此操作之前不要删除引号。)