The InitExecutor constructor moves the instance to a dedicated thread. This PR changes that by using GUIUtil::ObjectInvoke to run the relevant code in that thread.
A possible follow-up is to ditch the dedicated thread and use QThreadPool or even QtConcurrent::run (if we want to enable that).