ClickOnceInstall CefSharp Winforms Проблемы

Я пытаюсь запустить свой образец проекта CefSharp WinForms в качестве приложения clickonceinstall.

В процессе создания все ок, но при попытке установить программу (программа конечно работает и без проблем) ничего не происходит! Я пробовал эту операцию со многими различными конфигурациями (релизы, отладка и т. д.) и платформой (x86, x64), но это всегда одна и та же проблема.

Что я могу сделать?

Я использую Visual Studio 15 в 64-разрядной версии Windows 10.


person crasholino    schedule 11.12.2015    source источник
comment
Код всегда полезен. Также вы проверили, какие файлы включены в выпуск? также, если вы перейдете в выходную папку в файле проекта и запустите выходной файл .exe, это сработает?   -  person Pomadomaphin    schedule 11.12.2015
comment
Ну если попробовать запустить output.exe работает конечно.   -  person crasholino    schedule 11.12.2015
comment
Что вы имеете в виду под файлами, включенными в релиз?   -  person crasholino    schedule 11.12.2015
comment
когда я включил файлы в комментарий к выпуску, я боюсь, что у меня не было полного понимания проблемы.   -  person Pomadomaphin    schedule 12.12.2015
comment
См. stackoverflow.com/a/34015902/4583726, первоначальный вопрос касается WPF, основы использования CefSharp с Clickonce - это такой же.   -  person amaitland    schedule 14.12.2015


Ответы (4)


Недавно я также столкнулся с этой проблемой при развертывании приложения ClickOnce.

Я нашел решение этой проблемы на странице проблем CefSharp 1314 пользователем @CRoemheld по этой ссылке здесь .

Как отмечалось в другом месте, ClickOnce будет объединять управляемые библиотеки .DLL только в рамках процесса развертывания.

Но нам также необходимо включить собственные библиотеки DLL CEF как часть нашего приложения.

Не похоже, что есть простой способ сделать это через пользовательский интерфейс Visual Studio (я пробовал), но вы можете легко сделать это, вручную изменив файл .csproj, включив в него следующее.

Откройте файл .csproj и добавьте следующий фрагмент перед окончательным идентификатором </Project>.

<ItemGroup>
<Content
Include="$(SolutionDir)packages\cef.redist.x86.3.2526.1362\CEF\**\*" Exclude="$(SolutionDir)packages\cef.redist.x86.3.2526.1362\CEF\x86\**\*;$(SolutionDir)packages\cef.redist.x86.3.2526.1362\CEF\locales\**\*.pak">
<Link>%(RecursiveDir)%(Filename)%(Extension)</Link>
<Visible>false</Visible>
</Content>
</ItemGroup>

<ItemGroup>
<Content Include="$(SolutionDir)packages\cef.redist.x86.3.2526.1362\CEF\**\en-GB.*;$(SolutionDir)packages\cef.redist.x86.3.2526.1362\CEF\**\en-US.*">
  <Link>%(RecursiveDir)%(Filename)%(Extension)</Link>
  <Visible>false</Visible>
</Content>
</ItemGroup>

<ItemGroup>
<Content Include="$(SolutionDir)packages\cef.redist.x86.3.2526.1362\CEF\x86\**\*">
<Link>%(RecursiveDir)%(Filename)%(Extension)</Link>
<Visible>false</Visible>
</Content>
</ItemGroup>

<ItemGroup>
<Content Include="$(SolutionDir)packages\CefSharp.Common.47.0.4\CefSharp\x86\**\CefSharp.BrowserSubprocess.*">
  <Link>%(RecursiveDir)%(Filename)%(Extension)</Link>
  <Visible>false</Visible>
</Content>
</ItemGroup>'

Как только вы это сделаете, в Visual Studio на вкладке публикации, когда вы нажмете кнопку «Файлы приложения»

введите здесь описание изображения

Вы увидите необходимые зависимости CEFSharp, которые будут развернуты вместе с приложением.

введите здесь описание изображения

person Ocean Airdrop    schedule 24.09.2016
comment
Это хороший подход, НО, начиная с версии 63, неуправляемые ресурсы не нужно добавлять вручную. См.: github.com/cefsharp/CefSharp/wiki/ для списка всех необходимых файлов. - person d347hm4n; 14.06.2018

Я скачал CefSharp и использовал пример WinForms по умолчанию.

У меня были проблемы со сборкой в ​​x64, поэтому я пропустил это и использовал x86.

Это была проблема с лаунчером в один клик. В файле журнала говорится, что произошел сбой из-за проблемы с манифестом.

Я нашел это, которое предлагает меняем в настройки.

В свойствах проекта -> вкладка «Приложение» -> «Ресурсы» -> галочка «Иконка и манифест» вызвала проблему настройка «Вставить манифест с настройками по умолчанию». Установка значения «Создать приложение без манифеста» устраняет проблему.

Затем я удалил файл манифеста в дереве WinForms.example. Выполнил чистую сборку и опубликовал!

