Inno Setup无法处理带有空格的源路径

时间:2019-11-05 20:39:43

标签: inno-setup

我的应用程序具有以下目录,我需要将该目录包含在安装软件包中:

bin\Win Files\*

因此,在[Files]部分,我有这一行:

Source: "bin\Win Files\*";     DestDir: "{app}\bin\Win Files"; Flags: ignoreversion; Permissions: everyone-modify

但是在编译时,它总是说由于路径中的空间而找不到该目录,确切的错误消息是:

No files found matching "C:\dev\packages\MyApp\bin\Win Files\*"

我尝试了以下操作,但都失败了:

Source: """bin\Win Files\*"""
Source: "\"bin\Win Files\*\""
Source: '"bin\Win Files\*"'

该目录必须这样命名,该怎么办?

2 个答案:

答案 0 :(得分:0)

这是由于对Inno Setup中目录/文件结构扫描机制的误解。

首先,正如@Martin Prikryl所指出的那样,可以在其中包含空格的路径。

我认为以下两个规则是解决此问题的关键:

  1. 一个不能指定没有独立文件的文件夹(例如,空文件夹或仅包含子目录的文件夹)。就我而言:每个问题我都具有以下文件结构:

    bin\Win Files\Libs\ bin\Win Files\Plugins\

因此Source: "bin\Win Files\*";将失败。如果"bin\Win Files\"文件夹下至少有一个独立文件,则源行将起作用。

  1. Inno安装程序要求在[文件]部分中明确指定每个文件夹,如下所示:

Source: "bin\Win Files\Libs\*"; DestDir: "{app}\bin\Win Files\Libs"; Flags: ignoreversion; Permissions: everyone-modify Source: "bin\Win Files\Plugins\*"; DestDir: "{app}\bin\Win Files\Plugins"; Flags: ignoreversion; Permissions: everyone-modify

由于Source: "bin\Win Files\*";不会自动包含子目录,因此仅用于在bin\Win Files\文件夹下包含独立文件。

答案 1 :(得分:0)

我用这个:

[Files]
; Main application
Source: "{#SourceDir}\*"; DestDir: "{app}\"; Flags: recursesubdirs ignoreversion;

将我的所有文件复制到安装程序中。请注意recursesubdirs标志。我认为路径中的空格(在名为SourceDir的变量中引用)在这里实际上不是问题。