BG Development


  Reply to this topicStart new topicStart Poll

> COMException при изпълнение през Jenkins
FidelDahan
Публикувано на: 13-03-2020, 14:36
Quote Post



Име:
Група: Потребител
Ранг: Почетен член

Мнения: 2421
Регистриран на: 12.06.08



Здравейте. Имам една програма на .NET 4.8, която ползва комерсиална библиотека за преобразуване на PowerPoint документи в HTML (DigitalOfficePro). Mоята програма извиква DigitalOfficePro, а то от своя страна стартира POWERPOINT.EXE и го контролира чрез някакъв automation API.

Когато изпълня интеграционните тестове като обикновевен потребител в PowerShell конзола, всичко е ОК. Когато обаче Jenkins извика интеграционните тестове (на същата виртуална машина), получавам следната грешка:

CODE
System.Runtime.InteropServices.COMException (0x80004005): Error HRESULT E_FAIL has been returned from a call to a COM component. ---> System.Runtime.InteropServices.COMException (0x80004005): Error HRESULT E_FAIL has been returned from a call to a COM component.
  at DigitalOfficePro.PowerPointToDopPowerXmlConverter.XmlConverter.OpenPresentation(String presentationFullPath)
  at DigitalOfficePro.Html5PointSdk.PresentationConverter.OpenPresentation(String filePath)


Jenkins е инсталиран на машината като обикновен Windows Service.
Тестовете се стартират през PowerShell скрипт, който от своя страна извиква NUnit-3.
Не вървят паралелно и всеки тест затваря всички ресурси (включително процеса POWERPOINT.EXE който върви докато трае конвертирането).

За сега гледам с Resource Monitor, но не съм много успешен в анализа.
Има ли някакъв по-добър начин за дебъгване на такъв вид грешки?

Също, имате ли идея защо през Jenkins изпълнението дава грешка, а в конзолата не?

Това мнение е било редактирано от FidelDahan на 13-03-2020, 14:36
PMEmail Poster
Top
Gamma Goblin
Публикувано на: 13-03-2020, 14:44
Quote Post



Име:
Група: Потребител
Ранг: Почетен член

Мнения: 3883
Регистриран на: 21.02.18



Не знам дали е валидно за уиндоус, но ако не ти е правилно конфигуриран дженкинса дъщерните му процеси (тоест тестовете) наследяват неговия environment. Не знам дали това може да повлияе на ППоинт-а


--------------------
Bashir: What I want to know is, out of all the stories you told me which ones were true and which ones weren't?
Garak: My dear doctor...they're all true.
Bashir: Even the lies?
Garak: Especially the lies.
PMEmail PosterUsers Website
Top
dvader
Публикувано на: 13-03-2020, 15:15
Quote Post


Group Icon
Име:
Група: VIP
Ранг: Почетен член

Мнения: 4843
Регистриран на: 12.07.05



QUOTE (FidelDahan @ 13-03-2020, 14:36)
Също, имате ли идея защо през Jenkins изпълнението дава грешка, а в конзолата не?

Например заради различна текуща директория.
Използвай винаги пълни пътища.


--------------------
I find your lack of faith disturbing
PM
Top
FidelDahan
Публикувано на: 13-03-2020, 15:36
Quote Post



Име:
Група: Потребител
Ранг: Почетен член

Мнения: 2421
Регистриран на: 12.06.08



QUOTE (dvader @ 13-03-2020, 15:15)
QUOTE (FidelDahan @ 13-03-2020, 14:36)
Също, имате ли идея защо през Jenkins изпълнението дава грешка, а в конзолата не?

Например заради различна текуща директория.
Използвай винаги пълни пътища.

Това го изключих като причина, защото пускам ръчно през същата работна директория и файловите операции се извършват в %TEMP%, с абсолютни пътища.

QUOTE
Не знам дали е валидно за уиндоус, но ако не ти е правилно конфигуриран дженкинса дъщерните му процеси (тоест тестовете) наследяват неговия environment. Не знам дали това може да повлияе на ППоинт-а


