Условно включите папки в Inno Setup - PullRequest
2 голосов
/ 30 апреля 2019

Я пытаюсь создать установщик с Inno Setup, который будет статически включать папку, если она существует. Эта папка будет установлена ​​в системе пользователя, если в системе пользователя уже существует определенный каталог.

Например, есть конфигурации, специфичные для 2017, 2018, 2019. Если у есть папка a CC2017, включите ее в установщик. Установщик поместит папку в системе пользователя в папку 2017 года, если она существует.

Я использую переменные, чтобы определить некоторые пути, и отформатировал их без скобок, основываясь на ответе здесь .

#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 упоминаются "файлы", но не папки, поэтому я подозреваю, что он может не поддерживать проверку папок.

Что не так с синтаксисом?

Я использую Inno Setup 6.0.2 на Mac 10.13.6

1 Ответ

1 голос
/ 02 мая 2019

Есть два варианта:

  1. Использование skipifsourcedoesntexist флаг :

    [Files]
    Source: "folder\*"; DestDir: "{app}"; Flags: skipifsourcedoesntexist
    
  2. Использование #if директива препроцессора вместе с DirExists функция препроцессора :

    [Files]
    #if DirExists("folder")
    Source: "folder\*"; DestDir: "{app}"
    #endif
    
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...