我将 Jenkins 从属服务器作为 Windows 服务运行,然后它将启动一系列调用(例如):
Slave.exe->ant->cmd批处理->notepad.exe
问题是“notepad.exe”不可见,我可以在任务管理器中看到它,但它没有显示其 UI。
windows平台是win server 2008,我配置了服务“以本地系统帐户登录”,并勾选了“允许服务与桌面交互”。
对此有什么想法吗?非常感谢
答案1
从 Windows Vista 开始,所有服务都在单独的会话(会话 0)中运行,并且通常无法直接与用户交互,即使设置了“允许服务与桌面交互”。换句话说,您不应该这样做。您不能在登录会话中运行 slave.exe 吗?
但是,作为向后兼容性缓解措施,Windows 应该检测到服务已显示用户界面并主动向您显示(在单独的桌面上)。我不确定为什么这不起作用。服务是否配置为以本地系统身份运行?
答案2
我在尝试启动一些自动脚本 Web 测试脚本(需要 GUI)时遇到了类似的问题。
这是诀窍。您需要启动远程桌面连接,将其设置为在连接启动后启动 .exe,输入并保存身份验证信息,然后将连接保存到磁盘。
让 jenkins 启动已保存的 RDP 连接,它会为您启动一个 GUI。
此外,如果您在 jenkins 中运行多个 Windows 命令,则需要将每个命令作为单独的项目(如果它们返回退出代码...就像您正在调用两个 .bat 文件或类似的东西)