Друстрочный #define в Inno setup
От: Evgeny Германия  
Дата: 17.06.16 08:06
Оценка:
Добрый день всем!

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

Задача такова, что нужно распаковать файлы с опциями (flags), которые зависят от результата одной из функций в разделе [code]

Чтобы избежать удвоения размера секции [FILES], пытаюсь реализовать это через #define:

#define FILE(str Name) \
"Source: """ + Name + """; DestDir: ""Folder""; Flags: ignoreversion; check: IsInstallationKind(1); + ???NEWLINE??? + \
Source: """ + Name + """; DestDir: ""Folder""; Flags: onlyifdoesntexist; check: IsInstallationKind(0); "

Но не могу заставить препроцессор перейти на следующую строку — он пытается писать всё одной строкой, что противоречит синтаксису раздела [FILES].

Какие будут идеи?
Bозможно ли такое принципиально?
Или может есть способ вернуть значения Flags функцией?
Re: Друстрочный #define в Inno setup
От: Mr.Delphist  
Дата: 23.06.16 15:01
Оценка:
Здравствуйте, Evgeny, Вы писали:

E>#define FILE(str Name) \

E>"Source: """ + Name + """; DestDir: ""Folder""; Flags: ignoreversion; check: IsInstallationKind(1); + ???NEWLINE??? + \
E>Source: """ + Name + """; DestDir: ""Folder""; Flags: onlyifdoesntexist; check: IsInstallationKind(0); "

E>Но не могу заставить препроцессор перейти на следующую строку — он пытается писать всё одной строкой, что противоречит синтаксису раздела [FILES].


Неужто обычные \n или \r\n игнорируются? В крайнем случае заглянуть в сырцы InnoSetup (благо они доступны) и посмотреть, чем он обрабатывает скриптовый стрим (возможно, там специфические правила экранирования символов типа %n или
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.