node.js - 如何从 Inno Setup 调用 "npm install"?

标签 node.js command-line npm inno-setup

我正在 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/

相关文章:

node.js - 如何使用restify上传文件

node.js - 即使不存在唯一约束, Mongoose 唯一验证错误

node.js - 从 REST 调用返回对象

command-line - 从环境变量中去除回车符 - XP 命令行

javascript - 如何将用 ES6 编写的模块发布到 NPM?

node.js - Sequelize cli 模型创建

linux - 通过在 mac 上复制使文本文件增长

command-line - 为特定分支创建 Mercurial 日志

node.js - express.js 连接模块出现问题

node.js - 运行更新后 npm 消失了