zoukankan      html  css  js  c++  java
  • 使用CefSharp在.Net程序中嵌入Chrome浏览器(十)——独立文件夹部署

    CefSharp本身携带了一大堆文件,这些文件默认直接释放在exe文件底下,这种方式本身没有什么问题,但多了一大堆文件后不是很好看。本文这里就介绍一个方法,使得可以将CEF相关的文件部署到独立的文件夹。

    在开始改造之前,还是得另外新建一个工程安装一次CEFSharp,这样才能获取到相关资源文件。然后从这些资源文件中分离出来。

    首先把CEF进程相关的文件拷贝到一个独立的文件夹:

      

      

    然后我们的程序中只需要引用CEFSharp相关的.net代码的dll,主要有如下几个:

      

    修改主代码的配置,主要包括如下几个部分:

    1. 修改PATH环境变量,使得可以从cef文件夹中加载dll。

        var path = Environment.GetEnvironmentVariable("PATH");
        Environment.SetEnvironmentVariable("PATH", path + ";" + cef_root);

    1. 修改CEFSetting的BrowserSubprocessPath,ResourcesDirPath,LocalesDirPath,使得从独立的cef文件夹中加载数据。

      var settings = new CefSettings()
      {
          CefCommandLineArgs =
          {
              {"proxy-auto-detect""0"},
              {"no-proxy-server""1"},
          },

          BrowserSubprocessPath      = $@"{cef_root}CefSharp.BrowserSubprocess.exe",
          UserDataPath               = $@"{cef_root}UserData",
          ResourcesDirPath           = cef_root,
          LocalesDirPath             = cef_root,
          LogSeverity                = LogSeverity.Disable,
          Locale                     = "zh-cn",
          RemoteDebuggingPort        = 33229,
          WindowlessRenderingEnabled = true,
          IgnoreCertificateErrors    = true,
          CachePath                  = $@"{cef_root}Cache",
      };

    2. 修改Cef.Initialize的performDependencyCheck参数为false,关闭检查,否则启动时仍然会检查当前目录下是否存在相关文件。
      Cef.Initialize(settings, performDependencyCheck: false, browserProcessHandler: null);
    

    另外,如果不能正常启动,可以在看下调试模式下的output窗口的输出,一般会有相关提示,如:

    [1112/093545.497:FATAL:v8_initializer.cc(185)] Failed to open V8 file 'F:devcef atives_blob.bin' (reason: -4)

    经过这番改造后,我们的程序中只引用cef的.net封装文件,因此不需要新建一个x86配置工程了。(当然,我们的程序本身仍然不能是any cpu的,必须得是x68或x64)

  • 相关阅读:
    【Unity】校验身份证号有效性
    【Unity】敏感词过滤
    【C#】2.C#程序结构
    常用Git命令手册
    Android删除指定路径下指定前缀或后缀的文件
    《Android源码设计模式》学习笔记之ImageLoader
    Android截屏的几种实现
    react 项目 合并单元格解决方案
    iconfont字体图标的使用方法(转)
    如何让antd的Modal组件的确认和取消不显示(或自定义按钮)(转载)
  • 原文地址:https://www.cnblogs.com/TianFang/p/10055652.html
Copyright © 2011-2022 走看看