gitlab-ci-runnerを使用して、コミットごとにデスクトップ Qt/OpenGL アプリケーションを自動的にテストしています。Windows 8 では、アプリケーションは gitlab-ci-runner でインストールされたシステム サービスによって実行されるため、「非表示」で実行されます。つまり、デスクトップが表示されません。「公開」イベントを取得しない OpenGL モジュールを除いて、すべての UI モジュールはとにかく初期化して実行します。ウィンドウを公開せずに OpenGL コンテキストに描画しようとすると、エラーが発生します。
QOpenGLContext::swapBuffers() called with non-exposed window, behavior is undefined
実行中のデスクトップ セッションでサービスから Windows GUI アプリケーションを実行することはかなり難しく、推奨されないことがわかりました (「Windows サービスで GUI アプリケーションを実行するにはどうすればよいですか?」 を参照してください)。
ここで、ユーザーがアプリケーションを表示する必要はありません。OpenGL 部分が正しく機能する必要があるだけです。どういうわけかウィンドウを公開するように「ふりをする」ことができる方法はありますか、またはこれをシステムサービスから正しく実行する他の方法はありますか?