我正在 Inno Setup 中编写一个安装程序,它会安装 Node.js,提取包含所有 Node 项目文件的 zip 文件,然后需要使用 npm install
安装 Node 应用程序。
手动过程包括打开命令提示符,浏览到这些文件所在的目录(在我的例子中,提取到与 {app}
文件夹设置相对应的 Program Files 文件夹),然后运行确切的命令行 npm install --quiet
。但是,在 Inno Setup 中执行此操作时,它失败了...
function InstallNodeApp: Integer;
var
C: String;
begin
C:= 'npm install --quiet';
if not Exec(C, '', ExpandConstant('{app}'), SW_SHOWNORMAL, ewWaitUntilTerminated, Result) then begin
Result:= -1;
end;
end;
我尝试过将 --quiet
放入参数中,并使用此命令行作为参数调用 cmd.exe
以及许多其他尝试组合,但没有任何效果 - 执行失败。我收到的错误始终是系统找不到指定的文件。
。
如何在接收结果/退出代码时执行此 Node 安装?
最佳答案
问题是我使用的是 Exec
,但由于 npm
的性质,它需要使用 shell 命令。因此,正如 TLama 在评论中提到的那样,我使用了 ShellExec 并且一切正常。
function InstallNodeApp: Integer;
var
C, P, D: String;
begin
C:= 'npm';
P:= 'install --silent';
D:= ExpandConstant('{app}');
if not ShellExec('', C, P, D, SW_HIDE, ewWaitUntilTerminated, Result) then begin
Result:= -1;
end;
end;
关于node.js - 如何从 Inno Setup 调用 "npm install"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23419234/