ANT 可以参数化 InnoSetup 脚本吗?

Can ANT parametrize InnoSetup script?

构建我们的 java 应用程序(使用 ANT 脚本)的最后一步涉及 Inno Setup 将所有内容打包到一个不错的 windows 安装程序中。

我们现在正在升级我们的 ANT 脚本以生成我们应用程序的 32 位和 64 位版本。因此,我们的问题是:我们如何参数化我们的 Inno Setup 配置文件,以便它可以生成 x86 和 x64 版本(因此它会被 ANT 脚本称为 2x,参数指示 x86/x64)。

在 Inno Setup 配置文件中,只有 1 行需要根据此参数进行更改:

ArchitecturesInstallIn64BitMode=x64

这就是我们从 ANT 调用 Inno Setup 命令行的方式:

<exec executable="C:\Program Files (x86)\Inno Setup 5\iscc.exe">
    <arg value="/cc" />
    <arg value="${dir.create_setup}/CreateSetup.iss" />
</exec>

任何有关如何执行此操作的帮助/提示将不胜感激!

谢谢, 托马斯

使用 copy task 过滤,也可用于其他动态值。
你的 iss 配置文件模板有:

ArchitecturesInstallIn64BitMode=@32or64@

您的 build.xml 有:

<filter token="32or64" value="${32or64}"/>
<copy file="foobar.iss" tofile="foobaz.iss" filtering="true" overwrite="true"/>

<exec executable="C:\Program Files (x86)\Inno Setup 5\iscc.exe">
 <arg value="/cc" />
 <arg value="foobaz.iss" />
</exec>

然后像这样用用户属性 32 或 64 启动你的 ant 文件:

ant -f build.xml -D32or64=x64

ant -f build.xml -D32or64=x86

带过滤的复制任务会将标记 @32or64@ 替换为用户属性 32 或 64 的值,因此 foobaz.iss 具有:

ArchitecturesInstallIn64BitMode=x64

ArchitecturesInstallIn64BitMode=x86