У меня есть установщик, работающий с NSIS, который я сейчас обновляю.В некоторых моментах установщик должен настроить пакеты, заменив пути или значения в файлах конфигурации.Эти конфигурационные файлы содержат заполнители, которые заменяются любым инструментом развертывания, который я использую (NSIS для этого конкретного случая).
Скрипты - это в основном скрипты PHP, написанные для выполнения некоторых простых задач, которые были бы чрезвычайно сложными вNSIS.По какой-то причине я продолжаю возвращаться к тому, чтобы мои скрипты PHP заменяли заполнители сами по себе вместо того, чтобы делать это в скрипте NSIS, что просто неправильно.Мой код выглядит следующим образом:
nsExec::ExecToStack '"$INSTDIR\Php\php.exe" "$INSTDIR\Apache\tools\findport.php"'
pop $1 ; return code
pop $2 ; port number
!insertmacro _ReplaceInFile "Apache\conf\httpd.conf" "APACHE_PORT" "$2"
Макрос _ReplaceInFile происходит от http://nsis.sourceforge.net/ReplaceInFile и прекрасно работает, если я использую $ INSTDIR вместо $ 2 в приведенном выше примере.Отображение $ 2 в MessageBox показывает номер порта просто отлично.
Я предполагаю, что я делаю что-то не так, но я не могу понять, что это такое, и отладка является проблемой с NSIS.
Спасибо,