如何将参数从 Java FX Ant 任务传递到 Inno Setup?

How to pass parameters from Java FX Ant task to Inno Setup?

我是JavaFX的新手,对Ant只有一些基础知识。目前我正在学习如何使用 FX Ant 任务来部署应用程序。 编辑: 通过使用 <fx:deploy nativeBundles="exe" ../> Ant 自动使用 Inno Setup 创建扩展名为 .exe 的安装文件。

由于我们公司有一些关联公司,所以我们的大部分应用程序都需要为每个关联公司部署一次。这是因为创建了一些 Windows 注册表条目,它们应该看起来像这样(不是我的想法,管理层希望它像这样!):

"HKCU\Software\affiliated company name\AppName\Settings"

现在我想知道,是否可以将参数从我的 build.xml 传递到 .iss 以动态插入粗体部分。

我找到了 this 问题,其中传递 /DMyParameterName=MyValue 建议使用 Inno Setup 编译器 (ISC),但我不知道如何从 build.xml 执行此操作,因为我找不到任何对 ISC 的直接调用。

希望您能理解我的问题(英语不是我的母语)。如果您需要更多信息来帮助我,请随时询问,我会尽快添加它们。

Java FX 不允许您将任何附加参数传递给 ISCC.exe

至少根据 OpenJFX 源代码:

//run candle
ProcessBuilder pb = new ProcessBuilder(
        TOOL_INNO_SETUP_COMPILER_EXECUTABLE.fetchFrom(params),
        "/o"+outdir.getAbsolutePath(),
        getConfig_ExeProjectFile(params).getAbsolutePath());
pb = pb.directory(EXE_IMAGE_DIR.fetchFrom(params));
IOUtils.exec(pb, VERBOSE.fetchFrom(params));

您可以设置环境变量而不是参数,并使用此语法使用它:

{%VARNAME}

请参阅 Inno Setup Constants 文档。


对于那些寻找纯 Ant 解决方案(没有 Java FX)的人:

Inno Setup 编译器 (ISCC.exe) 是一个普通的控制台可执行文件。

你运行使用基本的编译器Exec Ant task:

<project>
  <exec executable="ISCC.exe">
    <arg value="Example1.iss"/>
    <arg value="/DMyParameterName=MyValue"/>
  </exec>
</project>