我正在尝试整理一个简单的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”?
答案 0 :(得分:1)
我不知道您是否已经MsgBox
确定UninstallString
注册表中的完全字符串,但在注册表中,正常字符串为{{ 1}}。
请注意命令周围的额外 "C:\Windows\unins000.exe"
。
在命令周围使用"
和Exec
时,会得到一个"
错误的ResultCode 267。所以你需要在invalid directory
之前删除它们。
当您在Exec
中手动输入C:\Windows\unins000.exe
时,您很方便地忘记了它们;)