[Quote]

    wadimus
  • 14910
  • Longevity: 6 years 10 months
  • Posts: 764
  • REPUTATION:91

    [+] [-]
korsak7, SunOK, хм ..
а как вам такая система репачества:
- зафиксировали систему
- установили нужную прогу
- еще раз зафиксировали систему
- оформили разницу между двумя фиксами в исполняемый файл.
это репак? да! ставится махом! занимает колоссально мало места! в гиг можно пару сотен программ зарепачить ..
это нечестный репак!
честность, ИМХО, в исходном инсталляторе и в инсталляторе твоего репака. исходный инсталлятор был на msi - и честный репак должен быть на msi. не на нсисе (подмигнул кролику) или на инно-сетапе (моргнул чупакабре) :)

[Quote]

    KaSpieC 666
  • 260
  • Longevity: 8 years 7 months
  • Posts: 787
  • REPUTATION:127

    [+] [-]
  • Location: Одесса
wadimus, Приветствую.
Суть репаков - вылечить (если нужно), убрать лишнее (программы/расширения/тулбары/не нужные дополнения к проге и т.д.), сделать ключи тихой установки, сделать по возможности максимально портативной (а не так, чтобы слово портативное, заканчивалось на этом слове, и весь срачь оставался на компе/реестре). И не только это.
По-этому, делают репаки. Но и не все делают нормально, некоторые делают криво, либо свой хлам суют.

[Quote]

    korsak7
  • 107
  • Longevity: 8 years 9 months
  • Posts: 1082
  • REPUTATION:62

    [+] [-]
wadimus, идею сразу в топку
ставится махом! занимает колоссально мало места!
оба два восхищения - заблуждение
не говоря уж про то что на разные оси ставится по разному и т.д.
честность, ИМХО, в исходном инсталляторе и в инсталляторе твоего репака. исходный инсталлятор был на msi - и честный репак должен быть на msi. не на нсисе (подмигнул кролику) или на инно-сетапе (моргнул чупакабре) :)
даже и не знаю как назвать такой подход, чтоб ты не разочаровался в жизни и меня не покарала десница праведная aa
ну то есть логика вообще непонятная

[Quote]

    wadimus
  • 14910
  • Longevity: 6 years 10 months
  • Posts: 764
  • REPUTATION:91

    [+] [-]
korsak7, ох ..
разработчики разрабатывают некую программу. для установки ея в систему используют или известный пакет для инсталляции или что-то само-писанное ..
то есть, есть момент, когда данной программы нет в системе и есть момент, когда она уже стоит, зарегенная и настроенная, и по русски и без довесок и тулбаров. переход системы из одного такого состояния в другое (так называемая инсталляция) - он может быть разным, любым. и это всё можно (и нужно) назвать репаком!
можно такой переход оформить в пакет известными средствами, например через msi, да хоть через WinRAR или 7zip!
в своё время на ось-зоне продвигались репаки через inf-файл. чем не репак? быстрый! надёжный? .. был сторонником такого творчества лет 10 назад.
а такой вид репака: инсталлировал оригинал с ключами, потом нужное поправил через реестр или путем копирования нужных файлов - имеет право на существования!
а установка проги посредством авто-ита? тоже репак!
так что, мир репаков как океан .. главное - делай! и сам! и не проси, чтобы кто-то сделал!

[Quote]

    korsak7
  • 107
  • Longevity: 8 years 9 months
  • Posts: 1082
  • REPUTATION:62

    [+] [-]
wadimus, а можно в 2 словах суть того что ты хотел этим сказать?

[Quote]

    wadimus
  • 14910
  • Longevity: 6 years 10 months
  • Posts: 764
  • REPUTATION:91

    [+] [-]
6 слов: репак - это сделать установку программ проще!

[Quote]

    wadimus
  • 14910
  • Longevity: 6 years 10 months
  • Posts: 764
  • REPUTATION: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
4K.Video.Downloader.rar
и также в ячейке есть батник получения НЕобновляемого файла - это файл 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.txt
https://getfile.dokpub.com/yandex/get
адрес спрямления яндекс-ссылки
файл where.txt
https://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 - я писал ранее

[Quote]

    wadimus
  • 14910
  • Longevity: 6 years 10 months
  • Posts: 764
  • REPUTATION: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 для версии - хотя у многих гитхабовских проектах она может быть - поэтому эта строка лишняя:
set f=%f:*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 рядом нет - принудительно считаем этот размер 0
if 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)
строки:
cls
echo. "%w1%"
echo.
для красоты - в 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

[Quote]

    wert
  • 23213
  • Longevity: 3 years 9 months
  • Posts: 87
  • REPUTATION:2

    [+] [-]
aa


Last edited by wert on 2022-07-05 13:40; edited 2 times in total

[Quote]

    wadimus
  • 14910
  • Longevity: 6 years 10 months
  • Posts: 764
  • REPUTATION:91

    [+] [-]
wert, ограничивай портянку кодом: пометь нужное и нажми кнопку код

[Quote]

    wert
  • 23213
  • Longevity: 3 years 9 months
  • Posts: 87
  • REPUTATION:2

    [+] [-]
wadimus, вот пробоывл браузеры приладить яндекс и гугл не в какую не поддоются не самообноыляются
Добавлено через 1 час 7 минут 14 секунд:
всеи сдаюсь блин

[Quote]

    wadimus
  • 14910
  • Longevity: 6 years 10 months
  • Posts: 764
  • REPUTATION:91

    [+] [-]
Yandex
echo ... 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"
ссылки - я их называю запросные (запросил на офсайте - дайте новейшую версию оперы или яндекс-браузера с нужной разрядностью - нате тебе просимое) .. такие ссылки правильно называются .. хм .. забыл ah
далее для оперы - полный аналог, блок скачивания 2 раза, проверка версии такая же ..

[Quote]

    wert
  • 23213
  • Longevity: 3 years 9 months
  • Posts: 87
  • REPUTATION:2

    [+] [-]
приыет получилось но обновлятся будет
Добавлено через 4 минуты 42 секунды:
aa az

[Quote]

    timon45
  • 2835
  • Longevity: 7 years 6 months
  • Posts: 86
  • REPUTATION:5

    [+] [-]
  • Location: Беларусь
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 и парсинг выше не сработает,
Как быть в таких случаях?

[Quote]

    avalat
  • 222
  • Longevity: 8 years 7 months
  • Posts: 391
  • REPUTATION:127

    [+] [-]
timon45, попробуй так
[0-9][0-9][0-9][.][0-9]?[.]?[0-9][^b][^esr]

Page 8 of 9


Display posts:    

Current time is: 24-Sep 02:53

All times are UTC + 3


You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum
You cannot attach files in this forum
You can download files in this forum