Рекурсивное копирование файлов NSIS с использованием CopyFiles вместо команды File - PullRequest
1 голос
/ 20 октября 2011

Для установщика NSIS я использовал эту команду:

SetOutPath $INSTDIR\data
File /r /x *.svn data\newTerrainTiled

, чтобы скопировать мои файлы данных в сам исполняемый файл.Теперь у меня есть больший набор данных, который перерос максимальный размер исполняемого файла установщика.Я попытался изменить свой код на это:

SetOutPath $INSTDIR\data
CopyFiles /r $EXEDIR\data\newTerrainTiled

Но, очевидно, CopyFiles не имеет рекурсивного флага.Я понимаю, что могу создать подкаталоги папки newTerrainTiled один за другим, а затем использовать CopyFiles с подстановочным знаком (*).Я хотел знать, если кто-то уже придумал рекурсивный метод копирования с использованием CopyFiles вместо File для случаев, когда наборы данных становятся большими.

Спасибо.

1 Ответ

8 голосов
/ 20 октября 2011
  • Инструкция File упаковывает файлы из системы, которую вы компилируете на , в установщик.
  • CopyFiles копирует файлы и / или папки из a в b в системе конечных пользователей! (То есть и источник, и назначение находятся в системе конечных пользователей, и исходные файлы должны существовать до того, как вы копируете)

CopyFiles может копировать каталог (со всеми файлами и подпапками), но в вашем случае это будет полезно, только если каталог данных находится на CD / DVD вместе с установщиком.

Другие альтернативы:

  • Поместите файлы данных во внешний архив (zip и т. Д.) И используйте один из плагинов NSIS для извлечения.
  • Добавить данные в конец сгенерированного установщика и извлечь его («неограниченный» размер файла)
...