我发现自己处于令人羡慕的位置,试图将第三方安装程序添加到现有的install4j项目中。我们正在尝试验证第三方安装程序在启动时不会在Windows Vista / 7上生成单独的UAC请求。我可以使用几个参数来使安装无声,可以使用命令提示符或PowerShell。
我目前正在使用install4j 5.0和5.1进行测试,因为我们还没有安排构建服务器升级到5.1。我的测试机器是Windows 7 VM,我已经测试了捆绑的Java 1.6和1.7以及1.7预安装。
在安装过程中,参数似乎没有成功传递给进程。使用Process Explorer,我可以看到使用命令
启动CMD.EXEC:\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进程的一部分运行时,有一些东西阻止参数一直到最终设置过程。可能会缺乏环境空间?我怎样才能确切地弄清楚这些过程发生了什么和/或修复它?
我希望如果我们不需要更新我们的安装文档,因为我们现在依赖于这个库。
答案 0 :(得分:1)
您可以在“运行脚本”操作中尝试新的ProcessBuilder(“可执行路径”,“/ q”,“/ norestart”)。redirectErrorStream(true).start()。waitFor()。中间批处理文件将在install4j 6中消失。