[WPF] WebView2 - как завести без нюгета?
От: Kolesiki  
Дата: 16.05.22 13:51
Оценка:
Мужики, требуется опыт хождения по MS граблям!

Ситуация: Win7x64 + установленный MicrosoftEdgeWebView2RuntimeInstallerX64.exe
Пишу WPF(FW4.8) приблуду. В ней хочу забабахать "модерновый" WebView2. Гадить в солюшен nuget'ами не хочу — хочу просто подключить старые-добрые DLL-ки и чтоб работало.
Скачал microsoft.web.webview2.1.0.1248-prerelease.nupkg (да-да, всё ещё какой-то prerelease)
Оттуда достал и зареференсил Microsoft.Web.WebView2.Core.dll и Microsoft.Web.WebView2.Wpf.dll ; Затем по интуиции добавил к экзешнику 64-битную WebView2Loader.dll
Сам проект канпеляется, работает даже такое:

CoreWebView2Environment.GetAvailableBrowserVersionString()


...выдавая мне "101.0.1210.47". Ну то есть этот враппер лезет в систему и понимает, что ВСЁ ЕСТЬ!
Но когда делаешь

webView.CoreWebView2.Navigate(@"https://bash.im");


...внезапно узнаёшь, что CoreWebView2 = null. Кто и кого там не загрузил — я нинай. Походу, MS даже враппер над обычной DLL-ей сделать не в состоянии — опять надо приседать с бубном (WebView2Loader.dll), который.... тоже не работает! Что на очереди? Кроличий хвост? Кровь девственницы? У меня список магии исчерпан. Прошу помощи, пожалуйста!
Отредактировано 16.05.2022 13:53 Kolesiki . Предыдущая версия . Еще …
Отредактировано 16.05.2022 13:52 Kolesiki . Предыдущая версия .
Re: [WPF] WebView2 - как завести без нюгета?
От: bnk СССР http://unmanagedvisio.com/
Дата: 16.05.22 14:05
Оценка: +2 -1
Здравствуйте, Kolesiki, Вы писали:

K> Гадить в солюшен nuget'ами не хочу — хочу просто подключить старые-добрые DLL-ки и чтоб работало.


Re: [WPF] WebView2 - как завести без нюгета?
От: Valeriy_Gourov Украина https://valeriygourovresume.azurewebsites.net
Дата: 16.05.22 14:19
Оценка: +1 -1
Здравствуйте, Kolesiki, Вы писали:

K>Гадить в солюшен nuget'ами не хочу — хочу просто подключить старые-добрые DLL-ки и чтоб работало.

А можно просто перестать заниматься фигнёй и использовать инструмент так, как это предусмотрел автор.

K>Походу, MS даже враппер над обычной DLL-ей сделать не в состоянии

Походу кто-то не может просто почитать документацию. Или считает себя самым умным.

K>Что на очереди? Кроличий хвост? Кровь девственницы?

Что на очереди? Вопросы про жизнь на Марсе? Есть ли жизнь после смерти?
Re: [WPF] WebView2 - как завести без нюгета?
От: samius Япония http://sams-tricks.blogspot.com
Дата: 16.05.22 17:42
Оценка: -1
Здравствуйте, Kolesiki, Вы писали:

Что на очереди? Кроличий хвост? Кровь девственницы? У меня список магии исчерпан. Прошу помощи, пожалуйста!

Может, все-таки нагадить nuget-ом? Глядишь, и Newtonsoft JSON(http://rsdn.org/forum/dotnet/8272250
Автор: Kolesiki
Дата: 06.05.22
) заведется.
Re: MS делают видео вместо статей - где разум?
От: Kolesiki  
Дата: 16.05.22 22:54
Оценка: 9 (1) +1
Ясно. В топике одни "мимокрокодильщики", у которых квалификации хватает только на то, чтобы вылезти и учить меня как мне писать мои программы.
Дети, ваши нюгетные игрушки никто не отбирает, но не надо ЗДЕСЬ засирать топик своим "единственно правильным мнением"! Тем более, что НИЧЕГО по-делу из всех ТРОИХ(!) никто не написал.

