Chromium - mini_installer忽略了品牌

时间:2018-05-12 14:15:34

标签: windows-installer chromium ninja

从源代码构建铬后,您可以通过运行

为Windows创建“迷你安装程序”
ninja -C out\BuildFolder mini_installer

此工作正常,并在mini_installer.exe中创建out\BuildFolder

有关详细信息,请参阅Chromium - How to make an actual installer out of mini_installer.exe

但在运行mini_installer.exe后,应用程序会忽略我的品牌和grd资源自定义。

应该使用我已经定制的“IDS_PRODUCT_NAME_BASE”。

以下是我申请品牌的文件:

  • chrome\app\chromium_strings.grd
  • chrome\app\settings_chromium_strings.grdp
  • chrome\app\theme\chromium\BRANDING

但它似乎忽略了它们。

  • 该程序安装在C:\Program Files (x86)\Chromium而不是C:\Program Files (x86)\CustomProductName
  • 可执行文件仍以chrome.exe而非CustomProductName.exe
  • 命名

如何定制?

1 个答案:

答案 0 :(得分:2)

品牌不会改变生成的可执行文件的名称。您应修改src\chrome\BUILD.gn以将名称从chrome.exe更改为CustomProductName.exe,具体如下:

if (is_win) {
action("reorder_imports") {
script = "//build/win/reorder-imports.py"

# See comment in chrome_dll.gypi in the hardlink_to_output
# target for why this cannot be 'initial' like the DLL.
inputs = [
  "$root_out_dir/initialexe/CustomProductName.exe",
]
outputs = [
  "$root_out_dir/CustomProductName.exe",
]
if (symbol_level != 0) {
  outputs += [ "$root_out_dir/CustomProductName.exe.pdb" ]
}
... later in the file ...
chrome_binary("chrome_initial") {
  if (is_win) {
    output_name = "initialexe/CustomProductName"

这样做会在CustomProductName.exe中生成Chrome.exe而不是BuildFolder。之后,您还应通过修改此文件来通知迷你安装程序:src\chrome\installer\mini_installer\BUILD.gn

action(archive_name) {
script = "//chrome/tools/build/win/create_installer_archive.py"

release_file = "chrome.release"

inputs = [
  "$chrome_dll_file",
  "$root_out_dir/CustomProductName.exe",
  "$root_out_dir/locales/en-US.pak",
  "$root_out_dir/setup.exe",
  "//chrome/tools/build/win/makecab.py",
  release_file,
]

这些更改只会更改可执行文件的名称。您还必须修改源代码以反映这些更改。

在此文件中指定浏览器可执行文件的名称:src\chrome\installer\util\util_constants.cc

const wchar_t kChromeExe[] = L"CustomProductName.exe";

应在此文件中指定安装文件夹的路径: src\chrome\install_static\chromium_install_modes.cc

const wchar_t kCompanyPathName[] = L"CompanyName";

const wchar_t kProductPathName[] = L"CustomProductName";

同样,您还必须在此文件中更改公司名称和应用名称:src\chrome\installer\util\browser_distribution.cc。我不确定当前版本的Chromium是否仍使用BrowserDistribution类的数据。

让我知道它是否有效。我刚刚通过我们的回购历史来找出这些变化。

更新:

评论显示了更多地方:

打开chrome_elf/BUILD.gn并在此处更改:

$root_out_dir/CustomProductName.exe

并在此处更改:chrome/installer/mini_installer/chrome.release

CustomProductName.exe: %(ChromeDir)s\

并在此处更改:build/win/reorder-imports.py

input_image = os.path.join(input_dir, 'CustomProductName.exe')
output_image = os.path.join(output_dir, 'CustomProductName.exe')
... later on in the file ...
for fname in glob.iglob(os.path.join(input_dir, 'CustomProductName.exe.*')):