В процессе установки у пользователя есть возможность установить несколько экземпляров службы (Service1-ServiceN). Все различия между этими сервисами - содержимое конфигурационных файлов (на самом деле есть только один исполняемый файл в/Product_Root/run, который вызывается с различными параметрами командной строки). Конфигурирование файлов, расположенных в ProductRoot/ServiceX/conf.Inno Setup: копировать файл в несколько адресов, определенных пользователем
Папки структура выглядит следующим образом:
/Product_Root
----/bin
----/doc
----/Service1
---------/conf
----/Service2
---------/conf
...
----/ServiceN
---------/conf
В ProductRoot/ServiceX/конф находится, например, service.properties файл с этим содержимым:
#...
ServiceRoot = <%ROOT_DIRECTORY%>
ListenPort = <%PORT%>
#...
Также в/Product_Root/bin скрипты для каждого запуска службы должны присутствовать: Например:
/Product_Root/bin/Service1.run.cmd
/Product_Root/bin/Service2.run.cmd
...
/Product_Root/bin/ServiceN.run.cmd
...
структура файла Сценарий:
service.exe ../<%SERVICE_NAME%>/conf/service.properties
Все значения (например, <% SERVICE_NAME%>, <% PORT%> и т.д.) устанавливается пользователем во время процесса для каждой службы установки. Количество услуг также задается пользователем и может варьироваться от 1 (по умолчанию) до 20-30.
В случае единого обслуживания - проблем нет.
Файлы копируются, каталоги, созданные с помощью
[Files]
Source: {#FilesPath}\bin\*.*; DestDir: {app}\{#FileLocationPrefix}\bin; Flags: ignoreversion restartreplace
Source: {#АilesPath}\conf\*.*; DestDir: {app}\{#FileLocationPrefix}\{code:GetServiceName}\conf; Flags: ignoreversion recursesubdirs createallsubdirs restartreplace;
[Dirs]
Name: {app}\{#FileLocationPrefix}{code:GetServiceName}\conf
После того как в ssPostInstall ступенчатых маски заменить выполняется в скопированных файлов.
Вопрос.
Можно ли использовать Inno Setup + ISTool для того, чтобы сделать то же самое в случае количества услуг?
E.g. что-то вроде этого:
[Files]
#for (i = 0; i < ServiceCount(); ++i)
Source: {#АilesPath}\conf\*.*; DestDir: {app}\{#FileLocationPrefix}\{code:GetServiceName| i}\conf; Flags: ignoreversion recursesubdirs createallsubdirs
где i - на самом деле номер конфигурации. I.e. возможно ли использовать информацию, полученную от пользователя во время процесса установки в разделах [File], [Dirs] и т. д. для многократного копирования одних и тех же файлов в разных каталогах? Для копирования одного файла в количестве файлов с разными именами, установленными пользователем во время процесса установки?
Или я просто иду в неправильном направлении?