В процессе установки пользователь имеет возможность установить количество некоторых экземпляров сервиса (Service1-ServiceN). Все различия между этими службами - содержимое файлов конфигурации (на самом деле в / Product_Root / run есть только один исполняемый файл, который вызывается с разными параметрами командной строки). Файлы конфигурации, расположенные в ProductRoot / ServiceX / conf.
Структура папок выглядит следующим образом:
/Product_Root
----/bin
----/doc
----/Service1
---------/conf
----/Service2
---------/conf
...
----/ServiceN
---------/conf
В ProductRoot / ServiceX / conf находится, например, файл 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 для того же самого в случае количества служб?
например. что-то вроде этого:
[Files]
#for (i = 0; i < ServiceCount(); ++i)
Source: {#АilesPath}\conf\*.*; DestDir: {app}\{#FileLocationPrefix}\{code:GetServiceName| i}\conf; Flags: ignoreversion recursesubdirs createallsubdirs
где i - фактически номер конфигурации.
То есть Можно ли использовать информацию, полученную от пользователя в процессе установки в разделах [File], [Dirs] и т. д., для многократного копирования одних и тех же файлов в разные каталоги?
Для копирования одного файла в число файлов с разными именами, заданными пользователем в процессе установки?
Или я просто иду в неправильном направлении?