Рассказ
Привет всем,
Есть ли способ рекурсивного перемещения каталога с NSIS во время компиляции?
Спасибо
Длинная история
Привет всем,
Я пытаюсь создать установщик с NSIS для программного обеспечения, которое я разрабатываю.Устанавливаемая нами система сборки создает папку со всем необходимым для запуска этого программного обеспечения в Windows (библиотеки DLL, исполняемые файлы, изображения, библиотеки, примеры и т. Д.).В этой папке +400 файлов и папок.С HM NIS Edit можно было сгенерировать последовательность «File» и «SetOutPath», необходимую для установки всего контента, но она просто огромна, уродлива, и если некоторые файлы добавляются или удаляются, то мы должны изменить скрипт вручную.
Итак ... мы удалили сгенерированную последовательность «File» и «SetOutPath» и просто добавили:
File /r "C:\path\to\output\dir"
Отлично работает ... но теперь у нас проблема с деинсталляторомпотому что мы не можем сделать это:
RMDir /r $INSTDIR
Потому что это опасно (как указано здесь: http://nsis.sourceforge.net/Docs/Chapter4.html#4.9.1.8).
Итак, мы попытались выполнить приведенную там рекомендацию: http://nsis.sourceforge.net/Uninstall_only_installed_files
Это решение создает журнал, в котором NSIS записывает все выполненные операции «Файл» и «SetOutPath», поэтому он может откатиться (удалить) при удалении. Проблема в том, что включенные макросы не поддерживаютрекурсивная опция «Файл».
Я пытался реализовать рекурсивную версию, рекурсивно гуляя по папке, но я думаю, что я делаю это неправильно (ну, я почти уверен: P):
!include "RecFind.nsh"
Section "Principal" SEC01
${SetOutPath} "$INSTDIR"
SetOverwrite try
${RecFindOpen} "..\executable" $R0 $R1
DetailPrint "Looking into directory: $R0"
${SetOutPath} "$R0"
${RecFindFirst}
DetailPrint "Looking file: $R0\$R1"
${File} "$R0" "$R1"
${RecFindNext}
${RecFindClose}
Используя это http://nsis.sourceforge.net/RecFind:_Recursive_FindFirst,_FindNext,_FindClose Но я думаю, что это работает только во время установки.
Решение, которое я нашел до сих пор, заключается в создании сценария установщика с файлом NSIS, используемым в качестве шаблона (с некоторым заполнителемтокен для списка «Файл» и «SetOutPath»), сценарий Python, который проходит по выходному каталогу и создает необходимую последовательность «Файл» и «SetOutPath», а затем записывает окончательный сценарий NSIS ... но я действительно неt like it: S
Итак, мой вопрос:
Есть ли способ рекурсивного перемещения каталога с NSIS во время компиляции?
(Или как мне добитьсяэто только с NSIS?).
Заранее спасибо.
С уважением