如何在Inno Setup

时间:2016-12-02 22:15:05

标签: inno-setup wildcard

我想将构建中的语言资源文件包含到我们的安装程序中。语言资源文件都具有相同的名称,但位于不同的子文件夹(每个语言环境一个),如下所示:

\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能够自动获取任何新的语言/区域设置我们创建的语言文件夹/文件,无需更改安装程序源。

这可能吗?

1 个答案:

答案 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

     

指示编译器或设置还搜索以查找源目录下的源文件名 /通配符在子目录

其他可能的方法: