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

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

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

Maz (16-09-2020 22:58): 360 Extreme Explorer (и другие браузеры компании Qihoo 360)  Версия для печати • ПодписатьсяДобавить в закладки
На первую страницук этому сообщениюк последнему сообщению

   

virjokk

Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Код:
 
<# : Сохранять в UTF8 без BOM с расширением .CMD
@echo off
set "cmdcmdfile=%~f0"  
%SystemRoot%\System32\WindowsPowerShell\v1.0\powershell.exe -nol -nop -ex bypass -c ^
   "&{[ScriptBlock]::Create((gc -lit $env:cmdcmdfile -enc 'UTF8') -join [Char]10).Invoke('%~dp0 %*')}"
if not %errorlevel% EQU 0 (
%SystemRoot%\System32\WindowsPowerShell\v1.0\powershell.exe -nol -nop -ex bypass -c "Uninstall-Module -Name 7zip4powershell -Force"
)
exit /b
#>
 
$EEPath = ""
# Путь установки 360EE. Можно указать в комстроке как параметр, что будет
# приоритетнее, чем здесь. По умолчанию - каталог, где находится скрипт.
# Структура каталогов - .\360chrome\Chrome\application.
# Всю эту структуру указывать не нужно (хотя можно), достаточно, к примеру, так: "C:\MySoft".
# Полный путь установки в этом случае будет: C:\MySoft\360chrome\Chrome\application.
 
$CutDistr = "1"
# Варианты урезания дистрибутива (0,1,2).Вариант по умолчанию "1" взят из шапки темы по ссылке
# "Создание русифицированной портабельной версии с нуля". Вариант "2" от Dschinghis Khan
# содержит абсолютный минимум необходмых для работы файлов - взят по ссылке
# тоже из шапки .Оба варианта легко изменить в коде данного скрипта,
# скорректировав содержимое переменной $DistrExclude.
# При значении 0 дистр не будет урезан, все ставится как есть.
 
$Rus = $true
# Скачать и установить русификатор от WatsonRus. По умолчанию - да ($true).
# Если $false, не будет ни скачиваться, ни устанавливаться.
 
$PatchWS = $true
# Скачать и применить патч для изменения магазина и поисковика на родной от Google
# Если не нужен, поставить $false.
 
$CreateBackup = $false
# Бэкап текущей версии 360EE при обновлении. Делать - $true, нет - $false.
# В zip-архив пакуются: каталог, имя которого совпадает с номером версии 360EE,
# каталог User Data, а также исполняемый файл 360chrome.exe
 
$DelTemp = $true
# Удалить временную папку со скачанными файлами (дистр, русик, патч и т. д.).
# Она создается в системной папке %TEMP% с именем 360EE + случайный набор цифр
# По умолчанию да - $true
 
$CreateLoader = $true
# Создать в папке установки батник для запуска 360EE - некое подобие лоадера с
# ключами запуска, чисткой профиля и реестра. Содержимое батника опять же
# легко скорректировать изменением переменной $LoaderContent
 
$CreateShortcut = $true
# Создать ярлык на рабочем столе к лоадеру. Создается, если $CreateLoader тоже $true.
# Имеет смысл, если дистр не планируется перемещать в другую папку.
# Запуск с этого ярлыка скрывает cmd-окно при старте лоадера, чтоб не маячило.
# При обновлении, если уже имеется (пусть и с другим именем), заново не создается.
 
 
 
# Код скрипта
 
# Чтение аргументов из батника в переменную
$cmdargs = $args -split " "
 
# Определение пути установки и разрешение его правильности.
 
