gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-02 01:19:28 25 4
gpt4 key购买 nike

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

\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/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com