在Inno Setup中有条件地包含文件夹

时间:2019-04-30 20:23:12

标签: inno-setup

我正在尝试使用Inno Setup创建一个安装程序,该安装程序将静态包含一个文件夹(如果存在)。如果用户系统上已经存在特定目录,则该文件夹将安装在用户系统上。

例如,有一些特定于2017、2018、2019的配置。如果我有一个CC2017文件夹,请将其包含在安装程序中。如果该文件夹存在,安装程序会将其放在用户系统的2017文件夹中。

我使用变量来定义一些路径,并根据the answer here将其格式化为不带括号的形式。

#ifexist projpath + "\" + reponame + "\Plug-Ins\Windows\CC2017\"  
Source: "{#projpath}\{#reponame}\Plug-Ins\Windows\CC2017\{#pluginname}\*"; \
  DestDir: "{sd}\Program Files\Adobe\Adobe InDesign CC 2017\Plug-Ins\{#pluginname}"; \
  Flags: ignoreversion recursesubdirs createallsubdirs replacesameversion; \
  Check: MyDirCheck(ExpandConstant('{sd}\Program Files\Adobe\Adobe InDesign CC 2017'))  
#endif

我知道它没有正确检查,因为当我添加ifexist指令时,文件的大小要小得多。 Inno Setup docs提到“文件”,但没有提到文件夹,因此我怀疑它可能不支持检查文件夹。

语法有什么问题?

我正在Mac 10.13.6上使用Inno Setup 6.0.2

1 个答案:

答案 0 :(得分:1)

有两种选择:

  1. 使用skipifsourcedoesntexist flag

    delta
  2. #if preprocessor directive一起使用DirExists preprocessor function

    [Files]
    Source: "folder\*"; DestDir: "{app}"; Flags: skipifsourcedoesntexist
    
相关问题