$StartDir = $cmdargs[0].TrimEnd("\")
if ($cmdargs[1]) {$EEPath = $cmdargs[1]}
if (!($EEPath)) {$EEPath = $StartDir}
 
if (Test-Path -Path $EEPath -PathType Container) {
    if (!($EEPath -match "\\360chrome\\chrome\\application$")) {
        $EEPath = Join-Path -Path $EEPath -ChildPath "360chrome\Chrome\application"
    }
} else {
    Write-Host -ForeGroundColor Red "Неправильный путь"
    exit
}
 
 
# Ссылки на официальный сайт и форум ru-board с темой 360EE
 
$url_offsite = "https://browser.360.cn/ee/en.html"
$url_alltop360 = "http://forum.ru-board.com/forum.cgi?forum=5&action=filter&filterby=topictitle" +
"&word=360+extreme+explorer&sorting=yes&sortby=topicdate&sort=ascend"
$url_printver = "http://forum.ru-board.com/misc.cgi?action=printtopic&forum=5&topic="
 
 
# Определение последней версии и линейки через разбор ссылки на дистрибутив 360EE с официального сайта.
# Способ не лишен недостатков, но лучше пока не придумал. Скачивать целиком 360cse_official.exe
# только чтобы посмотреть версию - не комильфо. К тому же, это релиз, а надо учитывать и бету.
 
$offsite = Invoke-WebRequest -Uri $url_offsite
$LastVer = [version[]]($offsite.links.href | ?{$_ -match "([\d\.]+)\.exe"} | %{$matches[1]}) | sort | Select -Last 1
$LastVerMajor = ([version]$LastVer).Major
 
if (!($LastVer)) {
    Write-Host -ForeGroundColor Red "Не удалось определить текущую версию 360EE"
    exit
}
 
 
# Определение установленной версии и сравнение с версией на сайте (при обновлении)
 
$CurVer = [version](gi $EEPath\360chrome.exe -ErrorAction SilentlyContinue).VersionInfo.ProductVersion
if (!($CurVer)) {$CurVer = "0.0.0.0"}
 
if ([version]$LastVer -le [version]$CurVer) {
    Write-Host -ForeGroundColor Green "Актуальная версия 360EE уже имеется"
    exit
}
 
 
# Просматриваются все имеющиеся на форуме темы 360EE, находится актуальная и в версии для печати закачивается в переменную.
# Определяются ссылки на инсталлятор с офсайта, русификатор и патч - с хостингов, затем все скачивается
 
 
$tmp = (New-Item -Path $("$env:TEMP\"+"360EE"+(get-random).tostring()) -ItemType Directory).FullName
 
 
if (($Rus) -or ($PatchWS)) {
   $alltop360 = Invoke-WebRequest -Uri $url_alltop360
   $acttop360 = $alltop360.Links.outerHTML | ?{$_ -match 'topic=(\d+).+360 extreme explorer'} | %{$matches[1]} | Select -Last 1
   $printver = Invoke-WebRequest -Uri "$url_printver$acttop360"
}
 
 
if ($Rus) {
   $url_sharhostrus = ($printver.links | ?{$_ -match "русификатор для 360 Extreme Explorer версии $LastVer"}).href | Select -Unique
   if ($url_sharhostrus) {
      $sharhostrus = Invoke-WebRequest -Uri "$url_sharhostrus"
   } else {
      Write-Host -ForeGroundColor Red "Для версии $LastVer не найден русификатор. Скоро будет..."
      Remove-Item -Path $tmp -Recurse -Force -ErrorAction SilentlyContinue
      exit
   }
   $RusLink=$sharhostrus.baseresponse.responseuri.host + ($sharhostrus.Links.href | ? {$_ -match "/.+/360chrome.*\.zip"})
   $RusName = $RusLink.split('/')[-1]
   Invoke-WebRequest -Uri $RusLink -OutFile $tmp\$RusName -ErrorAction SilentlyContinue
}
 
 
if (($PatchWS) -and (!(Test-Path -Path $EEPath\*fix*webstore*search*.exe -PathType Leaf))) {
   $url_sharhostpatch = ($printver.links | ?{$_ -match "Универсальный патч.+$LastVerMajor[\d+\.]{3}"}).href | Select -Unique
   if ($url_sharhostpatch) {
      $sharhostpatch = Invoke-WebRequest -Uri $url_sharhostpatch
   } else {
      Write-Host -ForeGroundColor Red "Для версии $LastVer не найдено исправление магазина и поиска на Google"
      Remove-Item -Path $tmp -Recurse -Force -ErrorAction SilentlyContinue
      exit
   }
   $PatchLink=$sharhostpatch.baseresponse.responseuri.host + ($sharhostpatch.Links.href | ? {$_ -match "webstore.*search.*\.zip"})
   Invoke-WebRequest -Uri $PatchLink -OutFile "$tmp\fix_webstore_search.zip" -ErrorAction SilentlyContinue
}
 
 
$DistrName = ($offsite.links.href | ?{$_ -match "$LastVer"} | Select -Unique | tee -var DistrLink).split('/')[-1]
Invoke-WebRequest -Uri $DistrLink -OutFile $tmp\$DistrName -ErrorAction SilentlyContinue
 
 
# Списки файлов и каталогов для вырезания из дистра
 
$CutDistr = $CutDistr -as[int]
 
switch ($CutDistr) {
 
   0 {  $DistrExclude = @() }
 
   1 {  $DistrExclude = @{
 
            dirs  = "360BdoctorExt",
                    "installer",
                    "swiftshader"
 
            files = "360base.dll",
                    "360bdoctor.exe",
                    "cloudurls.dat",
                    "itrusenroll.dll",
                    "mobileadapter.dll",
                    "npaliedit.dll",
                    "npalisecctrl.dll",
                    "npalissologin.dll",
                    "npcombrg.dll",
                    "safe505.dll",
                    "sesafe.dll",
                    "setdefbrowser.dll",
                    "smartpreheat.dat",
                    "smart_preheat.dll",
                    "smartpreheat64.dll",
                    "updatecfg.ini",
                    "urlproc.dll",
                    "navhome.htm",
                    "wow_helper.exe",
                    "xlbughandler.dll",
                    "xlbugreport.exe"
 
        }
 
     }  
 
   2 {  $DistrExclude = @{
 
            dirs  = "360BdoctorExt",
                    "download",
                    "installer",
                    "plugins",
                    "swiftshader"
 
            files = "360base.dll",
                    "360bdoctor.exe",
                    "cloudurls.dat",
                    "config",
                    "eacl.dat",
                    "gpubl.dat",
                    "gpuwl.dat",
                    "khtn.dat",
                    "mobileadapter.dll",
                    "navhome.htm",
                    "presetui.dll",
                    "safe505.dll",
                    "sesafe.dll",
                    "setdefbrowser.dll",
                    "sibc.dat",
                    "smartpreheat.dat",
                    "smart_preheat.dll",
                    "smartpreheat64.dll",
                    "switcher",
                    "updatecfg.ini",
                    "urllibauth.dat",
                    "urlproc.dll",
                    "wdcnf.dat",
                    "wow_helper.exe"
 
        }
     }
}
 
 
# Если при обновлении браузер запущен...
 
while ((Get-Process "360chrome" -ea 0).Path | Split-Path -ea 0 | ?{$_ -eq $EEPath}) {
   Write-Host -ForeGroundColor Red "360EE работает, закройте программу и нажмите любую клавишу для продолжения"
   [void][System.Console]::ReadKey($true)
}
 
 
# Создается каталог установки, если он отсутствует.
# Затем делается бэкап. При обновлении удаляется текущая версия.
 
if (!(Test-Path -Path $EEPath -PathType Container)) {
    New-Item -Path $EEPath -ItemType Directory
}
 
if (Test-Path -Path $EEPath\$CurVer -PathType Container) {
    $delcurver = "$EEPath\$CurVer","$EEPath\360chrome.exe"
    if (Test-Path -Path "$EEPath\User Data" -PathType Container) {$backup = $delcurver + "$EEPath\User Data"}
    if ($CreateBackup) {Compress-Archive -Path $backup -DestinationPath $EEPath\$curver.zip -Force}
    Remove-Item -Path $delcurver -Recurse -Force -ErrorAction SilentlyContinue
}
 
# Если отсутствует в системе, то скачивается и устанавливается модуль 7zip для работы в PS
 
if (!(Get-Module -Name 7zip4powershell -ListAvailable)) {
    Install-Module -Name 7zip4powershell -Force
    Import-Module -Name 7zip4powershell
    $Delete7zm = $true
}
 
 
# Распаковываются дистр и русификатор, копируются в каталог установки
 
Expand-7Zip -ArchiveFileName $tmp\$DistrName -TargetPath $tmp
Expand-7Zip -ArchiveFileName $tmp\chrome.7z -TargetPath $tmp
robocopy "$tmp\Chrome-bin" "$EEPath" /E /XD $DistrExclude.dirs /XF $DistrExclude.files
 
if ($Rus) {
    Expand-Archive -Path $tmp\$RusName -DestinationPath $EEPath\$LastVer -Force
    Move-Item -Path $EEPath\$LastVer\locales\ru-ru.pak -Destination $EEPath\$LastVer\locales\en-us.pak -Force
}
 
 
# Распаковка и применение патча. Он остается в папке установки, чтоб не качать каждый раз.
 
if ($PatchWS) {
    if (!(Test-Path -Path $EEPath\*fix*webstore*search*.exe -PathType Leaf)) {
        Expand-Archive -Path $tmp\fix_webstore_search.zip -DestinationPath $EEPath
        Remove-Item -Path $EEPath\*.dup2 -ErrorAction SilentlyContinue -Force
    }
    $patch = (Get-Item -Path $EEPath\*fix*webstore*search*.exe).FullName
    &($patch) /silent /overwrite /startupworkdir "$EEPath\$LastVer"
}
 
 
# Создание лоадера в каталоге установки
 
if ($CreateLoader) {
    if (!(Test-Path -Path $EEPath\360chrome.cmd -PathType Leaf)) {
        DATA LoaderContent {
           '@echo off'
           '360chrome.exe --disable-background-networking --disable-default-apps --disable-update --disable-component-update'
           'pushd ".\User Data\Default"'
           'rd /S /Q Cache,GPUCache,"Pepper Data","Media Cache"'
           'del /F /Q History'
           'rd /S /Q ..\temp,..\ShaderCache,..\..\components\swiftshader,%appdata%\Adobe,%localappdata%\Adobe'
           'reg delete "HKCU\Software\360Chrome" /f'
           'reg delete "HKCU\Software\Chromium" /f'
        }  
        Set-Content -Path $EEPath\360chrome.cmd -Value $LoaderContent
    }
}
 
 
# Если каталог download указан в $DistrExclude, то он удаляется и вместо  
# него в components\ пишется файл-пустышка с таким же именем.
# Если нет, то зачищаются файлы из архива download.7z, если они есть в $DistrExclude.
 
if (Test-Path -Path $EEPath\components\download\download.7z -PathType Leaf) {
    Remove-Item -Path $EEPath\components\download\* -Recurse -Force -ErrorAction SilentlyContinue
    Expand-7Zip -ArchiveFileName $tmp\Chrome-bin\components\download\download.7z -TargetPath $tmp\download
    Get-ChildItem $tmp\download -Directory -Recurse | ?{ $DistrExclude.dirs -contains $_} | Remove-Item -ea 0 -Force
    Get-ChildItem $tmp\download -File -Recurse | ?{ $DistrExclude.files -contains $_} | Remove-Item -ea 0 -Force
    Compress-7zip -ArchiveFileName $EEPath\components\download\download.7z -Path $tmp\download
} else {
    if (Test-Path -Path $EEPath\components\download -PathType Container) {
        Remove-Item -Path $EEPath\components\download -Recurse -Force -ErrorAction SilentlyContinue
    }
    Set-Content -Path $EEPath\components\download -Value ""
}
 
# Создание ярлыка для запуска лоадера с иконкой из 360chrome.exe.
# Запуск через powershell.exe нужен для скрытия окна батника.
# Ярлык создается, если его еще нет на рабочем столе.
 
if (($CreateLoader) -and ($CreateShortcut)) {
    $Shell = New-Object -ComObject WScript.Shell
    $Shortcuts = Get-ChildItem -Recurse $env:USERPROFILE\Desktop -Include *.lnk
    if (!($shortcuts | %{$shell.CreateShortcut($_.FullName).Arguments} | ? {$_ -like "*$EEPath\360chrome.cmd*"})) {
        if (($shortcuts | %{$shell.CreateShortcut($_.FullName)}).FullName | ? {$_ -like "*\360 Extreme Explorer.lnk"}) {
            $shortcut = $Shell.CreateShortcut("$env:USERPROFILE\Desktop\360 EE $(Get-Date -Format ddMMyyyy_HHmmss).lnk")
        } else {
            $shortcut = $Shell.CreateShortcut("$env:USERPROFILE\Desktop\360 Extreme Explorer.lnk")
        }
        $shortcut.TargetPath = "C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe"
        $shortcut.IconLocation = "$EEPath\360chrome.exe, 0"
        $shortcut.Arguments = "-NoProfile -WindowStyle Hidden -Command `"$EEPath\360chrome.cmd`""
        $shortcut.WorkingDirectory = "$EEPath"
        $shortcut.WindowStyle = "7"
        $shortcut.Save()
    }
}
 
# Удаление временной папки и модуля 7zip4powershell
 
if ($DelTemp) {Remove-Item -Path $tmp -Recurse -Force -ErrorAction SilentlyContinue}
 
if ($Delete7zm) {
    Remove-Module -Name 7zip4powershell -Force
    exit 1
}
 


Всего записей: 288 | Зарегистр. 19-05-2006 | Отправлено: 18:57 15-04-2019 | Исправлено: virjokk, 18:58 15-04-2019
   

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

Компьютерный форум Ru.Board » Компьютеры » Программы » 360 Extreme Explorer (и другие браузеры компании Qihoo 360)
Maz (16-09-2020 22:58): 360 Extreme Explorer (и другие браузеры компании Qihoo 360)


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

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

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru