Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/maven/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Installation 如何使用Inno安装编译器在exe文件中包含文件夹_Installation_Windows Installer_Inno Setup - Fatal编程技术网

Installation 如何使用Inno安装编译器在exe文件中包含文件夹

Installation 如何使用Inno安装编译器在exe文件中包含文件夹,installation,windows-installer,inno-setup,Installation,Windows Installer,Inno Setup,我目前正在使用Inno Setup Compiler为Windows创建一个安装程序,除了尝试在exe中包含一个文件夹外,一切正常。换句话说,我希望能够包含一个包含两个文件的文件夹,我希望在安装程序时,该文件夹显示在.exe文件所在的位置(C:\Program files x86\appFolder) Inno有一个添加文件夹的选项,但由于某些原因,当我选择包含我想要的两个文件的文件夹时,它可以很好地编译,但当我实际安装程序时,它实际上添加了两个文件,而不是文件夹 我在网上找到了下面这行代码,并

我目前正在使用Inno Setup Compiler为Windows创建一个安装程序,除了尝试在exe中包含一个文件夹外,一切正常。换句话说,我希望能够包含一个包含两个文件的文件夹,我希望在安装程序时,该文件夹显示在.exe文件所在的位置(C:\Program files x86\appFolder)

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

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

有人能这么好心地解释这行代码吗

谢谢你的评论(因为你没有实际展示你所说的所有代码),我想你正在做的是:

[Files]
Source: "blah.exe"; DestDir: "{app}"; Flags:replacesameversion
Source: "subfolder\*.*"; DestDir: "{app}"; Flags:replacesameversion
在这种情况下,它将
子文件夹的内容复制到
{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

我也遇到了类似的问题:

我有这个文件夹和其他东西:

  • .\WorkFolder\MyEmptyFolder\
我希望在已安装的系统上执行以下操作:

  • .\PathToExe\Name.exe
  • .\PathToExe\MyEmptyFolder\
若文件夹不是空的,它会工作,但有时我需要空文件夹

我用的是这句话:

Source: .\WorkFolder\MyEmptyFolder\*; DestDir: {app}\MyEmptyFolder; Flags: ignoreversion recursesubdirs createallsubdirs
我希望脚本做的是(无需每次重新编写脚本):

  • 如果文件夹为空,则在安装时,文件夹将为空但存在
  • 如果文件夹中有文件和/或子文件夹,则在安装时该文件夹将存在并包含该内容
我的问题是当它为空时,脚本以一个错误结束,告诉它上面没有文件。它不明白我想要那个文件夹,以及那个时候可能在上面的所有东西

谢谢你的想法,我尝试了一下,得到了解决方案,如下所示:

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

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

它实现了我想要的:包括这样的文件夹和它上面的所有内容,无论文件夹是否为空,脚本都不会在它为空时以错误结束

这是怎么回事

简单技巧:如果文件夹为空,文件节行将失败,脚本将以错误结束,但使用SkipiFSourceDoesnTexsist可以避免这种情况,但这会使这样的文件夹不存在,这就是为什么我在Dirs节上添加这样的文件夹,以确保始终创建它


希望这能帮助其他人不要生气

将安装文件设置为Ino setup时…单击新建文件夹,单击url,然后单击编辑并命名要包含在安装文件夹中的子文件夹。

它应该包含所有子目录(
递归subdirs
)中的所有文件(
*.
)从脚本的位置排除
Setup.iss
文件和
生成的\u images
子文件夹中的所有文件。我通常将脚本存储在不同的文件夹中,因此,如果我添加绝对路径并去掉exclude语句,应该可以工作,对吗?来源:“*C:\Users\userName\Documents”;DestDir:“{app}”;Flags:replacesameversion recurseSubdirAssure,该
排除
参数仅用于排除。如果您不想从
目录中排除任何内容(当然可以是绝对或相对路径,但不仅仅是存储脚本的路径),请不要使用它。我添加了一个绝对路径,但它不起作用,它添加了指定文件夹中的内容,而不是文件夹本身。我将.iss脚本移动到与.exe相同的文件夹中,并使用了源:“.”;。。。它工作得很好,但是它也添加了.o文件和.txt文件,我知道我可以通过添加每个文件的名称来排除它们,但是它们太多了。有没有办法说排除所有的.txt文件?非常感谢您的帮助。以下是排除具有相同扩展名的所有文件所需执行的操作
源代码:“***”;排除:“scriptName.iss、*.txt*、*.o*”;DestDir:“{app}”;标志:replacesameversion recursesubdirs
基本上用星号围绕扩展名,并用comas
*.txt*,*.cpp*
skipifsourcedoesntexist关键字分隔每个扩展名。谢谢
Source: .\WorkFolder\MyEmptyFolder\*; DestDir: {app}\MyEmptyFolder; Flags: ignoreversion recursesubdirs createallsubdirs
[Dirs]
Name: {app}\; Permissions: users-modify
Name: {group}\; Permissions: users-modify
Name: {app}\MyEmptyFolder\; Permissions: users-modify
Source: .\WorkFolder\MyEmptyFolder\*; DestDir: {app}\MyEmptyFolder; Flags: ignoreversion recursesubdirs createallsubdirs skipifsourcedoesntexist