2

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

  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”?

4

1 回答 1

1

我不知道您是否已经MsgBox确定了注册表中的确切字符串,UninstallString但注册表中的正常字符串是"C:\Windows\unins000.exe".

注意命令周围的额外内容。 "

当使用Execaround"命令时,您会得到一个invalid directory错误的 ResultCode 267。所以你需要在Exec.

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

于 2013-10-07T17:22:13.383 回答