Итак, грабли я пробежал, даю справку тем, кто тоже заинтересовался:

1. Ставим Microsoft Edge WebView2 Runtime — это как бы "движок Edge", но без самого Edge: https://developer.microsoft.com/en-US/microsoft-edge/webview2/ (выбираем Evergreen Standalone Installer)
2. Качаем нюгетину https://www.nuget.org/packages/Microsoft.Web.WebView2 и достаём из неё DLLки
3. В проекте референсим Microsoft.Web.WebView2.Core.dll и Microsoft.Web.WebView2.Wpf.dll . Это ещё не всё! Там же выковыриваем WebView2Loader.dll , который надо будет положить рядом с экзешником.
4. Дизайним WPF — там всё просто:

<.... xmlns:wv2="clr-namespace:Microsoft.Web.WebView2.Wpf;assembly=Microsoft.Web.WebView2.Wpf" ...>

<wv2:WebView2 Name="webView" />


5. В конструкторе формы:

webView.EnsureCoreWebView2Async(CoreWebView2Environment.CreateAsync(null, @"C:\temp").Result);// делаем так, чтобы контрол имел "записываемую" папку
MessageBox.Show(CoreWebView2Environment.GetAvailableBrowserVersionString());// вот так можно проверить, что у вас правильный движок


6. Когда форма уже загружена:

while(webView.CoreWebView2 == null)
    WPHelper.DoEvents();// надо немного подождать, пока это тормозное чучело создаст все кишки

// ...и только сейчас можно загрузить страничку!
webView.CoreWebView2.Navigate(@"http://ya.ru");


Как видите, код несложный, но ты бляха попробуй до него допри по документации!! Кто MSDN читал, тот туда больше не полезет.

Тонкость рукожопой "обёртки над Chrome" в том, что к DOM вас не пустят — придётся запускать скрипты на странице и вытягивать всё через JS. Ну, вот такой сишарп мир от микрософт!

PS
Свою задачу решил — теперь я могу автоматом импортировать трэкинг-записи с 17track.net
Re[2]: MS делают видео вместо статей - где разум?
От: vaa https://www.youtube.com/playlist?list=PLtrvASfI1KW7VOYRKjglcagQzWLoxlncl
Дата: 17.05.22 01:24
Оценка: -1
Здравствуйте, Kolesiki, Вы писали:

K>PS

K>Свою задачу решил — теперь я могу автоматом импортировать трэкинг-записи с 17track.net

Не проще было использовать selenium?
PS C# без msbuild уже никто не юзает. По принципу: "лучше неделю потратить(на изучение), зато потом за час долететь".
общий тренд использовать менеджеры пакетов, сборки.
Не нравится качать нугет из глобала,
можно добавить в %appdata%\nuget\NuGet.Config локальный источник и там держать все свои пакеты.
Re[2]: MS делают видео вместо статей - где разум?
От: bnk СССР http://unmanagedvisio.com/
Дата: 17.05.22 10:30
Оценка: +1 -1
Здравствуйте, Kolesiki, Вы писали:

K>Ясно. В топике одни "мимокрокодильщики", у которых квалификации хватает только на то, чтобы вылезти и учить меня как мне писать мои программы.


Так сам себе создаешь трудности, а потом героически их преодолеваешь
Вместо того чтобы затратить 10 секунд, небось полдня потратил.

Когда Микрософт апдейт выпустит, будешь расковыривать новый нугет-пакет и материться?
В общем не вижу я смысла в этом ретроградстве.
Re[2]: MS делают видео вместо статей - где разум?
От: Mr.Delphist  
Дата: 18.05.22 09:31
Оценка: :)
Здравствуйте, Kolesiki, Вы писали:

K>PS

K>Свою задачу решил — теперь я могу автоматом импортировать трэкинг-записи с 17track.net

Стоп. Т.е. задача была — скачать контент с того сайта?
Re[3]: MS делают видео вместо статей - где разум?
От: Kolesiki  
Дата: 23.05.22 12:27
Оценка:
Здравствуйте, vaa, Вы писали:

vaa>Здравствуйте, Kolesiki, Вы писали:


K>>PS

