Inno Setup:包含所有子文件夹的打包文件夹

Posted

技术标签:

【中文标题】Inno Setup:包含所有子文件夹的打包文件夹【英文标题】:Inno Setup: pack folder with all subfolders 【发布时间】:2014-01-14 10:06:29 【问题描述】:

我在.iss 文件中有这一行:

Source: "..\Tcl\*"; DestDir: "app\Tcl"; Flags: ignoreversion

打包文件夹Tcl。但它只需要文件夹内的文件,而不需要 Tcl 内的子文件夹。有没有办法将整个文件夹 Tcl 与所有子文件夹和文件一起使用? (不逐行列出所有子文件夹)。

Inno 设置 5.4.2.

【问题讨论】:

【参考方案1】:

您也可以使用 Inno 向导,但如果您希望这些文件保留在它们从中导入的文件夹中,则需要在之后更正脚本,因为向导会将它们放入应用程序的默认文件夹中。

向导将生成:

 [Files]
 Source: "..\Tcl\*"; DestDir: "app; Flags: ignoreversion recursesubdirs

如果您需要维护您需要的文件夹结构:

 [Files]
 Source: "..\Tcl\*"; DestDir: "app\Tcl"; Flags: ignoreversion recursesubdirs

从 5.6.1 开始的 Inno Wizard 更新(2018 年 8 月 14 日) Inno 设置脚本向导现在可以选择指定子文件夹。在向导的 Application Files 步骤中,使用 Add Folder... 按钮,然后在选择要添加的文件夹后,确保在列表,然后单击 Edit... 并在 Destination Subfolder 文本框下,指定您希望之前选择的文件夹内容的位置。

【讨论】:

这节省了我很多时间和挫败感,tks! 想知道为什么这不是默认行为。当您的应用发生这种情况时,很难调试【参考方案2】:

是的,有。只需将recursesubdirs 标志包含到您的[Files] 部分条目中。帮助说明此标志如下:

指示编译器或安装程序也搜索源 源目录下的子目录中的文件名/通配符。

所以,你应该做的就是这样修改你的[Files] 部分条目:

[Files]
Source: "..\Tcl\*"; DestDir: "app\Tcl"; Flags: ignoreversion recursesubdirs

【讨论】:

Source: "..\Tcl"; DestDir: "app"; Flags: ignoreversion recursesubdirs 也可以吗? @Septagram 从我自己尝试它似乎导致编译错误..\Tcl not found

以上是关于Inno Setup:包含所有子文件夹的打包文件夹的主要内容,如果未能解决你的问题,请参考以下文章

NSIS 或 Inno Setup打包软件如何得到当前文件名

inno setup如何打包超过2G的东西

inno setup打包的安装文件更换位置后图标改变了

inno setup打包成安装文件

Inno Setup 编译器”如何打包 javaWeb 应用程序,自动设置环境变量

使用 Inno Setup 编译器打包文件夹