chromium 31 关于安装包制作,支持目录拷贝

01 chromium 打包文件基本信息

我们一般使用mini_installer工程制作安装包,而直接相关的是setup工程。这两个工程文件目录如下:

out\DebugX64\obj\chrome\installer\mini_installer\mini_installer.vcxproj
out\DebugX64\obj\chrome\installer\setup\setup.vcxproj

chromium的完整项目all.sln,因为vs2019本身是32位程序,调试工程项目本身太大,比较不稳定,崩溃概率较大。如果用vs调试,最好裁剪掉all.sln的项目数量,或者独立打开感兴的项目。一般需要借助https://github.com/chromium/vs-chromium插件。目前(20210313)版本https://github.com/chromium/vs-chromium/releases/download/v0.9.37/VsChromium-0.9.37.vsix。如果下载失败,多尝试几次,或者找个vpn吧。

开源的世界也是有区分的,比如:chromium里面的插件的default_apps功能,内置了隔离区域。chrome/browser/extensions/default_apps.cc
在这里插入图片描述

02 关于mini_installer

chrome/installer/mini_installer/chrome.release中列出了所有需要打包的文件。

注意:这里是打包文件,就是mini_installer.exe里面会把指定的文件和文件夹加入。

chrome/installer/mini_installer/chrome.release中的文件是单文件列出的,默认不支持目录。可以考虑修改这个chrome.release的处理脚本chrome/tools/build/win/create_installer_archive.py,增加对自己添加的目录的支持。
demo如下:

import string

# add copy dirs files
def CopyDirs(path, dst_path):
    lsdir = os.listdir(path)
    dirs = [cdir for cdir in lsdir if os.path.isdir(os.path.join(path, cdir))]
    for d in dirs:
        curdir = os.path.join(path, d)
        dstdir = os.path.join(dst_path, d)
        if curdir and not os.path.exists(dstdir):
            #print(dstdir)
            if not os.path.exists(dstdir):
                g_archive_inputs.append(curdir)
            os.makedirs(dstdir)
        #print(curdir)
        #print(dstdir)
        CopyDirs(curdir, dstdir)
    files = [i for i in lsdir if os.path.isfile(os.path.join(path,i))]
    for f in files:
        curfile = os.path.join(path, f)
        dstfile = os.path.join(dst_path, f)
        if not os.path.exists(dstfile):
            g_archive_inputs.append(curfile)
        #print(curfile)
        #print(dstfile)
        shutil.copy(curfile, dstfile)

# def CopySectionFilesToStagingDir  add
# g_archive_inputs.append(src_path) after mod
# out\ReleaseX64\selfData    dir
        if(string.find(src_path, '.\\selfData') == 0):
          CopyDirs(src_path, dst_path)
        else:
          shutil.copy(src_path, dst_dir)

当安装包增加了文件或文件夹后,在安装的时候,需要指定对这些文件或文件夹的处理。
这个处理过程在’chrome/installer/setup/installer_worker.cc’中。
如果不是运行时加载的dll、exe等应用,可以直接加入 void AddChromeWorkItems 函数,如果是运行时加载的内容。最好按照void AddChromeWorkItems 完全相同的方法增加处理函数。

比如:我在out\ReleaseX64\selfData 目录下增加了一些非运行时资源,可以用如下方式处理。
void AddChromeWorkItems 函数内的适当位置增加

  // zhangfj 20210313 拷贝内置插件到Application目录中
  install_list->AddCopyTreeWorkItem(src_path.Append(L"selfData"),
      target_path.Append(L"selfData"),
      temp_path, WorkItem::NEW_NAME_IF_IN_USE,
      new_chrome_exe);

这样即可将selfData文件夹按照到按照目录。

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值