Ситуация: 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
Сам проект канпеляется, работает даже такое:
...внезапно узнаёшь, что CoreWebView2 = null. Кто и кого там не загрузил — я нинай. Походу, MS даже враппер над обычной DLL-ей сделать не в состоянии — опять надо приседать с бубном (WebView2Loader.dll), который.... тоже не работает! Что на очереди? Кроличий хвост? Кровь девственницы? У меня список магии исчерпан. Прошу помощи, пожалуйста!
Здравствуйте, Kolesiki, Вы писали:
K>Гадить в солюшен nuget'ами не хочу — хочу просто подключить старые-добрые DLL-ки и чтоб работало.
А можно просто перестать заниматься фигнёй и использовать инструмент так, как это предусмотрел автор.
K>Походу, MS даже враппер над обычной DLL-ей сделать не в состоянии
Походу кто-то не может просто почитать документацию. Или считает себя самым умным.
K>Что на очереди? Кроличий хвост? Кровь девственницы?
Что на очереди? Вопросы про жизнь на Марсе? Есть ли жизнь после смерти?
Ясно. В топике одни "мимокрокодильщики", у которых квалификации хватает только на то, чтобы вылезти и учить меня как мне писать мои программы.
Дети, ваши нюгетные игрушки никто не отбирает, но не надо ЗДЕСЬ засирать топик своим "единственно правильным мнением"! Тем более, что НИЧЕГО по-делу из всех ТРОИХ(!) никто не написал.
Итак, грабли я пробежал, даю справку тем, кто тоже заинтересовался:
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 — там всё просто:
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
Здравствуйте, Kolesiki, Вы писали:
K>PS K>Свою задачу решил — теперь я могу автоматом импортировать трэкинг-записи с 17track.net
Не проще было использовать selenium?
PS C# без msbuild уже никто не юзает. По принципу: "лучше неделю потратить(на изучение), зато потом за час долететь".
общий тренд использовать менеджеры пакетов, сборки.
Не нравится качать нугет из глобала,
можно добавить в %appdata%\nuget\NuGet.Config локальный источник и там держать все свои пакеты.
Здравствуйте, Kolesiki, Вы писали:
K>Ясно. В топике одни "мимокрокодильщики", у которых квалификации хватает только на то, чтобы вылезти и учить меня как мне писать мои программы.
Так сам себе создаешь трудности, а потом героически их преодолеваешь
Вместо того чтобы затратить 10 секунд, небось полдня потратил.
Когда Микрософт апдейт выпустит, будешь расковыривать новый нугет-пакет и материться?
В общем не вижу я смысла в этом ретроградстве.
Здравствуйте, 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-ое колесо и сам же его застопори". Современный тренд, ага!
Я слишком долго в ИТ, чтобы прыгать на каждое клоунское поделие. Которое практически сразу же выдаёт на поверхность слабые (и даже опасные для проекта) стороны.
Здравствуйте, Mr.Delphist, Вы писали:
MD>Здравствуйте, Kolesiki, Вы писали:
K>>PS K>>Свою задачу решил — теперь я могу автоматом импортировать трэкинг-записи с 17track.net
MD>Стоп. Т.е. задача была — скачать контент с того сайта?
Извиняюсь, в порыве гнева на MS забыл дописать: 17track — это сайт, выдающий трекинг посылок ДИНАМИЧЕСКИ! Т.е. надо в полноценном браузере(с JS) открыть страницу, там все скрипты отработают и только потом можно запустить руки в DOM и вытащить инфу. Вот потому и мучаюсь с движками!
Здравствуйте, bnk, Вы писали:
bnk>Так сам себе создаешь трудности, а потом героически их преодолеваешь
Если бы враппер к браузеру делался ЛЮДЬМИ, а не долбоящерами, никакой проблемы и не было бы. Проблемы, СОЗДАНОЙ МИКРОСОФТОМ.
Юзать внешние DLL-ки — это ты называешь "создавать себе проблемы"? Ты точно из ИТ, а не доставщик пиццы?
bnk>Когда Микрософт апдейт выпустит, будешь расковыривать новый нугет-пакет и материться?
Нет, материться будешь ты, когда проект надо билдить, а дебил в MS решил "задепрекатить" полезный API.
bnk>В общем не вижу я смысла в этом ретроградстве.
Выучить слово "ретроград" мало — надо ещё уметь им пользоваться. Ты походу так и не научился.
Есть "проверенные технологии". Они работают 100% и проверены временем. А есть технологии-выскочки, которые написали такие же "вчерашние студенты". Ну вот кому нужны были "загружаемые из интернета пакеты"?? 20 лет писали — всё было хорошо, но какой-то стоеросовый линупсятник решил: в линуксе пакеты — давай мы гемороя и в .NET добавим!!
Причём что забавно: эти же линупсятники воют "я проапдейтился и теперь всё сломалось!". Ну так не надо было всякую хрень с тырнетов тянуть!
И ровно так же "проблема первой свежести" перекочевала в .NET: ты билдишь программу и даже понятия не имеешь, что сейчас в неё вкомпилялось! (и будет ли компилироваться вообще)
Это как пойти на войну и "не глядя" взять пригоршню патронов, которые "к такому же пистолету, но патроны новее". Только идиот доверит свою жизнь неопробованным вещам.
С библиотеками ситуация чуть проще, но не намного: есть проекты за "много денег" (которые ты не оправдаешь, даже если ты всю семью продашь на органы), в которых "сбой" ставится на счётчик.
Если ты не клоун, ты не будешь доверять "свежескачанному пакету", а будешь просто референсить обычные DLL.
Да даже если это просто "хобби-проект", я в принципе не хочу ничего качать и уж тем более качать то, что ещё не опробовано. Ну а если мозгов нет, но есть "безумие и отвага" — да хоть укачайтесь, только МНЕ не надо вешать свою лапшу как "новые принципы". Они не новые и не принципы — это "геморой под видом прогресса".
Здравствуйте, Kolesiki, Вы писали:
K>А зачем мне selenium я даже после 5 страниц не понял — вообще ни слова про DOM! Ты сам-то его юзал?
Работу с парочкой сайтов автоматизировал, собственно его и пилит гугл, точнее хром-драйвер(выпускается день в день с релизом хрома), который используется в селениуме.
т.е. самый современный браузер, при желании можно выполнять внутри страницы свои скрипты, ну и поиск элементов внутри страниц,
а также загрузка и т.п. может работать без окошка, во втором проекте работает в службе под iis на серваке.
Здравствуйте, Kolesiki, Вы писали:
K>А зачем мне selenium я даже после 5 страниц не понял — вообще ни слова про DOM! Ты сам-то его юзал?
Selenium просто один из распространенных бесплатных инструментов для решения задачи (website scrapping)
В качестве движка он может использовать chrome/firefox/phantomjs по выбору.
У браузеров сейчас есть специальный режим ("headless browser") в котором они ничего не показывают на экране.
Этот режим специально заточен на сценарий, когда управление браузером идет программно (через API), selenium именно его и использует.
Еще он автоматически ждет завершения всех реквестов на сервер и полной отработки всех жаваскриптов,
т.е. можно писать простой последовательный скриптовый код для получения данных со страницы.
Вот например сходу нашлось:
How to SCRAPE DYNAMIC websites with Selenium
Здравствуйте, Kolesiki, Вы писали:
K>Извиняюсь, в порыве гнева на MS забыл дописать: 17track — это сайт, выдающий трекинг посылок ДИНАМИЧЕСКИ! Т.е. надо в полноценном браузере(с JS) открыть страницу, там все скрипты отработают и только потом можно запустить руки в DOM и вытащить инфу. Вот потому и мучаюсь с движками!
Если надо больше, то боюсь всё рано засекут нецелевое использование и будут банить, или капчу крячить (при работе через эмуляцию пользователя веб-клиентом)
Здравствуйте, 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, чтобы референсы автоматом проставились, но и вручную не знаю как их делать.