在Jenkins CI上打开Excel

时间:2014-03-24 07:03:49

标签: windows jenkins

我正在使用Windows 7(以会话1号登录),我的Jenkins CI在会话0中作为Windows服务运行。 我的问题是..我想在会话0中通过Jenkins CI打开一个Excel文件,但是想在会话1上显示它的GUI。

我知道会话0在Windows 7中被隔离,但是可以在会话0中运行进程然后在另一个会话中输出吗?请帮忙。

2 个答案:

答案 0 :(得分:4)

修改
进行了一些试验和错误,但这最终对我有用(Windows 7 64位)。

  • 从Microsoft网站
  • 下载PsTools
  • 我们只需要psexec.exe,但您可以提取所有内容。提取到Jenkins可访问的某个位置,最好在路径中没有空格。
  • 打开提升的命令提示符:在“开始”的快速搜索中键入cmd,右键单击cmd.exe,然后选择Run as Administrator
  • 输入C:\path\to\psexec.exe -accepteula并按Enter键。
  • 输入C:\path\to\psexec.exe -i 1 cmd并按Enter键。 (如果看到命令提示符出现,一切正常,请立即关闭)
  • 在作业配置中,配置执行Windows批处理命令步骤
  • 写下以下内容:
    C:\path\to\psexec.exe -accepteula && C:\path\to\psexec.exe -i 1 cmd /c start C:\PROGRA~2\MICROSO~1\path\to\excel.exe

其中:

  • C:\path\topsexec.exe的完整路径,除非它在%path%
  • -i 1是您要启动的会话ID。
  • C:\PROGRA~2\MICROSO~1\path\toexcel.exe 无空格的完整路径。由于大多数Office安装都将位于具有空格的路径下,例如" Program Files(x86),您必须找出短路径,或将其放置在没有空格的位置。
  • excel.exe置于%path%之下且使用常规命令行是不够的

对那些关心的人的一点解释:

  • psexec需要先安装服务。为此,它需要首次从提升的命令提示符运行。这是一次性安装步骤。
  • 要使psexec正常工作,您需要接受EULA提示。这是按会话/用户完成的。因此,即使您在命令提示符下运行psexec -accepteula,当Jenkins服务(在会话0中作为本地系统运行)尝试使用它时,它也没有帮助。因此,您必须将该命令与命令一起放入Jenkins作业中。从技术上讲,它只需要在那里一次,然后可以删除,但保持它在那里肯定不会受到伤害。
  • 我已使用cmd /k并从我的本地cmd提示符运行此命令进行调试。这就是让我意识到我无法找到逃离空间的方法(试过各种引用),所以不得不求助于短文件名。请注意,不需要短文件名,这只是为了转义空格。

答案 1 :(得分:0)

不,不是 -

加上任何UI交互都要求您将Jenkins作为Java Web Start而不是服务运行,否则您无法与UI元素进行交互。