我的应用程序具有以下目录,我需要将该目录包含在安装软件包中:
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\*"'
该目录必须这样命名,该怎么办?
答案 0 :(得分:0)
这是由于对Inno Setup中目录/文件结构扫描机制的误解。
首先,正如@Martin Prikryl所指出的那样,可以在其中包含空格的路径。
我认为以下两个规则是解决此问题的关键:
一个不能指定没有独立文件的文件夹(例如,空文件夹或仅包含子目录的文件夹)。就我而言:每个问题我都具有以下文件结构:
bin\Win Files\Libs\
bin\Win Files\Plugins\
因此Source: "bin\Win Files\*";
将失败。如果"bin\Win Files\"
文件夹下至少有一个独立文件,则源行将起作用。
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
的变量中引用)在这里实际上不是问题。