【问题标题】:Redirect stdout and stderr into an Installer Variable [Install4j]将 stdout 和 stderr 重定向到安装程序变量 [Install4j]
【发布时间】:2014-06-05 13:38:39
【问题描述】:

我一直在使用 Install4j 为 Java 应用程序创建一个很酷的安装程序,并用它做了很多事情。现在我想知道我正在使用“运行可执行文件或批处理文件”操作在 BAT 文件中执行的命令发生了什么。因此,我在手册中阅读了此 Action 文档,它说该操作最终可以将 STDOUT 和 STDERR 重定向到 Installer 变量中。 所以,我创建了两个安装程序变量,stdout_response 和 stderr_response。 这两个变量都使用默认值“default_stdout”和“default_stderr”定义。

在操作中,我选择与 STDOUT 和 STDERR 响应相关的“重定向到安装程序变量”选项,并为此重定向设置我的安装程序变量。

我的 BAT 文件执行了一些 ECHO,所以我认为最终会出现一些问题。

在我的“运行可执行文件或批处理文件”操作之后,我定义了一个“运行脚本”操作,我只需在我的安装程序变量上执行 System.out.println(...) 以便执行下一个代码:

System.out.println(context.getVariable("stdout_response")); //打印我的 STDOUT 安装程序变量。

当我的安装程序到达此操作时,它会打印一个空字符串“”,因此我的安装程序变量中设置了一些内容,但不是我想要的值。

对于我的“stderr_response”,设置的值类似于“^C”

有什么我想念的吗?也许BAT文件必须建立一些内部重定向。

提前致谢!!!

版本!!!!添加了更多信息

我的“运行可执行文件或批处理文件”操作配置

(还不能提交图片,但我留下了下面的链接)

Configuration

我的验证脚本在“运行可执行文件或批处理文件”操作之后进入“运行脚本”操作

System.out.println("**********************************************************************************************************");
System.out.println(String.format("Test de Variable STDOUT: %s", (String)context.getVariable("script_response_stdout")));
System.out.println(String.format("Test de Variable STDERR: %s", (String)context.getVariable("script_response_stderr")));
System.out.println("**********************************************************************************************************");
return false;

我的批处理文件

@echo off
cls

set mysql_msi=%1
set mysql_svname=%2
set mysql_data_dir=%3
set mysql_install_dir=%4
set mysql_admin_user=%5
set mysql_admin_password=%6
set mysql_port=%7
set mysql_instance=%8
set mysql_exe=%9

echo mysql_msi: %mysql_msi%
echo mysql_svname: %mysql_svname%
echo mysql_admin_user: %mysql_admin_user%
echo mysql_admin_password: %mysql_admin_password%
echo mysql_port: %mysql_port%
echo mysql_instance: %mysql_instance%
echo mysql_exe: %mysql_exe%

msiexec /i %mysql_msi% /qn INSTALLDIR=%mysql_install_dir% /L* C:\MSI-MySQL-Log.txt

echo Mysql Instance Configuration

%mysql_instance% -i -q ServiceName=%mysql_svname% RootPassword=%mysql_admin_password% ServerType=DEVELOPMENT DatabaseType=MYISAM Port=%mysql_port% RootCurrentPassword=%mysql_admin_password%

echo Terminated

无法发布更多链接,所以我会在这里评论它们!!!!

【问题讨论】:

  • 您是否选择了“等待终止”属性?它只在这种情况下有效。
  • 嗨英戈!!!感谢您的关注。是的,我已经选择了该属性,实际上 Install4J 强迫我选择该属性以便能够在重定向选项中选择“安装程序变量”。
  • 好吧,我忘了它是这样做的。您可以选择“显示控制台窗口”属性并检查实际输出应该是什么吗?
  • 好的,我会把我能提供的所有信息作为主帖的一个版本给你!!!
  • 控制台当前打印的内容(对于bat文件,打开另一个控制台):Starting_ActionBat_File_OutputFinished_Action该错误信息与创建脚本的“return false”响应有关.

标签: variables redirect stdout stderr install4j


【解决方案1】:

如果选择了“运行可执行文件或批处理文件”操作的“显示控制台窗口”属性,则重定向不起作用。

在 install4j 5.1.12 中,将无法再选择此组合。

【讨论】:

    猜你喜欢
    • 2011-05-23
    • 2014-07-22
    • 1970-01-01
    • 2012-08-07
    • 2021-08-19
    • 1970-01-01
    • 2022-01-18
    • 2012-07-14
    • 1970-01-01
    相关资源
    最近更新 更多