9

我目前正在使用 Inno Setup Compiler 为 Windows 创建安装程序,并且一切正常,除非我尝试将文件夹包含到 exe 中。换句话说,我想要的是能够包含一个包含两个文件的文件夹,我希望这个文件夹在安装程序时出现在 .exe 文件所在的位置(C:\Program Files x86\appFolder)。

Inno 有一个添加文件夹的选项,但是由于某种原因,当我选择包含我想要的两个文件的文件夹时,它编译得很好,但是当我实际安装程序时,它实际上添加了两个文件而不是文件夹。

我在网上找到了以下代码行并使用了它,但它实际上包含了一些我不想要的文件夹。我对这行代码的问题是我没有完全理解它,我不知道文件夹路径应该在哪里?什么是排除:“Setup.iss,generated_images\”

Source: "*.*"; Excludes: "Setup.iss,generated_images\*"; DestDir: "{app}"; Flags:replacesameversion recursesubdirs

有人可以解释一下这行代码吗?

谢谢

4

3 回答 3

18

根据您的评论(因为您实际上没有显示您正在谈论的所有代码),我猜您正在做类似的事情:

[Files]
Source: "blah.exe"; DestDir: "{app}"; Flags:replacesameversion
Source: "subfolder\*.*"; DestDir: "{app}"; Flags:replacesameversion

在这种情况下,它正在复制subfolderto的内容{app}

如果要复制它并保留子目录,请指定目录本身:

[Files]
Source: "blah.exe"; DestDir: "{app}"; Flags: replacesameversion
Source: "subfolder"; DestDir: "{app}"; Flags: replacesameversion recursesubdirs

或者指定一个明确的目标目录:

[Files]
Source: "blah.exe"; DestDir: "{app}"; Flags:replacesameversion
Source: "subfolder\*.*"; DestDir: "{app}\subfolder"; Flags:replacesameversion
于 2013-11-14T17:08:32.073 回答
6

我遇到了类似的问题:

我有这个文件夹除其他外:

  • .\WorkFolder\MyEmptyFolder\

我想在已安装的系统上:

  • .\PathToExe\Name.exe
  • .\PathToExe\MyEmptyFolder\

如果文件夹不为空,它可以工作,但有时我需要空文件夹。

我正在使用这条线:

Source: .\WorkFolder\MyEmptyFolder\*; DestDir: {app}\MyEmptyFolder; Flags: ignoreversion recursesubdirs createallsubdirs

我想要脚本做的是(无需每次都重新编写脚本):

  • 如果文件夹为空,则安装时该文件夹将为空但存在
  • 如果文件夹有文件和/或子文件夹,则安装后该文件夹将存在并具有该内容

我的问题是当它为空时,脚本以错误结束,告诉它上面没有文件。它不明白我想要那个文件夹以及当时它上面的所有内容。

感谢您的想法,我尝试了它们并得到了解决方案,这里是:

首先确保将创建文件夹(如果没有包含 Files 部分的文件,则不会创建它):

[Dirs]
Name: {app}\; Permissions: users-modify
Name: {group}\; Permissions: users-modify
Name: {app}\MyEmptyFolder\; Permissions: users-modify

接下来编辑文件部分的行以包括“skipifsourcedoesntexist”:

Source: .\WorkFolder\MyEmptyFolder\*; DestDir: {app}\MyEmptyFolder; Flags: ignoreversion recursesubdirs createallsubdirs skipifsourcedoesntexist

它做我想做的事:包括这样的文件夹及其上的所有内容,无论文件夹是否为空,如果它为空,脚本不会以错误结束。

这是如何工作的?

简单的技巧:如果文件夹为空,文件部分行将失败并且脚本将以错误结束,但使用 skipifsourcedoesntexist 可以避免这种情况,但这会使此类文件夹不存在,这就是我在 Dirs 部分添加此类文件夹的原因,以确保它始终被创建。

希望这有助于其他人不要生气!

于 2015-06-19T11:45:38.193 回答
0

在制作安装文件时 Inno SETUP....单击新文件夹,单击 url,然后单击编辑并命名要包含在安装文件夹中的子文件夹。

于 2017-07-08T10:25:41.560 回答