【发布时间】: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文件必须建立一些内部重定向。
提前致谢!!!
版本!!!!添加了更多信息
我的“运行可执行文件或批处理文件”操作配置
(还不能提交图片,但我留下了下面的链接)
我的验证脚本在“运行可执行文件或批处理文件”操作之后进入“运行脚本”操作
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