我正在使用Install4j 6.1.6,并尝试执行以下操作:
我想用来自安装程序的参数在外部运行一个jar文件(第一个屏幕),然后在第二个屏幕上显示结果。
所以我在第一个屏幕上的“运行可执行文件或批处理文件”操作上选中了“可以多次执行”。
现在,当我在输入字段中输入错误数据时,单击Next>
脚本将运行并失败,第二个屏幕将显示有错误。my-returncode和my-stderr包含退出代码和错误消息。
然后我单击
next>
然后这次脚本成功运行,但是我仍然得到前面的错误,因为my-returncode和my-stderr没有更新,它们仍然包含最后的错误消息和退出代码!
我已经意识到第二个动作(转到下一个屏幕)是完全没有必要的,所以我删除了它。
这仍然没有解决我的问题,下面是
.install4j/installation.txt
中的相关部分:
[INFO] com.install4j.runtime.beans.screens.FormScreen [ID 1199]: Show screen
Variable changed: shouldLaunchExternalScript=true[class java.lang.String]
Variable changed: externalScriptDataFolder=F:\badfolderpath[class java.lang.String]
这是用户可以选择启动此外部脚本并设置数据文件夹的屏幕。我点击了“启动脚本”单选按钮,设置了一个错误的文件夹路径。
[INFO] com.install4j.runtime.beans.actions.misc.RunExecutableAction [ID 1367]: Execute action
Property arguments: [-cp, ./*, -Ddata.dir=F:\badfolderpath, ...]
Property rollbackSupported: false
Property returnCodeVariable: my-returncode
Property stdoutRedirectionMode: No redirection
Property stdoutVariableName:
Property workingDirectory: ...
Property failOnStderrFileError: false
Property failOnStdinFileError: false
Property failOnStdoutFileError: false
Property rollbackExecutable: null
Property rollbackArguments: null
Property rollbackWorkingDirectory: null
Property stderrRedirectionMode: To installer variable
Property stderrVariableName: my-stderr
Property stdinRedirectionMode: No redirection
Property environmentVariables: {}
Property keepConsoleWindow: true
Property showWindowsConsole: false
Property useRollbackExecutable: false
Property includeParentEnvironmentVariables: true
Property stdinString:
Property timeout: 0
Property stdinFile: null
Property stderrFile: null
Property stdoutFile: null
Property wait: true
Property waitForStreams: true
Property executable: c:\users\user\appdata\local\temp\e4jb23d.tmp_dir1564671223\jre\bin\java
Property logArguments: true
used working dir: ...
execute using batch file
[ERROR] com.install4j.runtime.beans.actions.misc.RunExecutableAction [ID 1367]: return value is 1
[INFO] com.install4j.runtime.beans.actions.misc.RunExecutableAction [ID 1367]: Variable changed: my-stderr
Variable changed: my-returncode=1[class java.lang.Integer]
[ERROR] com.install4j.runtime.beans.actions.misc.RunExecutableAction [ID 1367]: return value is 1
Execute action not successful after 19696 ms
[INFO] com.install4j.runtime.beans.screens.FormScreen [ID 1199]: command: move 1 screens, executing actions, checking condition
[INFO] com.install4j.runtime.beans.screens.FormScreen [ID 1360]: Show screen
[INFO] com.install4j.runtime.beans.screens.FormScreen [ID 1360]: command: go back 1 screens using history
[INFO] com.install4j.runtime.beans.screens.FormScreen [ID 1199]: Show screen
Variable changed: shouldLaunchExternalScript=true[class java.lang.String]
Variable changed: externalScriptDataFolder=F:\goodfolderpath[class java.lang.String]
[INFO] com.install4j.runtime.beans.actions.misc.RunExecutableAction: Execute action
Property arguments: [-cp, ./*, -Ddata.dir=F:\goodfolderpath, ...]
Property rollbackSupported: false
Property includeParentEnvironmentVariables: true
Property stderrFile: null
Property executable: c:\users\user\appdata\local\temp\e4jb23d.tmp_dir1564671223\jre\bin\java
Property stdinString:
Property wait: true
Property stdinFile: null
Property stdoutFile: null
Property waitForStreams: true
Property logArguments: true
Property timeout: 0
Property stderrVariableName: my-stderr
Property stdinRedirectionMode: No redirection
Property rollbackArguments: null
Property stdoutRedirectionMode: No redirection
Property rollbackWorkingDirectory: null
Property workingDirectory: ...
Property stdoutVariableName:
Property environmentVariables: {}
Property returnCodeVariable: my-returncode
Property rollbackExecutable: null
Property stderrRedirectionMode: To installer variable
Property useRollbackExecutable: false
Property failOnStdinFileError: false
Property failOnStdoutFileError: false
Property failOnStderrFileError: false
Property showWindowsConsole: false
Property keepConsoleWindow: true
used working dir: ...
execute using batch file
Variable changed: my-stderr
Variable changed: my-returncode=0[class java.lang.Integer]
Execute action successful after 16416 ms
脚本成功运行,变量被更改(my-returncode是1,现在是0)。
[INFO] com.install4j.runtime.beans.screens.FormScreen [ID 1199]: command: move 1 screens, executing actions, checking condition
[INFO] com.install4j.runtime.beans.screens.FormScreen [ID 1360]: Show screen
但是,在结果屏幕上,我仍然看到未更新的、以前的my-stderr和my-returncode值,表示运行外部脚本时出错。
我可以通过在第二个屏幕的预激活脚本中添加这一行来解决这个问题:
formEnvironment.reinitializeFormComponents();
页面跳转 操作完成后,成功或失败页面跳转可以使用 控制器基类的success,error方法: success方法 /** * 操作成功跳转的快捷方法 * @access protected * @param mixed $msg 提示信息 * @param string $url 跳转的URL地址 * @param mixe
页面跳转 操作完成后,成功或失败页面跳转可以使用 控制器基类的success,error方法: success方法 /** * 操作成功跳转的快捷方法 * @access protected * @param mixed $msg 提示信息 * @param string $url 跳转的URL地址 * @param mixe
我试图用apache 2.4配置PHP,每次我运行localhost/phpinfo.php,它都会向我显示代码。 使用的浏览器:apache服务器http pd conf文件中的chrome更改:LoadMoulesphp7_module"C:/php/php7apache2_4.dll"addHandler应用程序/x-http pd-php. php PHPIniDir"c:/php" ph
问题内容: 服务器PHP升级后,Apache 2.0上的PHP版本5.6.2出现以下错误 我怎样才能解决这个问题? 问题答案: 编辑文件名:core / Common.php,行号:257 之前 后 由NikiC添加 在PHP赋值表达式中,始终返回赋值。因此$ _config [0] =&$ config返回$ config- 但不是变量本身,而是其值的副本。并且返回对临时值的引用不是特别有用(更
我有一个带有私有属性的类,它是一个向量。做getter函数的最佳方法是什么? 返回整个向量:
像 while, until, 和 for 循环代码块, 甚至 if/then 测试结构的代码块都能做到标准输入的重定向. 即使函数也可以使用这种重定向的格式 (参考例子 23-11).所有的这些依靠代码块结尾的<操作符来做到. 例子 16-5. while循环的重定向 1 #!/bin/bash 2 # redir2.sh 3 4 if [ -z "$1" ] 5