K>>Свою задачу решил — теперь я могу автоматом импортировать трэкинг-записи с 17track.net

vaa>Не проще было использовать selenium?


Нет, не проще! Я зареференсил DLL-ки и теперь у меня доступ к современному рендеру страниц.
А зачем мне selenium я даже после 5 страниц не понял — вообще ни слова про DOM! Ты сам-то его юзал?

vaa>PS C# без msbuild уже никто не юзает


И я юзаю MSBuild. А в чём противоречие?

vaa>общий тренд использовать менеджеры пакетов, сборки.


Не надо "истерию в пределах палаты №6" выдавать за тренды. В соседнем топике уже размазали в пух и прах ваш неуклюжий nuget — это таймбомба в проекте.

vaa>Не нравится качать нугет из глобала,

vaa>можно добавить в %appdata%\nuget\NuGet.Config локальный источник и там держать все свои пакеты.

Ну да — "прилепи себе в проект 5-ое колесо и сам же его застопори". Современный тренд, ага!
Я слишком долго в ИТ, чтобы прыгать на каждое клоунское поделие. Которое практически сразу же выдаёт на поверхность слабые (и даже опасные для проекта) стороны.
MS делают видео вместо статей - где разум?
От: Kolesiki  
Дата: 23.05.22 12:28
Оценка:
Здравствуйте, Mr.Delphist, Вы писали:

MD>Здравствуйте, Kolesiki, Вы писали:


K>>PS

K>>Свою задачу решил — теперь я могу автоматом импортировать трэкинг-записи с 17track.net

MD>Стоп. Т.е. задача была — скачать контент с того сайта?


Извиняюсь, в порыве гнева на MS забыл дописать: 17track — это сайт, выдающий трекинг посылок ДИНАМИЧЕСКИ! Т.е. надо в полноценном браузере(с JS) открыть страницу, там все скрипты отработают и только потом можно запустить руки в DOM и вытащить инфу. Вот потому и мучаюсь с движками!
Отредактировано 23.05.2022 12:44 Kolesiki . Предыдущая версия .
Re[3]: MS делают видео вместо статей - где разум?
От: Kolesiki  
Дата: 23.05.22 12:41
Оценка: +1 :)
Здравствуйте, bnk, Вы писали:

bnk>Так сам себе создаешь трудности, а потом героически их преодолеваешь


Если бы враппер к браузеру делался ЛЮДЬМИ, а не долбоящерами, никакой проблемы и не было бы. Проблемы, СОЗДАНОЙ МИКРОСОФТОМ.
Юзать внешние DLL-ки — это ты называешь "создавать себе проблемы"? Ты точно из ИТ, а не доставщик пиццы?

bnk>Когда Микрософт апдейт выпустит, будешь расковыривать новый нугет-пакет и материться?


Нет, материться будешь ты, когда проект надо билдить, а дебил в MS решил "задепрекатить" полезный API.

bnk>В общем не вижу я смысла в этом ретроградстве.


Выучить слово "ретроград" мало — надо ещё уметь им пользоваться. Ты походу так и не научился.
Есть "проверенные технологии". Они работают 100% и проверены временем. А есть технологии-выскочки, которые написали такие же "вчерашние студенты". Ну вот кому нужны были "загружаемые из интернета пакеты"?? 20 лет писали — всё было хорошо, но какой-то стоеросовый линупсятник решил: в линуксе пакеты — давай мы гемороя и в .NET добавим!!
Причём что забавно: эти же линупсятники воют "я проапдейтился и теперь всё сломалось!". Ну так не надо было всякую хрень с тырнетов тянуть!
И ровно так же "проблема первой свежести" перекочевала в .NET: ты билдишь программу и даже понятия не имеешь, что сейчас в неё вкомпилялось! (и будет ли компилироваться вообще)
Это как пойти на войну и "не глядя" взять пригоршню патронов, которые "к такому же пистолету, но патроны новее". Только идиот доверит свою жизнь неопробованным вещам.
С библиотеками ситуация чуть проще, но не намного: есть проекты за "много денег" (которые ты не оправдаешь, даже если ты всю семью продашь на органы), в которых "сбой" ставится на счётчик.
Если ты не клоун, ты не будешь доверять "свежескачанному пакету", а будешь просто референсить обычные DLL.
Да даже если это просто "хобби-проект", я в принципе не хочу ничего качать и уж тем более качать то, что ещё не опробовано. Ну а если мозгов нет, но есть "безумие и отвага" — да хоть укачайтесь, только МНЕ не надо вешать свою лапшу как "новые принципы". Они не новые и не принципы — это "геморой под видом прогресса".
Re[4]: MS делают видео вместо статей - где разум?
От: bnk СССР http://unmanagedvisio.com/
Дата: 23.05.22 13:10
Оценка: -1
Здравствуйте, Kolesiki, Вы писали:

