You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Windows下Inno Setup安装时无法找到node.msi及nssm.exe文件

Inno Setup安装时找不到node.msi和nssm.exe的解决办法

问题现象

接手的Inno Setup脚本可正常生成安装包,但安装过程中提示找不到node-v20.10.0-x64.msi和nssm.exe文件,调整文件存放目录后问题依旧。

核心原因与解决步骤

1. 移除external标记(最常见问题)

脚本中[Files]段的external标记表示不将文件打包进安装包,仅在安装时从本地源路径读取。如果安装包单独分发,用户机器上没有对应路径的文件,必然报错。

修改[Files]段:

[Files]
Source: "../server/*"; DestDir: "{app}\server"; Flags: ignoreversion recursesubdirs createallsubdirs; Excludes: "node_modules\.bin" 
Source: "../client/build/*"; DestDir: "C:\inetpub\wwwroot"; Flags: ignoreversion recursesubdirs createallsubdirs
Source: "web.config"; DestDir: "C:\inetpub\wwwroot"; Flags: ignoreversion
; 移除external标记,将文件打包进安装包
Source: "node-v20.10.0-x64.msi"; DestDir: "{app}"; Flags: ignoreversion
Source: "nssm.exe"; DestDir: "{app}"; Flags: ignoreversion
; NOTE: Don't use "Flags: ignoreversion" on any shared system files

2. 验证预处理器变量定义

脚本中使用了{#NODE}和{#NSSM}变量,需确保脚本开头已正确定义这些变量,且文件名与实际文件完全一致:

#define MyAppShortName "你的服务名称"  # 替换为实际服务名
#define NODE "node-v20.10.0-x64.msi"
#define NSSM "nssm.exe"

3. 确认编译时源文件路径正确

Source: "node-v20.10.0-x64.msi"是相对路径,编译时该文件必须放在Inno Setup脚本所在目录(或对应相对路径下)。如果编译时文件不在指定位置,即使移除external标记,文件也不会被打包进安装包,安装时仍会找不到。

4. 解决权限问题

{app}默认指向Program Files目录,普通用户安装时可能无写入权限,导致文件无法复制到目标路径。可在[Setup]段添加管理员权限要求:

[Setup]
PrivilegesRequired=admin

修改后的完整[Run]段示例

[Run]
Filename: "{sys}\msiexec.exe"; Parameters: "/passive /i ""{app}\{#NODE}""";

Filename: "{sys}\netsh.exe"; Parameters: "advfirewall firewall add rule name=""Node In"" program=""{commonpf64}\nodejs\node.exe"" dir=in action=allow enable=yes"; Flags: runhidden;
Filename: "{sys}\netsh.exe"; Parameters: "advfirewall firewall add rule name=""Node Out"" program=""{commonpf64}\nodejs\node.exe"" dir=out action=allow enable=yes"; Flags: runhidden;

Filename: "{app}\{#NSSM}"; Parameters: "install {#MyAppShortName} ""{commonpf64}\nodejs\node.exe"" "; Flags: runhidden;
Filename: "{app}\{#NSSM}"; Parameters: "set {#MyAppShortName} AppDirectory ""{app}\server"" "; Flags: runhidden;
Filename: "{app}\{#NSSM}"; Parameters: "set {#MyAppShortName} AppParameters ""index.js"" "; Flags: runhidden;
Filename: "{app}\{#NSSM}"; Parameters: "set {#MyAppShortName} AppStdout ""{app}\logs\stdout.log"" "; Flags: runhidden;
Filename: "{app}\{#NSSM}"; Parameters: "set {#MyAppShortName} AppStderr ""{app}\logs\stderr.log"" "; Flags: runhidden;
Filename: "{sys}\net.exe"; Parameters: "start {#MyAppShortName}"; Flags: runhidden;

内容的提问来源于stack exchange,提问作者Terje Nygård

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.01 00:57:20