[Цитировать]

    wadimus
  • 14910
  • Стаж: 8 лет
  • Сообщений: 749
  • Репутация:91

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

[Цитировать]

    KaSpieC 666
  • 260
  • Стаж: 9 лет
  • Сообщений: 787
  • Репутация:127

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

[Цитировать]

    korsak7
  • 107
  • Стаж: 9 лет
  • Сообщений: 1063
  • Репутация:62

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

[Цитировать]

    wadimus
  • 14910
  • Стаж: 8 лет
  • Сообщений: 749
  • Репутация:91

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

[Цитировать]

    korsak7
  • 107
  • Стаж: 9 лет
  • Сообщений: 1063
  • Репутация:62

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

[Цитировать]

    wadimus
  • 14910
  • Стаж: 8 лет
  • Сообщений: 749
  • Репутация:91

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

[Цитировать]

    wadimus
  • 14910
  • Стаж: 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
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 - я писал ранее

[Цитировать]

    wadimus
  • 14910
  • Стаж: 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 для версии - хотя у многих гитхабовских проектах она может быть - поэтому эта строка лишняя:
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

[Цитировать]

    wert
  • 23213
  • Стаж: 5 лет
  • Сообщений: 87
  • Репутация:2

    [+] [-]
aa


Последний раз редактировалось: wert (2022-07-05 13:40), всего редактировалось 2 раз(а)

[Цитировать]

    wadimus
  • 14910
  • Стаж: 8 лет
  • Сообщений: 749
  • Репутация:91

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

[Цитировать]

    wert
  • 23213
  • Стаж: 5 лет
  • Сообщений: 87
  • Репутация:2

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

[Цитировать]

    wadimus
  • 14910
  • Стаж: 8 лет
  • Сообщений: 749
  • Репутация: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 раза, проверка версии такая же ..

[Цитировать]

    wert
  • 23213
  • Стаж: 5 лет
  • Сообщений: 87
  • Репутация:2

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

[Цитировать]

    timon45
  • 2835
  • Стаж: 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 и парсинг выше не сработает,
Как быть в таких случаях?

[Цитировать]

    avalat
  • 222
  • Стаж: 9 лет
  • Сообщений: 468
  • Репутация:127

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

Страница 8 из 9


Показать сообщения:    

Текущее время: 14-Дек 02:58

Часовой пояс: UTC + 3


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете прикреплять файлы к сообщениям
Вы можете скачивать файлы