Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Компьютеры » Программы » Ungoogled Chromium (часть 1)

Модерирует : gyra, Maz

 Версия для печати • ПодписатьсяДобавить в закладки
На первую страницук этому сообщениюк последнему сообщению

Открыть новую тему     Написать ответ в эту тему

virjokk

Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Сохранять в кодировке UTF-8, имя любое, расширение - bat, cmd

Код:
<# :
@echo off
cd /d "%~dp0"
wmic process where "name like '%%chrome.exe%%'" get commandline /value 2>nul | find "%~dp0chrome.exe" && goto :eof
powershell.exe -nol -nop -ex bypass -c "&{[ScriptBlock]::Create((gc -lit '%~f0' -enc UTF8) -join [Char]10).Invoke(@(&{$args}%*))}"
exit /b
#>
# Запускатель с функцией обновления и очистки браузера Ungoogled Chromium (сборка от Macchrome).
# Без параметров: с заданным интервалом проверяет обновления, если есть - устанавливает/обновляет браузер, выдавая уведомление в трее,
# затем запускает Ungoogled. Создает ярлык на рабочем столе (если его еще нет) с запуском без параметров.
# После закрытия окна браузера удаляются временные папки и ключи реестра, указанные в соответствующих переменных.
# Параметры можно указывать при старте батника в командной строке консоли Windows (напр., chrome.bat -onlyrun),
# либо в ярлыке на рабочем столе. Чтобы в Windows 10 запустить консоль в папке батника нужно открыть эту папку в проводнике,
# установить курсор в адресную строку, вместо адреса ввести на клавиатуре команду «CMD» и нажать «Enter».
# Для правильной работы достаточно поместить батник в любую пустую папку (кроме корневых, системных и с ограниченным доступом)
# и запустить.При первом старте в эту папку скачивается последняя версия Ungoogled, создается ярлык на рабстоле и запускается браузер
# с набором ключей, обеспечивающим в том числе портативную работу. В дальнейшем про батник можно не вспоминать и запускать браузер
# только с ярлыка. Обновления скачиваются во временную подпапку в той же папке, где расположен батник, и после их установки
# временная подпапка удаляется. Никуда больше батник в системе не лезет. Учитывается специфика сборки от Macchrome: иногда
# он выпускает несколько сборок одной и той же версии Ungoogled, соответственно, будет скачиваться каждая новая сборка.
# Сам батник - это гибрид Powershell/CMD, то есть его основная часть является сценарием на PowerShell, а несколько первых строк
# на CMD нужны только для старта этого сценария. В современных Windows скрипты PS можно запускать и напрямую, но для этого
# нужно предварительно дать разрешение на исполнение неподписанных сценариев, а также либо зарегистрировать файловую ассоциацию на
# скрипты PS, либо из командной строки запускать PS с аргументами, что хлопотно и вряд ли будет делаться пользователями.
# Идея этого батника и принцип работы позаимствованы у Insorg с его крутейшей "быстрой настройкой Chrome браузеров по методу трёх батников".
# Здесь то, что делает несколько батников от Insorg, объединено в один. Кроме того, у Insorg все сделано на "чистом" CMD.
# Содержимое батника может быть легко изменено обладателями минимальных познаний в PowerShell, который не является языком
# программирования и очень прост в освоении.
# Параметры батника:
# -onlyrun - не проверять обновления, сразу запуск браузера;
# -onlycheck - наоборот, не запускать браузер, только проверить обновления независимо от установленного интервала;
# -nolnk - не создавать ярлык на рабочем столе;
# -ask - перед обновлением - спрашивать.
# Переменные внутри батника:
# $CheckInterval - интервал проверки обновлений (количество дней), по умолчанию - 3, если 0, будет проверять при каждом запуске.
# $userdatadir - имя папки профиля, по умолчанию - User Data.
# $argslist - список ключей запуска хрома.
# $udclean, $uddclean, $regclean - файлы, папки и ключи реестра, удаляемые после закрытия браузера.
# Ключи браузера, удаляемые папки и ветки реестра обязательно просмотрите и удалите лишнее или добавьте свое.
# Временно отключить ключ запуска или удаляемый файл/папку можно просто закомментировав соответствующиую строку символом #.
# Каждая запись добавляется отдельной строкой в двойных кавычках. В $udclean указывается содержимое (только имена, без путей)
# папки User Data, в $uddclean - User Data\Default, в $regclean - содержимое HKEY_CURRENT_USER\SOFTWARE.
# Сам дистр ставится как есть, никакие "лишние" файлы не удаляются.
# В создаваемом ярлыке запуск батника происходит через PowerShell, чтобы скрыть окно консоли cmd.
# Добавить параметр в ярлык можно, отредактировав в свойствах ярлыка путь:  
# C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe -NoProfile -WindowStyle Hidden -Command cmd /c 'C:\progr\ungoogled\chrome.cmd' -onlyrun
# Путь к батнику обязательно в одинарных кавычках.
 
