Inno设置:Exec无法读取字符串?

时间:2013-10-06 20:06:38

标签: installer inno-setup pascal

我正在尝试整理一个简单的Inno安装程序安装程序,该安装程序会查找以前的版本并在继续之前将其删除。一切正常,直到我得到以下代码:

  if Exec(UninstallString, '/SILENT', '', SW_SHOW, ewWaitUntilTerminated, ResultCode) then
  begin
    MsgBox('Previous version found and uninstalled successfully.', mbInformation, MB_OK);
  end
  else
  begin
    MsgBox('Please uninstall the previous version of this mod before continuing.', mbInformation, MB_OK);
    Result := FALSE;
  end;

这是一个非常简单的代码,但它总是失败。我已检查UninstallString的内容并且它们是正确的(C:\Windows\unins000.exe),但Exec失败并显示错误:“目录名称无效。”

它似乎无法正确读取“UninstallString”的内容,因为如果我手动输入它们(例如Exec('C:\Windows\unins000.exe, ...),它可以正常工作。

如何让Exec按预期处理字符串“UninstallString”?

1 个答案:

答案 0 :(得分:1)

我不知道您是否已经MsgBox确定UninstallString注册表中的完全字符串,但在注册表中,正常字符串为{{ 1}}。

请注意命令周围的额外 "C:\Windows\unins000.exe"

在命令周围使用"Exec时,会得到一个"错误的ResultCode 267。所以你需要在invalid directory之前删除它们。

当您在Exec中手动输入C:\Windows\unins000.exe时,您很方便地忘记了它们;)