inno-setup - 如何在 Inno Setup 中使用通配符递归包含文件夹/文件

标签 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 崩溃了,提示找不到任何文件:

Compiler Error!
Line 129: No files found matching "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 自动选择任何新的语言文件夹/我们创建的文件而无需更改安装程序源。

这可能吗?

最佳答案

只需使用 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

Instructs the compiler or Setup to also search for the Source filename/wildcard in subdirectories under the Source directory.



其他可能的方法:
  • 生成 Files部分使用预处理器。
    对于类似的任务,请参阅:
  • Inno Setup - Recurse sub directories without creating those same sub directories
  • Generating Inno Setup file flags programmatically
  • Inno Setup: Dynamically add a component for all files in a folder and its subfolders

  • 生成 Files部分使用外部脚本语言(具有比 Inno Setup 预处理器更好的功能)并使用 Exec preprocessor function 调用它.例如。使用 PowerShell。
  • 关于inno-setup - 如何在 Inno Setup 中使用通配符递归包含文件夹/文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40941667/

    相关文章:

    inno-setup - Inno Setup - 当失败时如何在 [Run] 部分重复执行 .exe 文件

    inno-setup - 如何使用Inno Setup注册.NET DLL

    inno-setup - "colon (' : ') expected" compiler error on character range in case statement in Inno Setup Pascal script

    installation - Inno Setup 在 Windows x64 上设置命名管道

    sql - 优化以通配符开头的 LIKE 表达式

    java - 这是允许通配符搜索用户的正确方法吗?

    java - Java泛型方法返回类型中的上界和下界通配符

    perl 替换文件夹中的多个文件

    installation - Inno-Setup:安装后打开链接:打开链接时的防病毒警报

    java - 传递给方法的无限通配符