Как мне вызвать функцию в NSIS, вызываемую только во время компиляции скрипта? - PullRequest
1 голос
/ 09 февраля 2009

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

Ответы [ 2 ]

2 голосов
/ 09 февраля 2009

Вы можете сделать это:

!system '"calculate_version.exe" "tempfile.tmp"'
!searchparse /file "tempfile.tmp" `APP_VERSION=` APPVERSION

Что это делает: вызывает Calculate_version.exe (это может быть простой скрипт NSIS, который вызывает вашу функцию). Этот исполняемый файл должен вывести номер версии в tempfile.tmp. Формат версии не имеет значения; в этом примере я выбрал «APP_VERSION = что-то» (это можно записать с помощью WriteINIStr).

В следующей строке мы открываем временный файл и ищем в нем строку, которую мы написали; затем мы устанавливаем $ {APPVERSION} на то, что мы там находим.

1 голос
/ 09 февраля 2009

Сладкое! Это возможно: см. http://nsis.sourceforge.net/Invoking_NSIS_run-time_commands_on_compile-time

Основная идея:

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

и presto! У вас есть некоторые вещи, сгенерированные во время компиляции в вашем скрипте.

...