Как поддерживать тысячи файлов с помощью Inno Setup?

#inno-setup #bulk

#inno-setup #массовый

Вопрос:

Я использую Inno Setup для написания установщика для приложения на основе Node.js . Тогда наше узловое приложение (включая модули) состоит из почти 4000 файлов. Установщику необходимо скопировать все эти файлы, а также удалить их во время удаления.

Я уже написал это, чтобы использовать ZIP-файл, который извлекается во время установки, и рекурсивно удалять файлы во время удаления. Но мне пришлось бы написать огромное количество кода, чтобы иметь возможность правильно обрабатывать операции копирования / замены / удаления файлов, в то время как я мог бы зарегистрировать их в своем скрипте Inno Setup и позволить установщику выполнять всю эту работу (для чего он предназначен). Проблема в том, что я не собираюсь вручную писать почти 4k строк кода (и управлять ими при частых добавлениях) для каждого файла. Я мог бы написать небольшое приложение для перебора файлов и написания сценария ISS, но это еще один проект, который я не собираюсь начинать.

Есть ли способ не только добавлять, но и управлять группами файлов в большом количестве в рекурсивных папках? Возможно, для этого предназначена пользовательская среда IDE?

Комментарии:

1. Я бы предположил, что можно указать InnoSetup использовать каталог в качестве источника для установщика, а не отдельные файлы в этой папке. Если вы посмотрите здесь: jrsoftware.org/ishelp/index.php?topic=filessection похоже, что Inno Setup поддерживает указание каталогов в качестве источника. Делает ли это то, что вы ищете?

2. Source: "C:DirWith1000FilesAndFolders*"; DestDir: "{app}"; Flags: ignoreversion createallsubdirs recursesubdirs — все файлы и папки будут включены, а затем удалены во время удаления. Вы можете исключать файлы по требованию с помощью Excludes: "list of file to be excluded"

3. Обратите внимание, что флаг вам нужен только createallsubdirs в том случае, если вы хотите сохранить пустые каталоги, что редко бывает необходимо на практике, но, похоже, все все равно включают его, не задумываясь об этом. 🙂

4. @Miral — есть приложения, которым нужны пустые каталоги 🙂 Попробуйте сыграть, например, в Gothic 1 без Saves папки — игра вылетит при сохранении, поскольку она не может создать (фактически переместить) текущую папку для сохранения Saves в каталог, если она не существует. Таким образом, это более безопасный способ создавать даже пустые каталоги, если вы не до конца знаете, как работает конкретное приложение.

5. Я знаю, что они существуют, но они не должны. 🙂 Это скорее нужно исправить, чем закрепить.

Ответ №1:

Есть много способов добавить все файлы в inno setup:

  • Вы можете использовать Flags: recursesubdirs ;

Например:

     [Files]
    Source: "C:Source Folder*"; DestDir: "{app}"; Flags: recursesubdirs
  
  • Вы можете использовать пакет быстрого запуска inno setup

  • Вы можете установить только Istool

  • ЧТОБЫ поместить файлы в Istool, откройте раздел «Файлы и каталоги» в Istool, перетащите все (выберите тысячу файлов или папку, если есть, с помощью Ctrl A) Тысячи файлов в разделе «Файлы и каталоги» Istool и сохраните.

PS: Если вы используете Istool, сохраните документы и откройте с помощью inno setup. Я лично использую Istool. Спасибо

Комментарии:

1. Такие флаги, как … и т.д. ? Ну, покажите нам больше из них… К вашему сведению, recursesubdirs если для включения файлов из всех подкаталогов заданного пути (по заданному шаблону файлов) и createallsubdirs включает (и создает в целевой системе) также подкаталоги, которые остались пустыми после этого включения. Наконец, эти флаги не имеют значения для одного файла. Что ж, я вижу, что многие разработчики недооценивают развертывание, но это важная часть разработки программного обеспечения, где вы должны полностью понимать, что вы делаете. Речь не о том, чтобы ставить какие-то флаги и т. Д.

2. Спасибо, что сообщили мне. Я не мастер inno setup, я использую inno setup всего 1 год, поэтому я могу не знать всего о inno setup.

3. В первую очередь было хорошо предложить recursesubdirs . Для этого вам не нужен какой-либо сторонний инструмент. Просто без примера, который был для одного файла, и, скорее, без createallsubdirs флага (поскольку этот флаг в большинстве случаев нежелателен, поскольку он создает пустые вложенные папки).

4. @Tlama Я думаю, что Istool прост в использовании, и у него есть все возможности, поэтому вам не нужно писать весь код вручную. что вы думаете?

5. Я думаю, что большинство (если не все) люди здесь согласятся с тем, что в первую очередь вы должны упомянуть встроенные опции. После этого вы можете упомянуть сторонние инструменты (если нет встроенных опций, или их стоит упомянуть). Я не использую ISTool, поэтому не могу прокомментировать эту опцию. Но все же, это похоже на то, как если бы кто-то попросил вас добраться до точки B, которая находится в 200 метрах от точки A, и вы бы предложили им взять такси, хотя они могли бы дойти туда пешком 🙂