Chromium - mini_installer игнорирует брендинг - PullRequest
0 голосов
/ 12 мая 2018

После сборки хрома из исходного кода вы можете создать «мини-установщик» для Windows, запустив

ninja -C out\BuildFolder mini_installer

Это прекрасно работает и создает mini_installer.exe в out\BuildFolder.

см. Chromium - Как сделать из установочного файла 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 голосов
/ 12 мая 2018

Брендинг не изменит имя созданных исполняемых файлов. Вам следует изменить 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.

Дайте мне знать, если это работает. Я просто просмотрел историю репо, чтобы выяснить эти изменения.

UPDATE:

Комментарии показывают еще пару мест:

Открыть 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.*')):
...