wadimus
- Стаж: 8 лет
- Сообщений: 749
- Репутация:91[+] [-]
|
korsak7, SunOK, хм .. а как вам такая система репачества: - зафиксировали систему - установили нужную прогу - еще раз зафиксировали систему - оформили разницу между двумя фиксами в исполняемый файл. это репак? да! ставится махом! занимает колоссально мало места! в гиг можно пару сотен программ зарепачить .. это нечестный репак! честность, ИМХО, в исходном инсталляторе и в инсталляторе твоего репака. исходный инсталлятор был на msi - и честный репак должен быть на msi. не на нсисе (подмигнул кролику) или на инно-сетапе (моргнул чупакабре) :)
|
KaSpieC 666
- Стаж: 9 лет
- Сообщений: 787
- Репутация:127[+] [-]
- Откуда: Одесса
|
wadimus, Приветствую. Суть репаков - вылечить (если нужно), убрать лишнее (программы/расширения/тулбары/не нужные дополнения к проге и т.д.), сделать ключи тихой установки, сделать по возможности максимально портативной (а не так, чтобы слово портативное, заканчивалось на этом слове, и весь срачь оставался на компе/реестре). И не только это. По-этому, делают репаки. Но и не все делают нормально, некоторые делают криво, либо свой хлам суют.
|
korsak7
- Стаж: 9 лет
- Сообщений: 1063
- Репутация:62[+] [-]
|
wadimus, идею сразу в топкуставится махом! занимает колоссально мало места! оба два восхищения - заблуждение не говоря уж про то что на разные оси ставится по разному и т.д.честность, ИМХО, в исходном инсталляторе и в инсталляторе твоего репака. исходный инсталлятор был на msi - и честный репак должен быть на msi. не на нсисе (подмигнул кролику) или на инно-сетапе (моргнул чупакабре) :) даже и не знаю как назвать такой подход, чтоб ты не разочаровался в жизни и меня не покарала десница праведная ну то есть логика вообще непонятная
|
wadimus
- Стаж: 8 лет
- Сообщений: 749
- Репутация:91[+] [-]
|
korsak7, ох .. разработчики разрабатывают некую программу. для установки ея в систему используют или известный пакет для инсталляции или что-то само-писанное .. то есть, есть момент, когда данной программы нет в системе и есть момент, когда она уже стоит, зарегенная и настроенная, и по русски и без довесок и тулбаров. переход системы из одного такого состояния в другое (так называемая инсталляция) - он может быть разным, любым. и это всё можно (и нужно) назвать репаком! можно такой переход оформить в пакет известными средствами, например через msi, да хоть через WinRAR или 7zip! в своё время на ось-зоне продвигались репаки через inf-файл. чем не репак? быстрый! надёжный? .. был сторонником такого творчества лет 10 назад. а такой вид репака: инсталлировал оригинал с ключами, потом нужное поправил через реестр или путем копирования нужных файлов - имеет право на существования! а установка проги посредством авто-ита? тоже репак! так что, мир репаков как океан .. главное - делай! и сам! и не проси, чтобы кто-то сделал!
|
korsak7
- Стаж: 9 лет
- Сообщений: 1063
- Репутация:62[+] [-]
|
wadimus, а можно в 2 словах суть того что ты хотел этим сказать?
|
wadimus
- Стаж: 8 лет
- Сообщений: 749
- Репутация:91[+] [-]
|
6 слов: репак - это сделать установку программ проще!
|
Отправлено: 06-Июн-2021 16:37
(спустя 3 года 4 месяца)
wadimus
- Стаж: 8 лет
- Сообщений: 749
- Репутация:91[+] [-]
|
Обновление ячеек. вначале немного теории. все файлы (дистрибутивы), скачиваемые из тернета, условно поделил на 2 группы: - обновляемые; - необновляемые; Обновляемые файлы это к примеру браузеры .. место-обитание таких файлов можно вычислить парсингом или использовать прямые ссылки. пример 1: Mozilla Firefox Last (поиск по FTP): исходная ресурс: http://ftp.mozilla.org/pub/firefox/releases/ парсинг по строке:[0-9][0-9][.][0-9][^b][^esr] ищем все вхождения строк типа: <цифра><цифра><. - точка> <еще цифра> и далее без буков b (это бета-версии) и esr (ESR пока не интересует тоже) берем 2-е последних строки поиска и сравниваем номера версий, т.к номерация строк такая: 58.0.2 а потом 58 далее может быть 58 и потом 59, если выйдет еще одна версия 59.0.1, то она будет первее 59!! выделяем только номера, записываем в переменные f1 и f2 и сравниваем их:if %f1% GTR %f2% (set "f=%f1%") else (set "f=%f2%") получаем прямые ссылки для самых новых версии Mozilla Firefox: https://ftp.mozilla.org/pub/firefox/releases/%f%/win32/ru/Firefox Setup %f%.exe https://ftp.mozilla.org/pub/firefox/releases/%f%/win64/ru/Firefox Setup %f%.exe пример 2: Google Chrome (MSI) Stable ссылки прямые: http://dl.google.com/edgedl/chrome/install/GoogleCh...neEnterprise.msi http://dl.google.com/edgedl/chrome/install/GoogleCh...Enterprise64.msi и таких примеров для обновляемых инсталляторов (у меня введено понятие ячейка) оченть много. НЕобновляемые файлы репаки и прочие переделки. Явного место-обитания таких файлов найти практически невозможно. как поступаю я: - скачиваю такой инсталлятор (репак) - многие репакеры уже заимели свои сайты по распространению своих поделок. - стандартизирую его имя. к примеру скачал: 4K Video Downloader v.4.16.1.4270 RePack + Portable by KpoJIuK файл имеет имя: 4K.Video.Downloader.v4.16.1.4270.exe переименовываю в: 4K.VDownloader.exe - далее определяю его версию и записываю полученное число в файл version.txt. - пакую 2 полученных файла 4K.VDownloader.exe + version.txt в некий файл (к примеру такой: 4K.Video.Downloader.rar) паковать также можно описание (файл about.txt) и/или батник авто-установки (ins.bat) .. короче всё, что изменили в процессе корректировки. - закидываю этот файл на ЯД в мою расшаренную папку (открытую яндекс-папку) в ячейке есть файл it.txtи также в ячейке есть батник получения НЕобновляемого файла - это файл pu.bat@echo off mode con cols=85 lines=5 SetLocal EnableExtensions EnableDelayedExpansion CD /d "%~dp0" echo ... Ya-Disk echo.?> "%~dp0alarm.txt" :: защита от дурака if not exist "%~dp0it.txt" exit/b получаем название файла Set /p w1=<"%~dp0it.txt" :: и вызываем внешний файл-интегратор качалок :: первый переданный аргумент - название нужного нам файла call "%~dp0..\..\ToolZ\pu-all.bat" %w1% exit/b в общей папке скриптов (папка ToolZ - она находится возле нашего MInstall) дополнительно есть несколько файлов: what.txt where.txt pu-all.bat файл what.txthttps://getfile.dokpub.com/yandex/get адрес спрямления яндекс-ссылки файл where.txthttps://yadi.sk/d/TQQSg2LF3NiZG3 адрес открытой яндекс-папки важны только первые строки таких файлов! файл pu-all.bat - это интегратор качалок::: первый переданный аргумент - это название файла, что нужно скачать set "w1=%1" :: защита от дурака if "%w1%" == "" exit/b if not exist "%~dp0where.txt" exit/b if not exist "%~dp0what.txt" exit/b :: читаем первую строку файлов Set /p wh=<"%~dp0where.txt" Set /p hw=<"%~dp0what.txt" :: сочиняем ссылку на файл: адрес открытой яндекс-папки + адрес спрямления яндекс-ссылки + название файла, что нужно скачать set "g1=%hw%/%wh%/%w1%" :: размер скачиваемого файла храним в файле size1.txt (если он есть), если файла нет - то используем 0 :: читаем размер и заносим в переменную fsize if exist "size1.txt" ( Set /p fsize=<"size1.txt" ) else ( set "fsize=0" ) :: определяем размер файла на ЯД и заносим его в переменную nsize ("..\Scripts\netsize.exe" "%g1%") >"down.txt" Set /p nsize=<"down.txt" :: размеры не совпадают - качаем, иначе - качать не надо if %fsize% NEQ %nsize% ( :: качаем через много-потоковую качалку axel.exe в 8 потоков :: защита от дурака - скачиваемый файл будет таким, к примеру: 234.rar.~ "..\Scripts\axel.exe" "%g1%" -k -a -n 8 -o "%w1%.~" :: определяем размер скачанного файла for %%a in ("%w1%.~") do set size=%%~za :: защита от дурака - если размер файла равен 0 - то файл не получен, идет на зачистку временных файлов if !size!==0 goto 1 :: всё нормально! :: удаляем старый файл (234.rar) а скачанный файл 234.rar.~ переименовываем в 234.rar del "%w1%" /q ren "%w1%.~" "%w1%" :: и заносим размер этого файла в файл size1.txt echo !size!> "size1.txt" echo %date%> "date.txt" :: далее полученный файл (это архив) 234.rar распаковываем с перезаписью :: в архиве кроме инсталлятора есть к примеру файл версии version.txt :: после чего полученный файл-архив удаляем :: "..\Scripts\7z.exe" x "%w1%" -y -o"." del "%w1%" /q :: ) del "alarm.txt" /q :1 del "down.txt" /q del "*.~" /q Для обновления ячейки - запускаем файл pu.bat если на ЯД есть новая версия этой ячейки - то она обновится иначе - ячейка останется с прежним содержимым Про утилиты netsize.exe и axel.exe - я писал ранее
|
wadimus
- Стаж: 8 лет
- Сообщений: 749
- Репутация:91[+] [-]
|
шаблон и как с ним работать Примечание: все утилиты для скачивания, определения размера, версии и протчее - находятся в папке Scripts - эта папка на одном уровне с нашей ячейкой - рабочая папка, где находятся все ячейки - обычно это папка Install | + - наша ячейка | + - еще одна или много ячеек | + - папка Scripts Начинаем работу - создаем папку, называем её по теме, копируем туда шаблон и начинаем с ним (шаблоном) работать в начале определение переменных, что качаем, как качаем, зачем .. цЫфры 1 или 2 в шаблоне - для различия (инсталляторов может быть и 2 - для х86 и х64 к примеру) если качаем один инсталлятор - используем переменные с 1 - остальные удаляем пример подготовки скачивания: возьмем прекрасную утилиту Simple IP Config и начнем переделывать наш шаблон страница на гит-хабе https://github.com/KurtisLiggett/Simple-IP-Config зашли на офсайт, кнопочка справа: Releases (13 - это число готовых релизов) - нажали, скопировали полную ссылку это будет первая строка в шаблонеset "h1=https://github.com/KurtisLiggett/Simple-IP-Config/releases" запустим шаблон, первое стопэ ..echo.?> "%~dp0alarm.txt" "%~dp0..\Scripts\wget.exe" -N --waitretry=5 -t5 -T15 "%h1%" Exit /B анализируем скачанную страницу .. решили, будем качать архив (т.н. архив портабле - AP) - это файл с расширением .zip первый найденный архив на странице: Simple-IP-Config-2.9.6.1.Portable.zip цЫфры в шаблоне не нужны, нормализуем имя: Simple-IP-Config-Portable.zip заполняем шапку - определение переменныхecho ... Simple-IP-Config set "h1=https://github.com/KurtisLiggett/Simple-IP-Config/releases" set "d1=download/.*[.]zip" set "w1=Simple-IP-Config-Portable.zip" переменные g1-g2 у нас вычисляемые - убираем лишние строки - убираем весь остальной мусор начинаем работу .. сайт гитхаб хорошо структурирован, позволяет работать с утилитой http2cli.exe плюс, легко вычисляется и версия того, что будем скачивать (она будет определяться из вычисляемой прямой ссылки g1)echo.?> "%~dp0alarm.txt" ("%~dp0..\Scripts\http2cli.exe" "%h1%" 2| findstr /R /C:"%d1%") >"%~dp0down.txt" for %%a in ("%~dp0down.txt") do set size=%%~za if %size%==0 goto 0 Exit /B второе стопэ .. в файл alarm.txt пишется что-то (символ ?) - это признак неуспешности ячейки (если этот файл есть в ячейке после скачивания - ячейка неуспешная) goto 0 - если ничего не скачали (нет тернета к примеру) - зачем нам еще что-то делать? на выход если файл alarm.txt уже был создан и мы ничего не скачали - этот файл не удаляется - ячейка неуспешная! - принимайте меры для появления тернета анализируем временный файл down.txt .. там одна строка (т.к. в нем находится ссылка на первый архив - потом таких архивов будет много)нам нужна первая строка! - анализируем её и вычисляем недоделанную ссылку (она между 2-ым и 3-им вхождением +++) и тут же приклеиваем к этой недоделанной ссылке голову (https://github.com) потом из подготовленной ссылки вычисляем версию того, что качаем:<"%~dp0down.txt" (for /f "tokens=1* delims=[]" %%a in ('find /n /v ""') do set "s%%a=%%b") FOR /F "tokens=2 delims=+++" %%a in ("%s1%") do set "g1=https://github.com%%a" FOR /F "tokens=7 delims=/" %%a in ("%g1%") do set "f=%%a" set f=%f:*v=% Exit /B третье стопэ .. анализируем результат .. получили прямую ссылку на наш архив для скачивания (она в переменной g1) - (сам архив в переменной w1) и также определили версию архива (она в переменной f) результат работы батника:.. set "g1=https://github.com/KurtisLiggett/Simple-IP-Config/releases/download/2.9.6.1/Simple-IP-Config-2.9.6.1.Portable.zip" set "f=2.9.6.1" .. Ну, что, прямая ссылка есть (переменная g1), что качаем есть (переменная w1), версия того, что качаем есть (переменная f) в строке g1 нет буквы v для версии - хотя у многих гитхабовских проектах она может быть - поэтому эта строка лишняя:далее - блок скачивания:if exist "%~dp0%w1%" ( for %%a in ("%~dp0%w1%") do set "fsize=%%~za" ) else ( set "fsize=0" ) ("%~dp0..\Scripts\netsize.exe" "%g1%") >"%~dp0down.txt" Set /p nsize=<"%~dp0down.txt" if %fsize% NEQ %nsize% ( cls echo. "%w1%" echo. "%~dp0..\Scripts\aria2c.exe" "%g1%" --check-certificate=false --console-log-level=error --file-allocation=none --allow-overwrite=true -x8 -s8 -o "%w1%.~" for %%a in ("%~dp0%w1%.~") do set size=%%~za if !size!==0 goto 0 del "%~dp0%w1%" /q ren "%~dp0%w1%.~" "%w1%" echo %date%> "%~dp0date.txt" ) Exit /B четвертое стопэ .. анализируем результат .. качаем файл качалкой aria2c.exe, предварительно определяем размер еще нескачанного из тернета файла утилитой netsize.exe качаем файл только тогда, когда размер рядом находящегося файла Simple-IP-Config-Portable.zip отличается от вычисленного по тернету размера если файла Simple-IP-Config-Portable.zip рядом нет - принудительно считаем этот размер 0if exist "%~dp0%w1%" ( for %%a in ("%~dp0%w1%") do set "fsize=%%~za" ) else ( set "fsize=0" ) качаем не напрямую файл (в переменной w1), а его временную копию (w1.~) то есть качаем не сразу файл Simple-IP-Config-Portable.zip - а временный файл Simple-IP-Config-Portable.zip.~ скачали (или не скачали - внезапно кончился тернет) - проверили размер этого временного файла. размер отличается от 0 - всё ок! по идее, размер этого временного файла должен был равняться с число, что записано в переменной nsize но, сделаем допущение - что-то скачалось (и размер этого что-то не равен 0) - скачивание будет успешным далее, удаляем наш старый файл Simple-IP-Config-Portable.zip а временный (Simple-IP-Config-Portable.zip.~) переименовываем в исходный (Simple-IP-Config-Portable.zip) строки:для красоты - в CMD-окне выдаст имя того, чего качаем всё! чистим и удаляем временные файлы вычисление версии того, что скачали - не делаем, версия уже получена (она в переменной f) пишем переменную f в файл version.txt и удаляем файл - признак неуспешности ячейки - alarm.txt удаляем временные файлы (*.~) - зачем нам мусор в ячейке?echo %f%> "%~dp0version.txt" del "%~dp0alarm.txt" /q :0 del "%~dp0down.txt" /q del "%~dp0*.~" /q Exit /B после окончания работы переработанного шаблона получили 3 файла: date.txt - в нем в первой строке дата получения готового файла version.txt - в нем в первой строке версия готового файла Simple-IP-Config-Portable.zip - это наш готовый файл Примечание. допустим, нам в ячейке нужен инсталлятор - файл с расширением .exe меняем в переработанном шаблоне строку:set "d1=download/.*[.]zip" на:set "d1=download/.*Setup.*[.]exe" и строку:set "w1=Simple-IP-Config-Portable.zip" на:set "w1=Simple-IP-Config-Setup.exe" и этого достаточно. начало нашего шаблона:@echo off mode con cols=85 lines=5 SetLocal EnableExtensions EnableDelayedExpansion CD /d "%~dp0" наш батник это - узкая терминальное окно в 5 строк. после скачивания (или нескачивания окно закроется) ЗЫ. код корявый до ужаса .. начальные строки шаблона были написаны лет 5 назад -так что, не обессудьте Добавлено через 36 минут 46 секунд: ЗЫ. в архиве - шаблон (с комментами) + готовый батник https://disk.yandex.ru/d/gCQnFcJtZjG85Q
|
wert
- Стаж: 5 лет
- Сообщений: 87
- Репутация:2[+] [-]
|
Последний раз редактировалось: wert (2022-07-05 13:40), всего редактировалось 2 раз(а)
|
wert
- Стаж: 5 лет
- Сообщений: 87
- Репутация:2[+] [-]
|
wadimus, вот пробоывл браузеры приладить яндекс и гугл не в какую не поддоются не самообноыляются Добавлено через 1 час 7 минут 14 секунд: всеи сдаюсь блин
|
wadimus
- Стаж: 8 лет
- Сообщений: 749
- Репутация:91[+] [-]
|
Yandexecho ... Yandex x86-x64 set "g1=https://browser.yandex.ru/download/?full=1&bitness=32" set "g2=https://browser.yandex.ru/download/?full=1&bitness=64" set "w1=Yandex-x86.exe" set "w2=Yandex-x64.exe" и блок скачивания с защитой от повторного скачивания 2 раза повторить (один раз для пары g1 и w1 и второй раз g2-w2) проверка версии - простая:("%~dp0..\Scripts\filever.exe" /A /D "%~dp0%w1%") >"%~dp0down.txt" FOR /F "usebackq tokens=4" %%a in ("%~dp0down.txt") do set f=%%a echo %f%> "%~dp0version.txt" Opera - аналогичноecho ... Opera Stable set "w1=Opera_setup-x86.exe" set "w2=Opera_setup-x64.exe" set "g1=http://www.opera.com/download/get/?partner=www&opsys=Windows&product=Opera¬hanks=yes" set "g2=http://www.opera.com/download/get/?partner=www&opsys=Windows&product=Opera&arch=x64¬hanks=yes" ссылки - я их называю запросные (запросил на офсайте - дайте новейшую версию оперы или яндекс-браузера с нужной разрядностью - нате тебе просимое) .. такие ссылки правильно называются .. хм .. забыл далее для оперы - полный аналог, блок скачивания 2 раза, проверка версии такая же ..
|
Отправлено: 05-Дек-2022 11:45
(спустя 4 месяца 30 дней)
timon45
- Стаж: 8 лет 9 месяцев
- Сообщений: 88
- Репутация:5[+] [-]
- Откуда: Беларусь
|
86218парсинг по строке: [0-9][0-9][.][0-9][^b][^esr] сейчас версии завалили за 100 (т.е. 3 знака) следовательно должно быть[0-9][0-9][0-9][.][0-9][^b][^esr] с этим все понятно, но как быть если есть версии: 107.0 и есть 107.0.1? в первом случае в первом случае,[0-9][0-9][0-9][.][0-9][^b][^esr] начнет качать 107.0 даже если есть новее 107.0.1 но если сделать[0-9][0-9][0-9][.][0-9][.][0-9][^b][^esr] скачает 107.0.1 т.е. ту что нужно (последнюю) но, парой выходят версии с одной точкой, т.е. 107.0 и парсинг выше не сработает, Как быть в таких случаях?
|
Страница 8 из 9
Текущее время: 14-Дек 02:31
Часовой пояс: UTC + 3
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете голосовать в опросах Вы не можете прикреплять файлы к сообщениям Вы можете скачивать файлы
|
|