【问题标题】:How to handle path with spaces in Inno Setup?如何在 Inno Setup 中处理带空格的路径?
【发布时间】:2017-11-14 08:51:50
【问题描述】:

在使用 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 设置代码正确。不是您的应用程序(nssm.exedemo.jar)的问题,而不是安装程序的问题吗?你甚至可以从 Windows 命令行运行 "C:\Program Files\Demo\nssm.exe" install demo "C:\Program Files\Demo\jre\bin\java.exe" -jar "C:\Program Files\Demo\demo.jar" 吗?
  • 感谢您的提示。我从命令行尝试了它,但是使用了相对路径,它在哪里起作用。实际问题是 Inno Setup 和 nssm 都使用双引号和双引号转义(见下面的解决方案)。

标签: windows inno-setup nssm


【解决方案1】:

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

解决方案:

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

参见nssm documentation“引用问题”部分。

【讨论】:

  • 6个"是不是太多了? 4行不行吗?通常计数是 2 的幂,所以 6 对我来说似乎很可疑。
  • 4 是我的第二个猜测,但它不起作用。有时我希望我只需要处理 XML ...
猜你喜欢
  • 1970-01-01
  • 2017-02-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-18
  • 2013-09-10
  • 1970-01-01
相关资源
最近更新 更多