Inno Setup: переопределение параметров [Setup] на основе пользовательских функций - PullRequest
1 голос
/ 08 апреля 2020

Я пытаюсь настроить параметр AppVersion в разделе [Setup] на основе строки, которая хранится во внешнем текстовом файле.

Для выполнения sh, что; Я попытался написать функцию, которая открывает этот внешний файл и возвращает версию; Чтобы позже я мог использовать возвращенную версию для установки нескольких параметров.

#define APP_NAME "blah blah"
#define APP_VERSION "4.0.1"

[Setup]
AppName={#APP_NAME}
;;; AppVersion={#APP_VERSION} ;;; This works
AppVersion=GetVersion() ;;; This does not work as I am expecting

[Code]
; Basic example
function GetVersion(): string;
var 
  FileLines: TArrayOfString;
begin
  Result := '1.1.1'
end;

Однако это не сработало. Inno Setup не выполняет функцию. Он фактически использовал имя функции (т.е. GetVersion()) в качестве самой версии.

Мой вопрос: Поддерживает ли Inno Setup такое поведение?


Обновление: Я понял, что могу получить версию из самого EXE-файла вместо того, чтобы открывать текстовый файл и читать версию из него.

#define NAND_DECODER_VERSION GetFileVersion("dist\*.exe")

1 Ответ

2 голосов
/ 08 апреля 2020

Константы , включая в сценарии "константы" , оцениваются во время выполнения (время установки).

Если вам нужно чтобы запустить код во время компиляции, вам нужно использовать препроцессор .

Некоторые связанные вопросы с примерами:

...