我想将构建中的语言资源文件包含到我们的安装程序中。语言资源文件都具有相同的名称,但位于不同的子文件夹(每个语言环境一个),如下所示:
\Release
\bin
\es-MX
Localization.resources.dll
\fr-CA
Localization.resources.dll
etc.
在我的[Files]
部分,我想也许我可以这样做(注意星号的位置):
Source: "..\\source\\Libraries\\Localization\\bin\\Release\\*\\Localization.resources.dll"; \
DestDir: "{app}\\MyApp"; Flags: ignoreversion recursesubdirs
不幸的是,Inno Setup爆炸了,抱怨它找不到任何文件:
编译器错误!
第129行:找不到与“C:\ Development \ HT \ Installers \ .. \ source \ Libraries \ Localization \ bin \ Release \ * \ Localization.resources.dll”匹配的文件
我希望Inno Setup查找包含名为*
的文件的任何子文件夹(因此Localization.resources.dll
),并在安装时创建一个具有相同名称的语言目录(基于什么是通过通配符找到)并将文件复制到该文件夹,对符合条件的每个文件夹执行此操作。
基本上,我想最终得到这个:
..
\MyApp
\es-MX
Localization.resources.dll
\fr-CA
Localization.resources.dll
如果不明显,我宁愿不显式添加源文件夹和目标文件夹名称,因为我们将来会添加更多的语言/区域设置,我希望Inno Setup能够自动获取任何新的语言/区域设置我们创建的语言文件夹/文件,无需更改安装程序源。
这可能吗?
答案 0 :(得分:2)
只需将recursesubdirs
flag与树的根路径和Localization.resources.dll
文件名一起使用即可。它会自动执行您想要的操作:查找树中的所有Localization.resources.dll
文件并将其安装到各自的子文件夹中:
Source: "..\source\Libraries\Localization\bin\Release\Localization.resources.dll"; \
DestDir: "{app}\MyApp"; Flags: ignoreversion recursesubdirs
作为documented(强调我的):
<强> recursesubdirs 强>
指示编译器或设置还搜索以查找源目录下的源文件名 /通配符在子目录。
其他可能的方法:
使用预处理器生成Files
部分。
对于类似的任务,请参阅:
Files
部分,并使用Exec
preprocessor function调用它。例如。使用PowerShell。