如何在 Inno Setup 中处理带空格的路径?
How to handle path with spaces in Inno Setup?
我想在使用 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 部分 "Quoting issues"。
我想在使用 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 部分 "Quoting issues"。