从 NSIS 安装程序中回答用户提示

Answering a user prompt from within NSIS installer

我有一个批处理文件 install_license.bat 可以为我们的软件安装许可证。批处理文件只是 运行s a java class 来完成所需的工作。批处理文件需要两个参数,安装操作和许可证文件路径,这两个参数依次传递给 java class.

C:\MySoftware\install_license.bat install "D:\documents\myLicense.lic"

作为安装程序的一部分,我们希望为用户提供一个选项,让其输入许可路径。如果用户输入路径,上面的批处理文件应该 运行 作为安装过程的一部分,如果没有,则应该跳过许可证安装,即上面的批处理不应该 运行.

我知道如何从安装程序中启动批处理。

但是,实际安装许可证的 java 程序会在以下几行提示用户:

Continue with license file installation? [y/N]

根据用户输入 yesno,继续安装许可证文件。我无法控制 java class 的工作方式,我无法修改它。

有没有办法从 NSIS 处理这种情况。即运行ning批处理时,NSIS通过"y"继续安装许可文件?

这是bat文件:

@REM install_license.bat
@ECHO off

setlocal

set CMD_LINE_ARGS=

REM Gather all command line switches
:next_parm
IF [%1] == [] GOTO break_parm
    set CMD_LINE_ARGS=%CMD_LINE_ARGS% %1
        SHIFT /1
        GOTO next_parm
:break_parm

set LICENSE_PARAMETER=-Dinstalled.licenses.file="%INSTALLED_LICENSE_PATH%"

call "%_MY_JAVA%" %LICENSE_PARAMETER% -DCONSOLE_HOME=. -Dlog4j.configuration=log4j.xml -cp %CLASSPATH% org.somepackage.MyClass %CMD_LINE_ARGS%
endlocal

要将默认结果发送到大多数内部 cmd 命令和一些外部命令,您只需回显结果并将其通过管道传递给命令:

echo y|call "%_MY_JAVA%" %LICENSE_PARAMETER% -DCONSOLE_HOME=. -Dlog4j.configuration=log4j.xml -cp %CLASSPATH% org.somepackage.MyClass %CMD_LINE_ARGS%