Теперь у меня есть рабочий oneclick.

Надеюсь, проблема с манифестом такая же, как и у вас.

person Pomadomaphin    schedule 11.12.2015
comment
Это не работает для меня. На самом деле установщик ClickOnce не будет работать без файла манифеста. - person Monica Aspiras Labbao; 12.12.2018

У меня практически тот же ответ, что и у @Ocean Airdrop, но также со следующими дополнительными вещами:

  1. Обратите внимание на версию CEF. у меня 69.0.0
  2. Обратите внимание на версию cef.redist. Он должен быть таким же, как у вас в проекте. Мой был 3.3497.1841;
  3. Включите также x64, если у вас x64. Таким образом, более полный фрагмент кода будет выглядеть следующим образом:
<ItemGroup>
    <Content Include="$(SolutionDir)packages\cef.redist.x86.3.3497.1841\CEF\**\*" Exclude="$(SolutionDir)packages\cef.redist.x86.3.3497.1841\CEF\x86\**\*;$(SolutionDir)packages\cef.redist.x86.3.3497.1841\CEF\locales\**\*.pak">
      <Link>%(RecursiveDir)%(Filename)%(Extension)</Link>
      <Visible>false</Visible>
    </Content>
  </ItemGroup>
  <ItemGroup>
    <Content Include="$(SolutionDir)packages\cef.redist.x86.3.3497.1841\CEF\**\en-GB.*;$(SolutionDir)packages\cef.redist.x86.3.3497.1841\CEF\**\en-US.*">
      <Link>%(RecursiveDir)%(Filename)%(Extension)</Link>
      <Visible>false</Visible>
    </Content>
  </ItemGroup>
  <ItemGroup>
    <Content Include="$(SolutionDir)packages\cef.redist.x86.3.3497.1841\CEF\x86\**\*">
      <Link>%(RecursiveDir)%(Filename)%(Extension)</Link>
      <Visible>false</Visible>
    </Content>
  </ItemGroup>
  <ItemGroup>
    <Content Include="$(SolutionDir)packages\CefSharp.Common.69.0.0\CefSharp\x86\**\CefSharp.BrowserSubprocess.*">
      <Link>%(RecursiveDir)%(Filename)%(Extension)</Link>
      <Visible>false</Visible>
    </Content>
  </ItemGroup>
  <ItemGroup>
    <Content Include="$(SolutionDir)packages\cef.redist.x64.3.3497.1841\CEF\**\*" Exclude="$(SolutionDir)packages\cef.redist.x64.3.3497.1841\CEF\x64\**\*;$(SolutionDir)packages\cef.redist.x64.3.3497.1841\CEF\locales\**\*.pak">
      <Link>%(RecursiveDir)%(Filename)%(Extension)</Link>
      <Visible>false</Visible>
    </Content>
  </ItemGroup>
  <ItemGroup>
    <Content Include="$(SolutionDir)packages\cef.redist.x64.3.3497.1841\CEF\**\en-GB.*;$(SolutionDir)packages\cef.redist.x64.3.3497.1841\CEF\**\en-US.*">
      <Link>%(RecursiveDir)%(Filename)%(Extension)</Link>
      <Visible>false</Visible>
    </Content>
  </ItemGroup>
  <ItemGroup>
    <Content Include="$(SolutionDir)packages\cef.redist.x64.3.3497.1841\CEF\x64\**\*">
      <Link>%(RecursiveDir)%(Filename)%(Extension)</Link>
      <Visible>false</Visible>
    </Content>
  </ItemGroup>
  <ItemGroup>
    <Content Include="$(SolutionDir)packages\CefSharp.Common.69.0.0\CefSharp\x64\**\CefSharp.BrowserSubprocess.*">
      <Link>%(RecursiveDir)%(Filename)%(Extension)</Link>
      <Visible>false</Visible>
    </Content>
  </ItemGroup>

Также нужно еще обратить внимание на то, что на целевом компьютере должна быть установлена ​​Visual Studio C++ Redist. Иначе все равно не получится.

person Monica Aspiras Labbao    schedule 12.12.2018
comment
Я установил цель сборки как AnyCPU и отредактировал файл .csproj, как указано выше @Monica-Aspiras-Labbao, изменил версию CEF и версию cef.redist, а также установил VIsual Studio C++ Redist, но приложение clickonce не запускается. Что-то еще нужно отредактировать? - person AUser123; 16.04.2019

Через пару дней, наконец, я это сделал. Решение проблемы следующее:

  1. Щелкните правой кнопкой мыши проект ---> Выгрузить проект
  2. Затем снова щелкните правой кнопкой мыши проект ---> Изменить имя проекта.csproj
  3. В конце файла и непосредственно перед закрывающим тегом добавьте следующий код: http://codepaste.net/ir2h7s (Кажется, блок-код сейчас не работает :\)

  4. Щелкните правой кнопкой мыши проект ---> Перезагрузить проект

  5. Опубликуйте свое приложение!
person crasholino    schedule 15.12.2015