windows - 如何在 Inno Setup 中处理带空格的路径?

标签 windows inno-setup nssm

在使用 Inno Setup 安装我的程序时,我想允许带有空格的路径(例如 program files)。然而,带空格的路径让我安装的服务崩溃。

Inno 安装文件如下所示:

[Setup]
AppName=Demo
DefaultDirName={pf}\demo

[Files]
Source: "bin\nssm.exe"; DestDir: "{app}"
Source: "bin\jdk1.8.0_152\jre\*"; DestDir: "{app}\jre"; Flags: recursesubdirs
Source: "build\libs\demo.jar"; DestDir: "{app}"

[Run]
Filename: "{app}\nssm.exe"; \
    Parameters: "install demo ""{app}\jre\bin\java.exe"" -jar ""{app}\demo.jar"""
Filename: "{app}\nssm.exe"; Parameters: "start demo"

“nssm.exe”是一个服务包装器,用于将 Java 应用程序作为 Windows 服务执行。

关键部分是这一行:

Filename: "{app}\nssm.exe"; \
     Parameters: "install demo ""{app}\jre\bin\java.exe"" -jar ""{app}\demo.jar"""

如本 question/answer 中所建议,我尝试使用双引号,但这无济于事,服务仍然崩溃。如果我将 DefaultDirName 更改为没有空格的路径,一切都会按预期进行。

DefaultDirName=c:\demo

如何处理带空格的路径?

最佳答案

问题是 Inno Setup 和 nssm 的组合,它们都用双引号转义双引号。这使得需要多个双引号。

解决方法:

Filename: "{app}\nssm.exe"; Parameters: "install demo ""{app}\jre\bin\java.exe"" -jar """"""{app}\demo.jar"""""""

参见 nssm documentation “报价问题”部分。

关于windows - 如何在 Inno Setup 中处理带空格的路径?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47281316/

相关文章:

windows - 使用 Microsoft VC (cl.exe) 2010 (10.0) Express 和 ActivePerl 5.12.4/32 构建 Perl/C 模块

python - 如何解决 Windows 上的 "NotImplementedError"urllib2/gevent 错误?

inno-setup - 设置完成后将变量写入 .txt

inno-setup - 升级时丢弃/TYPE 和/COMPONENTS 参数

inno-setup - 从桌面 innosetup 替换相同的快捷方式

c# - 程序可以在Win 7上运行,但不能在Win 8上运行

c++ - 使用 MinGW/MSYS 和 CMake 对 `libintl_gettext' 的 undefined reference

batch-file - 无法通过 nssm 将批处理文件作为 Windows 服务运行

Windows 批处理 : find command and errorlevel