【发布时间】:2018-07-13 14:57:37
【问题描述】:
执行/运行以下 Inno 代码,我收到错误消息。文件“c:\xxxx-runtime\unins000.exe”确实存在。
错误信息:
Unable to execute file:
"c:\xxxx-runtime\unins000.exe"
CreateProcess failed; code 267.
The directory name is invalid.
Inno 代码如下所示:
[UninstallRun]
Filename: "{code:ARGetUninstallString}";
;Filename: {code:ARGetUninstallString}; -- same result
[Code]
function ARGetUninstallString(p: String): String;
var
sUnInstPath: String;
sUnInstallString: String;
begin
sUnInstPath := ExpandConstant('Software\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\xxxx_is1');
sUnInstallString := '';
if not RegQueryStringValue(HKEY_LOCAL_MACHINE, sUnInstPath, 'UninstallString', sUnInstallString) then
RegQueryStringValue(HKEY_CURRENT_USER, sUnInstPath, 'UninstallString', sUnInstallString);
Result := sUnInstallString;
end;
但是,如果我更换它就可以正常工作
[UninstallRun]
Filename: "{code:ARGetUninstallString}";
与
[UninstallRun]
Filename: "c:\xxxx-runtime\unins000.exe";
有没有 Inno 专家知道问题出在哪里?
【问题讨论】:
-
请注意,在有关此主题的所有现有问题中,
UninstallString是如何拆分为程序路径和参数的。程序路径用双引号括起来,需要删除。 -
感谢您的评论,马丁。我发现了问题 - 在我的脚本 [Run] 部分中,我安装了一个将写入注册表的应用程序。 [UninstallRun] 实际上在安装过程中执行,此时 [Run] 部分中的应用程序尚未执行,因此 reg 未更新。 sUnInstallString(或结果)包含空字符串。我仍在努力寻找解决方案。
标签: inno-setup pascal