在安装过程中,用户可以安装一些服务实例(Service1-ServiceN)。这些服务之间的所有差异 - 配置文件的内容(实际上/ Product_Root/run中只有一个可执行文件被称为不同的命令行参数)。位于ProductRoot/ServiceX/conf中的配置文件。Inno Setup:将文件复制到用户定义的多个目标
文件夹结构看起来像:
/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之间变化。
在单一服务的情况下 - 没有问题。在ssPostInstall步使用通配符创建
文件被复制,目录
[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
更换后在复制的文件执行。
问题。
是否可以使用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
其中我 - 实际上是配置编号。 也就是说是否可以在[File],[Dirs]等部分的安装过程中使用用户从不同目录中复制相同文件的用户收到的信息? 用于在安装过程中以用户设置的不同名称文件数复制单个文件?
或者我只是走错了方向?