我正在实施3.x / e4混合RCP应用程序:
TL; DR
以启动方式登录 - >必要时更新客户端 - >马上重启工作台。
全文
显示启动画面,其中包含登录组件。这是通过扩展AbstractSplashHandler
用户写入用户名,密码,服务器地址和端口。按下Sign In
按钮后,将通过在提供的地址联系服务器来执行P2更新检查。
如果服务器可以访问,并且有可用的更新,则会询问用户是否要更新。这些更新是强制性的,因此除非它是最新的,否则他/她不能进入系统。
如果用户按YES,则执行P2更新。完成后,我想自动重启工作台。
重启时几乎没有问题:
在启动生命周期中,PlatformUI.getWorkbench()
不会返回null
,但它们都没有完全初始化。因此,如果我致电IWorkbench#restart
,会抛出一些内部NPE(我可以根据要求将它们放在这里)。
我考虑过在Application
类中进行版本检查,在那里我可以返回IApplication.EXIT_RESTART
代码 - 但是我还没有那里的知识。我真的很想在启动时登录。
IWorkbench#restart
和System.exit(0)
之间是否存在中间立场?我很乐意在Application
之后,在PlatformUI#createAndRunWorkbench
之后,使用重新启动代码。