0

我发现自己处于令人羡慕的位置,试图将第 3 方安装程序添加到现有的 install4j 项目中。我们正在尝试验证第 3 方安装程序在启动时不会在 Windows Vista/7 上生成单独的 UAC 请求。我可以使用几个参数来使安装静默,它们可以通过命令提示符或 PowerShell 工作。

我目前正在使用 install4j 5.0 和 5.1 对此进行测试,因为我们还没有安排构建服务器升级到 5.1。我的测试机器是 Windows 7 虚拟机,我已经测试了 Java 1.6 和 1.7 捆绑并预装了 1.7。

在安装过程中,参数似乎没有成功传递给进程。使用 Process Explorer,我可以看到 CMD.EXE 是使用命令启动的

C:\Windows\system32\cmd.exe /D /C "C:\Users\KRACHY~1\AppData\Local\Temp\i4j1544166103144462629.bat" 

批处理文件正在调用

"C:\Users\KRACHY~1\AppData\Local\Temp\E4JF73~1.TMP\user\VCREDI~1.EXE"  /q /norestart

然后将 setup.exe 提取到一个临时文件夹中并使用

c:\a87fe1446d33379e58\Setup.exe

我可以跟踪所有这些,因为最终设置缺少 /q /norestart 参数,并且它从一个许可协议页面开始,我们在安装的早期就获得了许可。

现在,由于该过程已停止,我可以保存从安装程序中提取的所有文件。如果我直接从命令提示符运行该批处理文件命令行,安装程序确实会按预期安静地安装。因此,当作为完整 install4j 进程的一部分运行时,有些东西会阻止参数一直进入最终设置过程。可能会饿死环境空间?我怎样才能确切地知道这些过程发生了什么和/或修复它?

如果我们不需要仅仅因为我们现在依赖这个库就需要更新我们的安装文档,我会更喜欢。

4

1 回答 1

1

您可以在“运行脚本”操作中尝试 new ProcessBuilder("path to executable", "/q", "/norestart").redirectErrorStream(true).start().waitFor() 。中间批处理文件将在 install4j 6 中消失。

于 2013-02-28T08:13:32.250 回答