K>Выучить слово "ретроград" мало — надо ещё уметь им пользоваться. Ты походу так и не научился.


Ретроград это еще мягко сказано, "луддит" вот скорее похоже на правду
nuget уже больше 10 лет. Во время сингулярности в IT это почти что бесконечность
Re[4]: MS делают видео вместо статей - где разум?
От: vaa https://www.youtube.com/playlist?list=PLtrvASfI1KW7VOYRKjglcagQzWLoxlncl
Дата: 23.05.22 14:28
Оценка:
Здравствуйте, Kolesiki, Вы писали:

K>А зачем мне selenium я даже после 5 страниц не понял — вообще ни слова про DOM! Ты сам-то его юзал?

Работу с парочкой сайтов автоматизировал, собственно его и пилит гугл, точнее хром-драйвер(выпускается день в день с релизом хрома), который используется в селениуме.
т.е. самый современный браузер, при желании можно выполнять внутри страницы свои скрипты, ну и поиск элементов внутри страниц,
а также загрузка и т.п. может работать без окошка, во втором проекте работает в службе под iis на серваке.
Re[4]: MS делают видео вместо статей - где разум?
От: bnk СССР http://unmanagedvisio.com/
Дата: 23.05.22 15:07
Оценка:
Здравствуйте, Kolesiki, Вы писали:

K>А зачем мне selenium я даже после 5 страниц не понял — вообще ни слова про DOM! Ты сам-то его юзал?


Selenium просто один из распространенных бесплатных инструментов для решения задачи (website scrapping)
В качестве движка он может использовать chrome/firefox/phantomjs по выбору.
У браузеров сейчас есть специальный режим ("headless browser") в котором они ничего не показывают на экране.
Этот режим специально заточен на сценарий, когда управление браузером идет программно (через API), selenium именно его и использует.

Еще он автоматически ждет завершения всех реквестов на сервер и полной отработки всех жаваскриптов,
т.е. можно писать простой последовательный скриптовый код для получения данных со страницы.

Вот например сходу нашлось:
How to SCRAPE DYNAMIC websites with Selenium

https://www.youtube.com/watch?v=lTypMlVBFM4
Отредактировано 23.05.2022 15:28 bnk . Предыдущая версия . Еще …
Отредактировано 23.05.2022 15:27 bnk . Предыдущая версия .
Отредактировано 23.05.2022 15:22 bnk . Предыдущая версия .
Отредактировано 23.05.2022 15:21 bnk . Предыдущая версия .
Отредактировано 23.05.2022 15:20 bnk . Предыдущая версия .
Отредактировано 23.05.2022 15:17 bnk . Предыдущая версия .
Отредактировано 23.05.2022 15:17 bnk . Предыдущая версия .
Отредактировано 23.05.2022 15:10 bnk . Предыдущая версия .
Re: MS делают видео вместо статей - где разум?
От: Mr.Delphist  
Дата: 23.05.22 16:57
Оценка: 15 (1) +1
Здравствуйте, Kolesiki, Вы писали:

K>Извиняюсь, в порыве гнева на MS забыл дописать: 17track — это сайт, выдающий трекинг посылок ДИНАМИЧЕСКИ! Т.е. надо в полноценном браузере(с JS) открыть страницу, там все скрипты отработают и только потом можно запустить руки в DOM и вытащить инфу. Вот потому и мучаюсь с движками!


там есть готовый API, 100 треков бесплатно ежемесячно
https://api.17track.net/