$CheckInterval = 3
 
$userdatadir = "User Data"
 
$batfilename = $MyInvocation.Line -match "\'(\w:\\.+)\'" | %{$matches[1]}
$batfilepath = Split-path "$batfilename"
$baddirs = "\w:\\$|\w:\\Windows.*|\w:\\Users.*|\w:\\ProgramData.*|\w:\\Documents and Settings.*|\w:\\Program Files$|\w:\\Program Files (x86)$"
if ($batfilepath -match $baddirs) {write-host "$batfilepath is bad directory for Ungoogled" -foregroundcolor red; return}
 
#$proxy="$batfilepath\opera-proxy.exe"
#$proxyarg="-bind-address 127.0.0.1:18081","-country EU"
 
$argslist = @(
   "--user-data-dir=`"$userdatadir`"" # Определяет имя каталога пользовательских данных (по умолчанию User Data)
   "--disable-machine-id" # Отключает использование сгенерированного идентификатора, специфичного для компьютера, для блокировки каталога пользовательских данных на этом компьютере. Это используется для включения переносимых каталогов пользовательских данных (делает браузер портабельным)
   "--disable-encryption-win" # Отключает шифрование файлов cookie, паролей и настроек, которое использует сгенерированный ключ шифрования для конкретного компьютера. Это используется для включения переносимых каталогов пользовательских данных (делает браузер портабельным)
   "--no-default-browser-check" # Отключает проверку браузера по умолчанию
   "--disable-gpu-shader-disk-cache" # Отключает кэширование на диске шейдеров GPU
   "--gpu-disk-cache-size-kb=1" # Определяет размер GPU кэша в килобайатах
   "--disk-cache-dir=nul" # Определяет каталог дискового кэша (значение nul - не кэшировать)
   "--disk-cache-size=1" # Определяет размер дискового кэша в килобайатах
   "--disable-search-engine-collection" # Отключает автоматическое сканирование веб-страниц поисковыми системами
   "--disable-sharing-hub" # Отключает кнопку центра общего доступа
   "--hide-sidepanel-button" # Скрывает кнопку боковой панели
   "--remove-tabsearch-button" # Удаляет кнопку поиска вкладок из панели вкладок
   "--remove-grab-handle" # Удаляет зарезервированное пустое пространство в полосе вкладок для перемещения окна
   "--scroll-tabs=always" # Определяет, вызовет ли прокрутка переключение на соседнюю вкладку, если курсор наведен на вкладки, или на пустое пространство рядом с вкладками. Флаг требует одного из значений: always, never, incognito-and-guest. Если этот параметр опущен, по умолчанию используется поведение, зависящее от платформы, которое в настоящее время включено только в настольной Linux
   "--popups-to-tabs" # Позволяет всплывающим окнам открываться в новых вкладках
   "--close-window-with-last-tab=never" # Определяет, должно ли окно закрываться после закрытия последней вкладки. Принимает только значение never.
   "--show-avatar-button=never" # Устанавливает видимость кнопки аватара. Для флага требуется одно из значений: always, incognito-and-guest (показывать только режимы инкогнито или гостевой) или never
   "--tab-hover-cards=tooltip" # Позволяет удалить всплывающие миниатюры при наведении на вкладку или использовать всплывающую подсказку в качестве замены. Это можно установить с помощью значений none или tooltip
   "--extension-mime-request-handling=always-prompt-for-install" # Изменяет способ обработки типов расширения MIME (CRX и пользовательские сценарии). Допустимые значения: download-as-regular-file или always-prompt-for-install. Если вообще не использовать, то будет нормальное поведение
   "--enable-features=#enable-parallel-downloading" # Разрешает одновременную закгрузку нескольких файлов
   "--force-punycode-hostnames" # Преобразует все интернационализированные доменные имена в punycode (ASCII-представление Unicode)
   "--proxy-server=$(($proxyarg -Split " ")[1])" # IP адрес и порт локального прокси-сервера. В данном случае - тот, что прописан выше в переменной $proxyarg
#   "--disable-beforeunload" # Отключает диалоговые окна JavaScript, запускаемые перед выгрузкой JS модуля/скрипта
#   "--disable-grease-tls" # Отключает GREASE для TLS. В сочетании с --http-accept-header позволяет браузеру больше походить на tor-браузер
#   "--fingerprinting-canvas-image-data-noise" # Реализует обман при снятии отпечатков пальцев для данных изображения Canvas, полученных через API JS. В данных не более 10 пикселей слегка изменены
#   "--fingerprinting-canvas-measuretext-noise" # Масштабирует выходные значения Canvas::measureText() со случайно выбранным коэффициентом в диапазоне от -0,0003% до 0,0003%, который пересчитывается при каждой инициализации документа
#   "--fingerprinting-client-rects-noise" # Реализует обман API JS с помощью отпечатков пальцев getClientRects() и getBoundingClientRect(), масштабирует их выходные значения со случайным коэффициентом в диапазоне от -0,0003% до 0,0003%, которые пересчитываются для каждого экземпляра документа
#   "--hide-crashed-bubble" # Скрывает всплывающее окно с сообщением «Восстановить страницы? Chromium завершил работу неправильно». Это отображается при запуске после того, как браузер не завершил работу корректно
#   "--http-accept-header" # Изменяет значение по умолчанию AcceptHTTP-заголовка, отправляемого с HTTP-запросами. В сочетании с --disable-grease-tls позволяет браузеру больше походить на tor-браузер
#   "--keep-old-history" # Отключает удаление локальной истории браузера через 90 дней
#   "--max-connections-per-host" # Настроить максимально допустимое количество подключений на хост. Допустимые значения: 6 и 15
#   "--omnibox-autocomplete-filtering" # Ограничивает результаты автозаполнения омнибокса комбинацией поисковых предложений (если они включены), закладок и внутренних страниц Chrome. Принимает значения: search, search-bookmarks, search-chrome, и search-bookmarks-chrome
#   "--bookmark-bar-ntp" # Устанавливает видимость панели закладок на странице новой вкладки. Принимает только значение never.
#   "--close-confirmation" # Показывать предупреждение при закрытии окна браузера. Принимает значения: last (запрос при закрытии последнего окна с несколькими вкладками) и multiple (запрос только если открыто более одного окна)
#   "--custom-ntp" # Позволяет установить собственный URL-адрес для страницы новой вкладки. Значение может быть внутренним (например, about:blank или chrome://new-tab-page), внешним (например example.com) или локальным (например, file:///tmp/startpage.html). Это относится и к окнам в режиме инкогнито, если не установлено значение chrome:// внутренней страницы
#   "--enable-incognito-themes" # Позволяет темам изменять внешний вид окон в режиме инкогнито
#   "--hide-extensions-menu" # Скрывает контейнер расширений. Сюда входит значок головоломки, а также любые закрепленные расширения
#   "--hide-fullscreen-exit-ui" # Скрывает значок «X», который появляется, когда курсор мыши перемещается к верхней части окна в полноэкранном режиме. Кроме того, это скрывает всплывающее окно «Нажмите F11, чтобы выйти из полноэкранного режима»
#   "--hide-tab-close-buttons" # Скрывает кнопки закрытия на вкладках
#   "--enable-features=MinimalReferrers" # Удаляет все рефереры перекрестного происхождения и разделяет рефереры одного и того же происхождения до источника. Имеет более низкий приоритет, чем NoCrossOriginReferrers
#   "--enable-features=NoCrossOriginReferrers" # Удаляет все рефереры из перекрестного источника. Имеет более низкий приоритет, чем NoReferrers
#   "--enable-features=NoReferrers" # Удаляет все рефереры
#   "--enable-features=SetIpv6ProbeFalse" # Принудительно делает результат проверки IPv6 браузера (т. е. проверки подключения IPv6) неуспешным. Это приводит к тому, что адреса IPv4 имеют приоритет над адресами IPv6. Без этого флага результат проверки считается успешным, что приводит к использованию IPv6 вместо IPv4, когда это возможно
#   "--enable-features=ClearDataOnExit" # Очищает все данные просмотра при выходе
#   "--enable-features=DisableLinkDrag" # Предотвращает перетаскивание ссылок и выделенного текста. Позволяет выделить текст из середины ссылки. Также позволяет начать выбор без предварительной очистки существующего. Это поведение похоже на поведение старой Opera
#   "--enable-features=DisableQRGenerator" # Отключает QR-генератор для обмена ссылками на страницы
#   "--disable-top-sites" # Отключает самые популярные сайты и наиболее посещаемые записи на странице новой вкладки
#   "--disable-webgl" # Отключает все версии WebGL
#   "--enable-low-end-device-mode" # Принудительно использовать режим нижнего уровня устройства, если он установлен
#   "--force-dark-mode" # Включает темный режим в пользовательском интерфейсе для платформ, которые его поддерживают
#   "--no-pings" # Не отправлять пинг-запросы проверки гиперссылок
#   "--webrtc-ip-handling-policy" # Ограничить IP-адреса и интерфейсы, которые использует WebRTC
#   "--incognito" # Старт браузера в режиме инкогнито
#   "--start-maximized" # Запускает браузер в развернутом виде независимо от любых предыдущих настроек
)
 
$udclean = @(
   "BrowserMetrics"
   "Crowd Deny"
   "FileTypePolicies"
   "FirstPartySetsPreloaded"
   "GrShaderCache"
   "hyphen-data"
   "MediaFoundationWidevineCdm"
   "MEIPreload"
   "OnDeviceHeadSuggestModel"
   "OptimizationHints"
   "OriginTrials"
   "PKIMetadata"
   "PrivacySandboxAttestationsPreloaded"
   "SafetyTips"
   "segmentation_platform"
   "ShaderCache"
   "SSLErrorAssistant"
   "Subresource Filter"
   "TpcdMetadata"
   "TrustTokenKeyCommitments"
   "WidevineCdm"
   "ZxcvbnData"
   "BrowserMetrics-spare.pma"
   "chrome_shutdown_ms.txt"
   "Module Info Cache"
)
 
$uddclean = @(
   "BudgetDatabase"
   "Cache"
   "chrome_cart_db"
   "Code Cache"
   "commerce_subscription_db"
   "coupon_db"
   "databases"
   "discounts_db"
   "DawnCache"
   "Feature Engagement Tracker"
   "File System"
   "GPUCache"
   "IndexedDB"
   "optimization_guide_hint_cache_store"
   "optimization_guide_model_metadata_store"
   "parcel_tracking_db"
   "Service Worker"
   "shared_proto_db"
   "Shared Dictionary"
   "Site Characteristics Database"
   "Sync Data"
   "VideoDecodeStats"
   "WebStorage"
)
 
$regclean = @(
   "Chromium"
)
 
$lastcheck = "01011970"
$macbuild = "1"
 
$onlyrun = $args -match "^([/-]|--)?onlyrun$"
$onlycheck = $args -match "^([/-]|--)?onlycheck$"
$nolnk = $args -match "^([/-]|--)?nolnk$"
$ask = $args -match "^([/-]|--)?ask$"
 
[Net.ServicePointManager]::SecurityProtocol = 'ssl3,tls,tls11,tls12'
Add-Type -AssemblyName System.Web
Add-Type -AssemblyName System.Windows.Forms
Add-Type -AssemblyName System.Drawing
 
Function IconHandle {
   $iconBase64=@('iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAACXBIWXMAAAsTAAALEwEAmpwYAAADlUlEQVR4nO2U+'
   '0tTYRzG979EEf1UBBbFtF21C0TShXJagVFkkd0oKCFkU1mmaYhlRqUeN2dNu7iZba3UMt0vao0uK7rQ1Wp2YddzeeI9skp33u247Lc'
   'eeOBwfnk+3+f9vq9C8V9pSF97L0NlHC1ZZnzQWlTvHdlV18scutC5RvEvpTLfL1h2+O1rZWFEUG4SIOXlOzkUlL+LHDjfXTZjweraf'
   'mXmvrFxZZ50qJQzDQI2HvvCHTpnN/xduNF3QrmFkx081bptPIobBu6kFa4qfeRQGtIL/tNZ+QJ21Y8+n164cfTkdCpPCWEQUNx41yM'
   'vvM69RLk1/dpp1hTyOGK7uiElgLbl7sOle9kZByDeWBpgk4dbLBo18x3KmjAWb5duQb1ZQM1FAT4/EI4CMQ54EwCco4DpGlB6ZbJNX'
   'QIqbvI4fodF1UAM5T0X9lABdNZbvWomCOKM3TEs3jEZIrdIgP8VEIkB14cBs2PCXSMT/z58A2o9AipcHCp7WVQPRnFyaLJNLu84FUD'
   'T6g/HAVSNISxYy/+CIJOT8BefgLzTgNY82YYzwMvPwFhQwClvYnDcZX1fIRm+3G6ZEw+Pe0lJDPNXC1i0nRNrJ1NKhf8JEWEBz0uOC'
   'lBNWug+o0qc3mbbMBVA3RzEwnxOhPC9EMTaaeFxO0aA9z8EKoDYwo2mygSA7LaOkgQAJojM6ogIEAwDx52pASqdQIxHCoBOl8QCdh6'
   'VAhAXsoidFkCUSwVg75EAaF9HA8g6G8IDP2buCLqbzAkAKxlmNg2AuMrJiUtIFo0Wnt8wsYTXH6exhETa1qchGkC2JQh/gBevmhQEC'
   'X/1GXg2BlTdTzJ9/7j0NSTSWd23k7WwviMkQpApSdVkJ4jJN/n37CNwsItNWr/JNRRQ0KS/ZFWpmW9UAGK9JYhabxS+TzxCLET7Pgg'
   '45QJW1fFixdT6B6MwO87vpgIQ6ax9I8kApKyt5sVjKO6KJZ/e4wsqUinH1jxPzbzjZQM0h8TwVfX0xSM23wujoqchWyFH+jb7NjXzV'
   'RaApjEiAhxx0ac/MRhBmbPtoqzwuPTWa1VyIDR1LHLPscnDbzq8inSktV4uTHUcuhoexl567dOefKr0l5i5Okv/sNTt0DSHkNfCSm6'
   '76ZYvJPvM5SjHZs/SWd0eDfPk12O1oimMyoHfweV94zC5vYGUV+1vlWOxzMpub8/df9XeUtbT4SZvO/V5/S9Fcv0EOC7m4RioxTcAA'
   'AAASUVORK5CYII=') -join ''
   $iconBytes = [Convert]::FromBase64String($iconBase64)
   [System.Drawing.Icon]::FromHandle(
      ([System.Drawing.Bitmap]::new(
         [System.IO.MemoryStream]::new($iconBytes, 0, $iconBytes.Length)
      ).GetHIcon())
   )
}
 
Function ShowBaloon ($message,$title="Ungoogled Chromium",$messagetype="Info") {
   $balloon = New-Object System.Windows.Forms.NotifyIcon
   $balloon.Icon = IconHandle
   $balloon.BalloonTipIcon  = [System.Windows.Forms.ToolTipIcon]$messagetype
   $balloon.BalloonTipText  = $message
   $balloon.BalloonTipTitle = $title
   $balloon.Visible = $true
   $balloon.ShowBalloonTip(10000)
}
 
Function SetVar ($name,$value) {
   (Get-Content -Path "$batfilename") -replace "(?<=^\s*\x24$name\s*=\s*\x22)[^\x22]*","$value" | Set-Content -Path "$($batfilename).tmp"
   Move-Item -Path "$($batfilename).tmp" -Destination "$batfilename" -Force
}
 
Function Check {
   try {$offsite = Invoke-WebRequest -Uri "https://github.com/macchrome/winchrome/releases/latest"}
   catch {ShowBaloon -Message "Github.com is unavailable" -MessageType "Error"; return}
   $Script:latest = $offsite.links.href | ?{
     $_ -match ".+ungoogled-chromium-([\d\.]+-\d+)_Win64\.7z"
   } | Select -Last 1 | %{$Script:distrlink = $matches[0]; $matches[1]}
   if (-not $latest) {ShowBaloon -Message "Error parsing version" -MessageType "Error"; return}
   SetVar -name "lastcheck" -value "$(Get-Date -Format 'ddMMyyyy')"
   $current = (Get-Item -Path "$batfilepath\chrome.exe" -ea 0).VersionInfo.ProductVersion
   if ([version]$latest.split('-')[0] -le [version]$current) {
      if ([int]$latest.split('-')[1] -le [int]$macbuild) {return}
   }
   if ($ask) {
      if (
           [System.Windows.Forms.MessageBox]::Show("Ungoogled $latest is new version! Update?","Shooze action","YesNo","Question") -like 'Yes'
         )  
      {
         return $true
      }
   } else {
      ShowBaloon -Message "Ungoogled $latest is new version, start update..."
      return $true
   }
}
 
Function GetFile ($link,$name,$title,$text) {
   $progressForm = New-Object System.Windows.Forms.Form
   $progressForm.Size = New-Object System.Drawing.Size(317,150)
   $progressForm.StartPosition = 'CenterScreen'
   $progressForm.FormBorderStyle = [System.Windows.Forms.FormBorderStyle]::FixedSingle
   $progressForm.BackColor = '#0B5162'
   $progressForm.TopMost = $True
   $progressForm.Text = "$title"
   $progressForm.Icon = IconHandle
   
   $progressBar = New-Object System.Windows.Forms.ProgressBar
   $progressBar.Location = New-Object System.Drawing.Point(10, 50)
   $progressBar.Size = New-Object System.Drawing.Size(280, 20)
   $progressForm.Controls.Add($progressBar)
   
   $progressLabel = New-Object System.Windows.Forms.Label
   $progressLabel.Location = New-Object System.Drawing.Point(10, 20)
   $progressLabel.Size = New-Object System.Drawing.Size(280, 20)
   $progressLabel.TextAlign = [System.Drawing.ContentAlignment]::MiddleLeft
   $progressLabel.Font = new-object System.Drawing.Font('Ariel',9,[System.Drawing.FontStyle]::Bold)
   $progressLabel.ForeColor = '#D7E7F7'
   $progressForm.Controls.Add($progressLabel)
   
   $uri = New-Object "System.Uri" $link
   $request = [System.Net.HttpWebRequest]::Create($uri)
   $request.set_Timeout(15000)
   $response = $request.GetResponse()
   $responseContentLength = $response.get_ContentLength()
   $totalLength = $response.get_ContentLength() / 1MB
   $responseStream = $response.GetResponseStream()
   $targetStream = New-Object -TypeName System.IO.FileStream -ArgumentList "$name", Create
   $buffer = new-object byte[] 10KB
   $count = $responseStream.Read($buffer,0,$buffer.length)
   $downloadedBytes = $count
 
   $progressForm.Show()
   while ($count -gt 0)
   {
       $targetStream.Write($buffer, 0, $count)
       $count = $responseStream.Read($buffer,0,$buffer.length)
       $downloadedBytes = $downloadedBytes + $count
       $progressBar.Value = (($downloadedBytes / 1MB) / $totalLength) * 100
       $progressLabel.Text = "$($text):   $('{0:N2} MB' -f ($downloadedBytes / 1MB))   of   $('{0:N2} MB' -f ($totalLength))"
       $progressForm.Refresh()
   }
   $targetStream.Flush()
   $targetStream.Close()
   $targetStream.Dispose()
   $responseStream.Dispose()
   $progressForm.Close()
}
 
Function Update {
   if ((ps chrome -ea 0).Path -eq "$batfilepath\chrome.exe") {
      ShowBaloon -Message "Ungoogled is running" -MessageType "Error"; return
   }
   $Script:tmp = (New-Item -Path $("$batfilepath\"+"temp"+(get-random).tostring()) -ItemType Directory).FullName
   $distrname = $distrlink.split('/')[-1]
   try {GetFile -link "$distrlink" -name "$tmp\$distrname" -title "Ungoogled" -text "v$($Latest)"}
   catch {ShowBaloon -Message "Error download file $distrname" -MessageType "Error"; return}
   try {GetFile -link "https://www.7-zip.org/a/7zr.exe" -name "$tmp\7zr.exe" -title "7-zip" -text "Latest 7-zip"}
   catch {ShowBaloon -Message "Error download 7zip" -MessageType "Error"; return}
   &$tmp\7zr.exe x "$tmp\$distrname" -o"$tmp" -y
   if ($LASTEXITCODE -ne 0) {ShowBaloon -Message "Error unpack file $distrname" -MessageType "Error"; return}
   ShowBaloon -Message "Unpack and copy files, and start Ungoogled..."
   $nodel = "$userdatadir","$($tmp.split('\')[-1])","$($batfilename.split('\')[-1])","$(($proxy -Split '\\')[-1])","$((($proxy -Split "$batfilepath\",0,"SimpleMatch") -Split '\\')[1])"
   Get-Item -Path "$batfilepath\*" -Exclude $nodel -ea 0 | Remove-Item -Recurse -Force -ea 0
   Copy-Item -Path "$tmp\ungoogl*\*" -Destination "$batfilepath" -Recurse -Force
   SetVar -name "macbuild" -value $latest.split('-')[1]
   if (-not [IO.Directory]::Exists("$batfilepath\$userdatadir")) {
      New-Item -Path "$batfilepath\$userdatadir" -ItemType Directory -Force | Out-Null
      @(
        '{"distribution":{"alternate_shortcut_text":false,"chrome_shortcut_icon_index":0,"create_all_shortcuts":true,'
        '"do_not_create_desktop_shortcut":true,"do_not_create_quick_launch_shortcut":true,"do_not_create_taskbar_shortcut":true,'
        '"do_not_launch_chrome":true,"do_not_register_for_update_launch":true,"import_bookmarks":false,"import_history":false,'
        '"import_home_page":false,"import_search_engine":false,"make_chrome_default":false,"make_chrome_default_for_user":false,'
        '"show_welcome_page":false,"skip_first_run_ui":true,"system_level":false,"verbose_logging":false},'
        '"first_run_tabs":[],"homepage":"chrome://chrome-urls","homepage_is_newtabpage":false,"safebrowsing":{"enabled":false},'
        '"session":{"restore_on_startup":1},"alternate_error_pages":{"enabled":false},"NewTabPage":{"DisabledModules":["dummy","dummy2"],'
        '"ModulesVisible":false},"account_id_migration_state":2,"autofill":{"credit_card_enabled":false,"enabled":false,'
        '"orphan_rows_removed":true,"profile_enabled":false},"bookmark_bar":{"show_apps_shortcut":false,"show_on_all_tabs":false,'
        '"show_only_on_ntp":true,"show_reading_list":false},"browser":{"show_home_button":true,"check_default_browser":false,'
        '"clear_data":{"browsing_history_basic":true,"cache_basic":true,"cookies_basic":true,"form_data":true,"hosted_apps_data":true,'
        '"media_licenses":true,"passwords":true,"preferences_migrated_to_basic":true,"site_settings":true,"time_period":4,'
        '"time_period_basic":4},"clear_lso_data_enabled":true,"has_seen_welcome_page":true,"last_clear_browsing_data_tab":1,'
        '"window_placement":{"bottom":720,"left":64,"maximized":true,"right":1200,"top":32}},"credentials_enable_autosignin":false,'
        '"credentials_enable_service":false,"default_apps_install_state":2,"download":{"directory_upgrade":true,"prompt_for_download":true},'
        '"enable_do_not_track":true,"extensions":{"alerts":{"initialized":true},"ui":{"developer_mode":true}},'
        '"media":{"engagement":{"schema_version":4}},"net":{"network_prediction_options":2},"omnibox":{"prevent_url_elisions":true},'
        '"payments":{"can_make_payment_enabled":false},"profile":{"avatar_index":24,"block_third_party_cookies":true,'
        '"content_settings":{"clear_on_exit_migrated":true,"pref_version":1},'
        '"default_content_setting_values":{"background_sync":2,"cookies":1},'
        '"exit_type":"Normal","exited_cleanly":true,"local_avatar_index":24,'
        '"managed_user_id":"","name":"","password_manager_enabled":false},"search":{"suggest_enabled":false}}'
      ) -join '' | Set-Content -Path "$batfilepath\master_preferences"
      @(
        '{"background_mode":{"enabled":false},"browser":{"enabled_labs_experiments":["chrome-refresh-2023@3",'
        '"chrome-webui-refresh-2023@2","customize-chrome-side-panel@2","ignore-gpu-blocklist","smooth-scrolling@2"]},'
        '"hardware_acceleration_mode_previous":true,"profile":{"last_used":"Default"}}'
      ) -join '' | Set-Content -Path "$batfilepath\$userdatadir\Local State"
   }
}
 
if (-not $onlyrun) {
   if ((ping -n 1 ya.ru) -match 'TTL=') {
      if ($onlycheck -or (New-TimeSpan -Start $([datetime]::parseexact($lastcheck, 'ddMMyyyy', $null))).Days -ge [int]$CheckInterval) {
         if (Check) {Update; Remove-Item -Path "$tmp" -Recurse -Force -ErrorAction SilentlyContinue}
      }
   } else {
      ShowBaloon -Message "No internet connection" -MessageType "Error"
   }
}
 
if (-not $nolnk) {
   if (-not [IO.File]::Exists("$env:USERPROFILE\Desktop\Ungoogled Chromium.lnk")) {
      $lnkpath = Get-Item -Path "$env:USERPROFILE\Desktop\*.lnk" | %{
         (New-Object -COM WScript.Shell).CreateShortcut($_)
      } | ?{$_.TargetPath -like "*powershell.exe*" -and $_.Arguments -like "*$batfilename*"}
      if ([IO.File]::Exists("$batfilepath\chrome.exe") -and -not $lnkpath) {
         $shortcut = (New-Object -ComObject WScript.Shell).CreateShortcut("$env:USERPROFILE\Desktop\Ungoogled Chromium.lnk")
         $shortcut.TargetPath = "C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe"
         $shortcut.IconLocation = "$batfilepath\chrome.exe, 0"
         $shortcut.WindowStyle = 7
         $shortcut.Arguments = "-NoProfile -WindowStyle Hidden -Command cmd /c `'$batfilename`'"
         $shortcut.WorkingDirectory = "$batfilepath"
         $shortcut.Save()
      }
   }
}
 
