| BG Development · За реклама · За контакти |
Помощ Търсене Потребители Календар Правила |
| Здравей! ( Включване | Регистриране ) |
![]() ![]() ![]() |
| FidelDahan |
Публикувано на: 13-03-2020, 14:36
|
||
![]() Име: Група: Потребител Ранг: Почетен член Мнения: 2429 Регистриран на: 12.06.08 |
Здравейте. Имам една програма на .NET 4.8, която ползва комерсиална библиотека за преобразуване на PowerPoint документи в HTML (DigitalOfficePro). Mоята програма извиква DigitalOfficePro, а то от своя страна стартира POWERPOINT.EXE и го контролира чрез някакъв automation API. Когато изпълня интеграционните тестове като обикновевен потребител в PowerShell конзола, всичко е ОК. Когато обаче Jenkins извика интеграционните тестове (на същата виртуална машина), получавам следната грешка:
Jenkins е инсталиран на машината като обикновен Windows Service. Тестовете се стартират през PowerShell скрипт, който от своя страна извиква NUnit-3. Не вървят паралелно и всеки тест затваря всички ресурси (включително процеса POWERPOINT.EXE който върви докато трае конвертирането). За сега гледам с Resource Monitor, но не съм много успешен в анализа. Има ли някакъв по-добър начин за дебъгване на такъв вид грешки? Също, имате ли идея защо през Jenkins изпълнението дава грешка, а в конзолата не? Това мнение е било редактирано от FidelDahan на 13-03-2020, 14:36 |
||
| Gamma Goblin |
Публикувано на: 13-03-2020, 14:44
|
![]() Име: Група: Потребител Ранг: Почетен член Мнения: 4014 Регистриран на: 21.02.18 |
Не знам дали е валидно за уиндоус, но ако не ти е правилно конфигуриран дженкинса дъщерните му процеси (тоест тестовете) наследяват неговия environment. Не знам дали това може да повлияе на ППоинт-а
|
| dvader |
Публикувано на: 13-03-2020, 15:15
|
||
![]() Име: Валерий Тодоров Група: VIP Ранг: Почетен член Мнения: 5419 Регистриран на: 12.07.05 |
Например заради различна текуща директория. Използвай винаги пълни пътища. -------------------- I find your lack of faith disturbing
|
||
| FidelDahan |
Публикувано на: 13-03-2020, 15:36
|
||||||
![]() Име: Група: Потребител Ранг: Почетен член Мнения: 2429 Регистриран на: 12.06.08 |
Това го изключих като причина, защото пускам ръчно през същата работна директория и файловите операции се извършват в %TEMP%, с абсолютни пътища.
Хмм.. самия процес почти не зависи от environment variables. Но мисля, че има значение, дали върви в "интерактивен" режим. Тоест като потребител аз мога да стартирам PowerPoint в интерактивен режим. А Jenkins не върви автоматично така (картинка). Но даже и да активирам "Allow service to interact with desktop", пак дава същата грешка. Прикачена картинка ![]() |
||||||
| bvbfan |
Публикувано на: 13-03-2020, 16:33
|
||
![]() Име: Група: Потребител Ранг: Почетен член Мнения: 4176 Регистриран на: 08.12.13 |
Много е жалко е да се пуска каквото и да е на Jenkins на Виндовс, много е жалко дори да се ползва Виндовс. Свали си конвертор с отворен код и не ползвай нищо М$ - тиня е. Все пак ще ти дам хинт, Jenkins не стартира explorer.exe, т.е. работи в непълна сесия (нямам идея как се води) но това не се харесва на .нет-а и той троли. Може да се логваш с твоят потребител, той ще стартира explorer.exe и Jenkins евентуално може и да проработи.
--------------------
|
||
| FidelDahan |
Публикувано на: 13-03-2020, 18:31
|
![]() Име: Група: Потребител Ранг: Почетен член Мнения: 2429 Регистриран на: 12.06.08 |
Благодаря за идеяата, но явно не е от Jenkins, е нещо свързано генерално със рънването като Windows Service. Току що създадох собствен Windows Service по работещо упътване със InstallUtil.exe, и пуснах програмата в него (както ще се деплойва). Но дава същата грешка.
|
| dvader |
Публикувано на: 13-03-2020, 20:05
|
![]() Име: Валерий Тодоров Група: VIP Ранг: Почетен член Мнения: 5419 Регистриран на: 12.07.05 |
Сървиса работи като друг усер.
-------------------- I find your lack of faith disturbing
|
| DarkOne |
Публикувано на: 13-03-2020, 23:12
|
![]() Име: Александър Петков Група: Администратор Ранг: Почетен член Мнения: 3733 Регистриран на: 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 |
| wqw |
Публикувано на: 14-03-2020, 12:40
|
![]() Име: Владимир Висулчев Група: VIP Ранг: Почетен член Мнения: 6379 Регистриран на: 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 -------------------- |
| dvader |
Публикувано на: 30-03-2020, 23:22
|
![]() Име: Валерий Тодоров Група: VIP Ранг: Почетен член Мнения: 5419 Регистриран на: 12.07.05 |
В крайна сметка, каква беше причината?
-------------------- I find your lack of faith disturbing
|
![]() |
![]() ![]() ![]() |