在使用Inno安装程序安装我的程序时,我希望允许有空格的路径(例如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“是作为windows服务执行java应用程序的服务包装器。
关键的部分是这条线:
Filename: "{app}\nssm.exe"; \
Parameters: "install demo ""{app}\jre\bin\java.exe"" -jar ""{app}\demo.jar"""
正如在这个问题/回答中所建议的,我尝试使用双引号,但这没有帮助,服务仍然崩溃。如果我将DefaultDirName
更改为没有空格的路径,一切都按预期工作。
DefaultDirName=c:\demo
如何处理带有空格的路径?
发布于 2017-11-14 13:34:50
问题是Inno安装程序和nssm的结合,它们都是用双引号转义双引号。这使得多个双引号成为必要。
解决方案:
Filename: "{app}\nssm.exe"; Parameters: "install demo ""{app}\jre\bin\java.exe"" -jar """"""{app}\demo.jar"""""""
参见nssm文档一节“引证问题”。
https://stackoverflow.com/questions/47281316
复制相似问题