if (-not $onlycheck) {
   if ([IO.File]::Exists("$batfilepath\chrome.exe")) {
      if ($proxy) {
         if (-not [IO.File]::Exists($proxy)) {
            try {$dirproxy = Split-path "$proxy"} catch {ShowBaloon -Message "Error path opera-proxy" -MessageType "Error"; $errproxy=$true}
            if ($dirproxy -and $dirproxy -notmatch $baddirs) {
               if (-not [IO.Directory]::Exists($dirproxy)) {New-Item -Path "$dirproxy" -ItemType Directory -Force | Out-Null}
               try {GetFile -link "https://github.com/Snawoot/opera-proxy/releases/download/v1.2.3/opera-proxy.windows-amd64.exe" -name "$proxy" -title "Opera-proxy" -text "v1.2.3"}
               catch {ShowBaloon -Message "Error download opera-proxy" -MessageType "Error"; $errproxy=$true}
            } else {
               ShowBaloon -Message "$dirproxy is bad directory for Opera proxy" -MessageType "Error"; $errproxy=$true
            }
         }
      }
      if ($proxy -and -not $errproxy) {
         Start-Process -FilePath $proxy -ArgumentList $proxyarg -WindowStyle Hidden
         Start-Process -FilePath "$batfilepath\chrome.exe" -ArgumentList $argslist -WorkingDirectory "$batfilepath"
         while ((ps chrome -ea 0).Path -eq "$batfilepath\chrome.exe") {
            if (-not(Get-WmiObject Win32_Process -Filter "name = '$($proxy.split('\')[-1])'" | ?{$_.CommandLine -like "*$proxyarg*"})) {
               Start-Process -FilePath $proxy -ArgumentList $proxyarg -WindowStyle Hidden
            }
            Start-Sleep -s 11
         }
      } else {
         $argslist = $argslist | ?{$_ -notlike "--proxy-server=*"}
         Start-Process -FilePath "$batfilepath\chrome.exe" -ArgumentList $argslist -WorkingDirectory "$batfilepath" -Wait
      }
      Get-Item -Path "$batfilepath\$userdatadir\*","$batfilepath\$userdatadir\Default\*" -Include $($udclean+$uddclean) | Remove-Item -Recurse -Force -ea 0
      Remove-Item -Path "HKCU:Software\*" -Include $regclean -Recurse -Force -ea 0
      Stop-Process -Id $([int]((Get-WmiObject Win32_Process -Filter "name = '$(($proxy -Split '\\')[-1])'" | ?{$_.CommandLine -like "*$proxyarg*"}).ProcessID)) -ea 0
   } else {
      ShowBaloon -Message "Missed chrome.exe, run this again for download" -MessageType "Error"
      SetVar -name "lastcheck" -value "01011970"
   }
}
 

Всего записей: 289 | Зарегистр. 19-05-2006 | Отправлено: 15:48 24-03-2024 | Исправлено: virjokk, 09:11 06-04-2024
Открыть новую тему     Написать ответ в эту тему

На первую страницук этому сообщениюк последнему сообщению

Компьютерный форум Ru.Board » Компьютеры » Программы » Ungoogled Chromium (часть 1)


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.B0ard
© Ru.B0ard 2000-2024

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru