Как мне вызвать функцию в NSIS только во время компиляции скрипта?
Вопрос
Я хочу вызвать функцию (которая вычисляет номер моей версии), когда мой скрипт NSIS компилируется, но не во время его выполнения.Возможно ли это?Он использует nsExec
и основные функции манипулирования строками.
Решение 2
Мило!Это возможно:видишь http://nsis.sourceforge.net/Invoking_NSIS_run-time_commands_on_compile-time
Основная идея заключается в том,:
- Скомпилировать отдельный скрипт, который генерирует исполняемый файл
- Запустите исполняемый файл (через
!system
, во время компиляции) в вашем основном скрипте - и это генерирует текстовый файл (который!define
это все, что вам нужно) !include
текстовый файл в вашем основном скрипте
и вуаля!У вас есть некоторые материалы, сгенерированные во время компиляции в вашем скрипте.
Другие советы
Ты мог бы это сделать:
!system '"calculate_version.exe" "tempfile.tmp"'
!searchparse /file "tempfile.tmp" `APP_VERSION=` APPVERSION
Что это делает:вызовы calculate_version.exe (это может быть простой скрипт NSIS, который вызывает вашу функцию).Этот исполняемый файл должен выводить номер версии в tempfile.tmp.Формат версии не имеет значения;в этом примере я выбрал "APP_VERSION =something" (это может быть написано с помощью WriteINIStr
).
В следующей строке мы открываем временный файл и ищем в нем строку, которую мы написали;затем мы устанавливаем ${APPVERSION} на все, что мы там найдем.