Хмм.. самия процес почти не зависи от environment variables. Но мисля, че има значение, дали върви в "интерактивен" режим. Тоест като потребител аз мога да стартирам PowerPoint в интерактивен режим. А Jenkins не върви автоматично така (картинка). Но даже и да активирам "Allow service to interact with desktop", пак дава същата грешка.

Прикачена картинка
Прикачена картинка
PMEmail Poster
Top
bvbfan
Публикувано на: 13-03-2020, 16:33
Quote Post



Име:
Група: Потребител
Ранг: Почетен член

Мнения: 3845
Регистриран на: 08.12.13



Много е жалко е да се пуска каквото и да е на Jenkins на Виндовс, много е жалко дори да се ползва Виндовс. Свали си конвертор с отворен код и не ползвай нищо М$ - тиня е. Все пак ще ти дам хинт, Jenkins не стартира explorer.exe, т.е. работи в непълна сесия (нямам идея как се води) но това не се харесва на .нет-а и той троли. Може да се логваш с твоят потребител, той ще стартира explorer.exe и Jenkins евентуално може и да проработи.


--------------------
QUOTE (Bender @ 23-04-2015, 19:11)
Xamarin: ЛАПАЙ!
Ти: Добре...
PMEmail Poster
Top
FidelDahan
Публикувано на: 13-03-2020, 18:31
Quote Post



Име:
Група: Потребител
Ранг: Почетен член

Мнения: 2421
Регистриран на: 12.06.08



Благодаря за идеяата, но явно не е от Jenkins, е нещо свързано генерално със рънването като Windows Service. Току що създадох собствен Windows Service по работещо упътване със InstallUtil.exe, и пуснах програмата в него (както ще се деплойва). Но дава същата грешка.
PMEmail Poster
Top
dvader
Публикувано на: 13-03-2020, 20:05
Quote Post


Group Icon
Име:
Група: VIP
Ранг: Почетен член

Мнения: 4843
Регистриран на: 12.07.05



Сървиса работи като друг усер.


--------------------
I find your lack of faith disturbing
PM
Top
DarkOne
Публикувано на: 13-03-2020, 23:12
Quote Post


Group Icon
Име: Александър Петков
Група: Администратор
Ранг: Почетен член

Мнения: 3509
Регистриран на: 30.01.04



Проблемът вероятно е, че service-ът се опитва да създаде потребителски интерфейс, което е забранено някъде от Windows Server 2008. Session 0 Isolation, където Session 0 е non-interactive.


--------------------
The man who learns only what others know
is as ignorant as if he learns nothing.
The treasures of knowledge are the most rare,
and guarded most harshly.
-- Chronicle of the First Age
PMICQ
Top
wqw
Публикувано на: 14-03-2020, 12:40
Quote Post


Group Icon
Име: Владимир Висулчев
Група: VIP
Ранг: Почетен член

Мнения: 6196
Регистриран на: 10.06.04



Само забележи колко безсмислена грешка е логнало: "Error HRESULT E_FAIL has been returned from a call to a COM component" при това два пъти. Доообре! Ми кажи кои е метода бе, да те *** и звездата! Не те карам да ми дъмпиш параметрите или нещо по-полезно. . .

Ако методът на PowerPoint който fail-ва е примерно OpenPresentation("C:\TEMP\WhatEver.ppt") може да е permissions, UAC, и пр. шок-контент.

Ако методът е нещо като ShowXxx вече може да е Session 0 проблеми с UI.

cheers,
</wqw>

Това мнение е било редактирано от wqw на 14-03-2020, 12:41


--------------------
PMEmail PosterUsers Website
Top
dvader
Публикувано на: 30-03-2020, 23:22
Quote Post


Group Icon
Име:
Група: VIP
Ранг: Почетен член

Мнения: 4843
Регистриран на: 12.07.05



В крайна сметка, каква беше причината?


--------------------
I find your lack of faith disturbing
PM
Top
1 потребители преглеждат тази тема в момента (1 гости, 0 анонимни потребители)
Потребители, преглеждащи темата в момента:

Topic Options Reply to this topicStart new topicStart Poll

 


Copyright © 2003-2019 | BG Development | All Rights Reserved
RSS 2.0