Как мне вызвать функцию в NSIS только во время компиляции скрипта?

StackOverflow https://stackoverflow.com/questions/527371

  •  22-08-2019
  •  | 
  •  

Вопрос

Я хочу вызвать функцию (которая вычисляет номер моей версии), когда мой скрипт NSIS компилируется, но не во время его выполнения.Возможно ли это?Он использует nsExec и основные функции манипулирования строками.

Это было полезно?

Решение 2

Мило!Это возможно:видишь http://nsis.sourceforge.net/Invoking_NSIS_run-time_commands_on_compile-time

Основная идея заключается в том,:

  1. Скомпилировать отдельный скрипт, который генерирует исполняемый файл
  2. Запустите исполняемый файл (через !system, во время компиляции) в вашем основном скрипте - и это генерирует текстовый файл (который !defineэто все, что вам нужно)
  3. !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} на все, что мы там найдем.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top