Free 100 trackings each month


Если надо больше, то боюсь всё рано засекут нецелевое использование и будут банить, или капчу крячить (при работе через эмуляцию пользователя веб-клиентом)
Отредактировано 23.05.2022 21:03 Mr.Delphist . Предыдущая версия .
Re[4]: MS делают видео вместо статей - где разум?
От: karbofos42 Россия  
Дата: 03.06.22 10:36
Оценка:
Здравствуйте, Kolesiki, Вы писали:

K>Если бы враппер к браузеру делался ЛЮДЬМИ, а не долбоящерами, никакой проблемы и не было бы. Проблемы, СОЗДАНОЙ МИКРОСОФТОМ.


т.е. ты добавляешь ссылку на чужую библиотеку и возмущаешься, что у неё тоже есть свои ссылки?

K>Юзать внешние DLL-ки — это ты называешь "создавать себе проблемы"? Ты точно из ИТ, а не доставщик пиццы?


А ты в итоге разве не используешь внешние DLL-ки?

K>Нет, материться будешь ты, когда проект надо билдить, а дебил в MS решил "задепрекатить" полезный API.


Ну, организуй локальное NuGet-хранилище или банально в репозиторий добавь папку packages.
NuGet просто подгрузит новые библиотеки один раз, ты их к себе закоммитишь и никуда не денутся, никто их подгружать заново не будет.
Разница только в том, что не нужно будет изначально вручную пакет качать и настраивать и это всё NuGet сделает.

K>Есть "проверенные технологии". Они работают 100% и проверены временем. А есть технологии-выскочки, которые написали такие же "вчерашние студенты". Ну вот кому нужны были "загружаемые из интернета пакеты"?? 20 лет писали — всё было хорошо, но какой-то стоеросовый линупсятник решил: в линуксе пакеты — давай мы гемороя и в .NET добавим!!


NuGet старше и провереннее, чем WebView2

K>Причём что забавно: эти же линупсятники воют "я проапдейтился и теперь всё сломалось!". Ну так не надо было всякую хрень с тырнетов тянуть!


Как раз NuGet втихаря новые версии и не тянет, само по себе там ничего не ломается.
Разве что, на nuget.org кто-то подменит старые пакеты.
То, что кто-то где-то в ссылках не указывает конкретные версии, а тянет самые свежие релизы — не значит, что нужно и дальше ручками всё делать и отказываться от более удобных инструментов.

K>И ровно так же "проблема первой свежести" перекочевала в .NET: ты билдишь программу и даже понятия не имеешь, что сейчас в неё вкомпилялось! (и будет ли компилироваться вообще)


Просто ты даже не поинтересовался как работает NuGet и что делает, потому и не знаешь что там происходит.
При желании ты даже автоподгрузку пакетов можешь убрать и настроить так, как нужно.
Но это же нужно потратить 2 часа на изучение...

K>Это как пойти на войну и "не глядя" взять пригоршню патронов, которые "к такому же пистолету, но патроны новее". Только идиот доверит свою жизнь неопробованным вещам.


Странно, что ты не на C++ без "умных" указателей пишешь. В C# слишком уж много "неопробованных вещей".

K>С библиотеками ситуация чуть проще, но не намного: есть проекты за "много денег" (которые ты не оправдаешь, даже если ты всю семью продашь на органы), в которых "сбой" ставится на счётчик.

K>Если ты не клоун, ты не будешь доверять "свежескачанному пакету", а будешь просто референсить обычные DLL.

Открою тайну: с NuGet ровно так же просто референсятся обычные DLL.

K>Да даже если это просто "хобби-проект", я в принципе не хочу ничего качать и уж тем более качать то, что ещё не опробовано. Ну а если мозгов нет, но есть "безумие и отвага" — да хоть укачайтесь, только МНЕ не надо вешать свою лапшу как "новые принципы". Они не новые и не принципы — это "геморой под видом прогресса".


Только почему-то нет тем: NuGet всё испортил и ничего не работает.
Есть тема: я тут не хочу разбираться в двух кнопках NuGet, чтобы референсы автоматом проставились, но и вручную не знаю как их делать.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.