онлайн инсталлер
От: _synapse_  
Дата: 08.12.23 18:09
Оценка:
Хотел бы поинтересоваться тут чтобы не изобретать костыли.
Использует ли кто-нибудь веб инсталлеры, чтобы установшик сам скачивал и распаковывал файлы с сервера.
Беглым поиском поискал можно реализовать скриптами к inno-setup.
Re: онлайн инсталлер
От: falcoware Россия https://falcoware.com/rus/
Дата: 08.12.23 18:53
Оценка:
Здравствуйте, _synapse_, Вы писали:

__>Хотел бы поинтересоваться тут чтобы не изобретать костыли.

__>Использует ли кто-нибудь веб инсталлеры, чтобы установшик сам скачивал и распаковывал файлы с сервера.
__>Беглым поиском поискал можно реализовать скриптами к inno-setup.

Вроде есть пару модулей к Инно. Шерлок и еще какой-то.
Но все это от лукавого. Обычно видел в Юньке выбираются модули и они уже закачиваются.
https://falcoware.com/rus/ — Бесплатные Игры!!!
Re: онлайн инсталлер
От: PeterOne  
Дата: 08.12.23 19:13
Оценка:
Здравствуйте, _synapse_, Вы писали:

__>Хотел бы поинтересоваться тут чтобы не изобретать костыли.

__>Использует ли кто-нибудь веб инсталлеры, чтобы установшик сам скачивал и распаковывал файлы с сервера.
__>Беглым поиском поискал можно реализовать скриптами к inno-setup.

В примерах InnoSetup (в его папке) есть пример web инсталлятора вроде.

Я реализовал такой вариант, подписал. Но пока оставил в резерве (не использую).

Веб-инсталлятор скачивает (с красивым прогрессом) основной неподписанный инсталлятор, который запускается и все устанавливает.
Re: онлайн инсталлер
От: autopsist  
Дата: 08.12.23 20:43
Оценка: 3 (1)
Здравствуйте, _synapse_, Вы писали:

__>Хотел бы поинтересоваться тут чтобы не изобретать костыли.

__>Использует ли кто-нибудь веб инсталлеры, чтобы установшик сам скачивал и распаковывал файлы с сервера.
__>Беглым поиском поискал можно реализовать скриптами к inno-setup.

Несколько лет уже как используем эту схему. Сетап стучится на сервер, получает пакет, качает, распаковывает и устанавливает клиенту.
Сетап подписан, исполняемые файлы самой программы не подписаны. Делали сетап вот этой программой.
Причем мы за год накрутили там много всякой логики, интересный установщик получился. Потом подпись не стали новую получать, так и не меняли сетап с той поры.
Самое главное обработка ошибок, всякое может произойти на стороне клиента, надо все предусмотреть, иначе в техподдержку придется ясновидящих набирать.

Подробнее: У нас не одна программа, их более 15. Каждая программа устанавливается одним и тем же установщиком. Какую программу надо отдать с сервера решает скрипт, в зависимости от названия самого установщика. В логике также есть на всякий случай возможность указать с какого сервера качать, но это скрыто на черный день. Вообще несколько таких сетапов сделали с обращениями к разным серверам, что у нас имеются. Пусть лежат на всякий случай. Одна из проблем — некоторые пользователи любят переименовывать сетап при скачивании. Такие получают сообщение что нельзя переименовывать сетап, мол качайте снова или переименуйте назад. Это редко, но бывает. Никто не жалуется. По логу видим таких, переименовывают и снова запускают, с этим нет проблем.

П.С. Антивирусы не ругаются. Лучше в данном случае использовать 7Zip а не Zip.
Отредактировано 08.12.2023 21:01 autopsist . Предыдущая версия . Еще …
Отредактировано 08.12.2023 20:48 autopsist . Предыдущая версия .
Отредактировано 08.12.2023 20:44 autopsist . Предыдущая версия .
Re: онлайн инсталлер
От: Александр Широков Россия www.alzex.com
Дата: 08.12.23 22:52
Оценка:
Здравствуйте, _synapse_, Вы писали:

__>Хотел бы поинтересоваться тут чтобы не изобретать костыли.

__>Использует ли кто-нибудь веб инсталлеры, чтобы установшик сам скачивал и распаковывал файлы с сервера.
__>Беглым поиском поискал можно реализовать скриптами к inno-setup.

Да, используем. Скачивание zip и распаковка на inno-setup делается довольно просто. Начать можно отсюда: https://jrsoftware.org/ishelp/index.php?topic=isxfunc_createdownloadpage
На stackoverflow есть примеры готового кода.
https://www.personalfinances.ru
Re: онлайн инсталлер
От: icezone  
Дата: 09.12.23 04:51
Оценка:
Здравствуйте, _synapse_, Вы писали:

__>Хотел бы поинтересоваться тут чтобы не изобретать костыли.

__>Использует ли кто-нибудь веб инсталлеры, чтобы установшик сам скачивал и распаковывал файлы с сервера.
__>Беглым поиском поискал можно реализовать скриптами к inno-setup.

я совмещаю — в сетапе лежит основной функционал, а дополнения скачиваются во время установки
все штатными средствами Innosetup
Re[2]: онлайн инсталлер
От: _synapse_  
Дата: 09.12.23 10:08
Оценка:
Здравствуйте, Александр Широков, Вы писали:

АШ>Здравствуйте, _synapse_, Вы писали:


__>>Хотел бы поинтересоваться тут чтобы не изобретать костыли.

__>>Использует ли кто-нибудь веб инсталлеры, чтобы установшик сам скачивал и распаковывал файлы с сервера.
__>>Беглым поиском поискал можно реализовать скриптами к inno-setup.

АШ>Да, используем. Скачивание zip и распаковка на inno-setup делается довольно просто. Начать можно отсюда: https://jrsoftware.org/ishelp/index.php?topic=isxfunc_createdownloadpage

АШ>На stackoverflow есть примеры готового кода.

А как распаковываете zip? стандартными средствами windows или в сетапе свой распаковщик?
Может вы могли бы расшарить код основных функций?
Re[3]: онлайн инсталлер
От: Александр Широков Россия www.alzex.com
Дата: 09.12.23 12:02
Оценка: 12 (3) +2
Здравствуйте, _synapse_, Вы писали:

__>А как распаковываете zip? стандартными средствами windows или в сетапе свой распаковщик?

__>Может вы могли бы расшарить код основных функций?

Чтобы не было экрана с вопросом "доверяете ли вы этому издателю", а сразу запускался процесс установки делаем так (если это конечно возможно в вашем случае):
PrivilegesRequired=lowest
DefaultDirName={autopf}\{#MyAppName}


остальные системные папки тоже меняем на auto, например {autoappdata}. Реестр: Root: HKA; ...

Источник файлов. Каждую под-папку указываем отдельно. У меня в архиве все лежит в папке "files", чтобы не смешивалось с содержимым temp
Source: {tmp}\files\*.*; DestDir: {app}; ExternalSize: 22000000; Flags: ignoreversion external
Source: {tmp}\files\Subfolder\*.*; DestDir: {app}\Demo; ExternalSize: 300000; Flags: ignoreversion external


копируем инсталлер чтобы можно было обновлять программу в один клик из самой программы, без повторного скачивания установщика с сайта
Source: {srcexe}; DestDir: {app}; DestName: "update.exe"; ExternalSize: 1800000; Flags: external


Ну и секция Code:
const
  SHCONTCH_NOPROGRESSBOX = 4;
  SHCONTCH_RESPONDYESTOALL = 16;

procedure UnZip(ZipPath, TargetPath: string); 
var
  Shell: Variant;
  ZipFile: Variant;
  TargetFolder: Variant;
begin
  Shell := CreateOleObject('Shell.Application');

  ZipFile := Shell.NameSpace(ZipPath);
  if VarIsClear(ZipFile) then
    RaiseException(
      Format('ZIP file "%s" does not exist or cannot be opened', [ZipPath]));

  TargetFolder := Shell.NameSpace(TargetPath);
  if VarIsClear(TargetFolder) then
    RaiseException(Format('Target path "%s" does not exist', [TargetPath]));

  TargetFolder.CopyHere(
    ZipFile.Items, SHCONTCH_NOPROGRESSBOX or SHCONTCH_RESPONDYESTOALL);
end;

var
  DownloadPage: TDownloadWizardPage;

function OnDownloadProgress(const Url, FileName: String; const Progress, ProgressMax: Int64): Boolean;
begin
  if Progress = ProgressMax then
    Log(Format('Successfully downloaded file to {tmp}: %s', [FileName]));
  Result := True;
end;

procedure InitializeWizard;
begin
  DownloadPage := CreateDownloadPage(SetupMessage(msgWizardPreparing), SetupMessage(msgPreparingDesc), @OnDownloadProgress);
end;

function NextButtonClick(CurPageID: Integer): Boolean;
begin
  if CurPageID = wpReady then begin
    DownloadPage.Clear;
    DownloadPage.Add('https://www.your-website.com/app.zip', 'app.zip', '');
    DownloadPage.Show;
    try
      try
        DownloadPage.Download;
        UnZip(ExpandConstant('{tmp}\app.zip'), ExpandConstant('{tmp}'));
        Result := True;
      except
        SuppressibleMsgBox(AddPeriod(GetExceptionMessage), mbCriticalError, MB_OK, IDOK);
        Result := False;
      end;
    finally
      DownloadPage.Hide;
    end;
  end else
    Result := True;
end;
https://www.personalfinances.ru
Re[2]: онлайн инсталлер
От: Евгений Музыченко Франция https://software.muzychenko.net/ru
Дата: 09.12.23 13:35
Оценка:
Здравствуйте, autopsist, Вы писали:

A>Сетап подписан, исполняемые файлы самой программы не подписаны.


Вы ж наверняка понимаете, что это сугубо ситуативное решение. Никто не гарантирует, что завтра политика проверки не изменится. Как только накопится заметное количество вредоносного софта, распространяемого по такой схеме (а изрядное количество таких инсталляторов наверняка можно приспособить для установки левых исполняемых файлов), так краник и перекроют.
Re[3]: онлайн инсталлер
От: Александр Широков Россия www.alzex.com
Дата: 09.12.23 14:35
Оценка:
Здравствуйте, Евгений Музыченко, Вы писали:

ЕМ>Вы ж наверняка понимаете, что это сугубо ситуативное решение. Никто не гарантирует, что завтра политика проверки не изменится. Как только накопится заметное количество вредоносного софта, распространяемого по такой схеме (а изрядное количество таких инсталляторов наверняка можно приспособить для установки левых исполняемых файлов), так краник и перекроют.


Подписывать конечно стоит все, но web-installer это просто удобно само по себе. Возможность на какое-то время отложить покупку сертификата это тоже плюс, сейчас очень актуально.
https://www.personalfinances.ru
Re[3]: онлайн инсталлер
От: autopsist  
Дата: 09.12.23 19:40
Оценка:
Здравствуйте, Евгений Музыченко, Вы писали:

ЕМ>Здравствуйте, autopsist, Вы писали:


A>>Сетап подписан, исполняемые файлы самой программы не подписаны.


ЕМ>Вы ж наверняка понимаете, что это сугубо ситуативное решение. Никто не гарантирует, что завтра политика проверки не изменится.


Конечно, но пока — три года, полет нормальный. Если что — будем решать проблемы по мере их поступдения.

ЕМ>Как только накопится заметное количество вредоносного софта, распространяемого по такой схеме (а изрядное количество таких инсталляторов наверняка можно приспособить для установки левых исполняемых файлов), так краник и перекроют.


Какой именно "краник"? Кто прикроет?
Re[4]: онлайн инсталлер
От: Евгений Музыченко Франция https://software.muzychenko.net/ru
Дата: 10.12.23 21:00
Оценка:
Здравствуйте, autopsist, Вы писали:

A>Какой именно "краник"?


Возможность запускать неподписанные исполняемые файлы, скачанные подписанным установщиком.

A>Кто прикроет?


Разработчик ОС, вестимо.
Re[2]: онлайн инсталлер
От: eustin  
Дата: 11.12.23 09:29
Оценка:
PO>Веб-инсталлятор скачивает (с красивым прогрессом) основной неподписанный инсталлятор, который запускается и все устанавливает.
А где красивый прогресс взяли, не поделитесь?
Re[3]: онлайн инсталлер
От: Qt-Coder  
Дата: 14.12.23 04:50
Оценка:
Здравствуйте, _synapse_, Вы писали:

__>А как распаковываете zip? стандартными средствами windows или в сетапе свой распаковщик?

__>Может вы могли бы расшарить код основных функций?

7za.exe кладется в основной подписанный дистр.
Re[3]: онлайн инсталлер
От: flаt  
Дата: 14.12.23 06:13
Оценка:
Здравствуйте, Евгений Музыченко, Вы писали:

A>>Сетап подписан, исполняемые файлы самой программы не подписаны.


ЕМ>Вы ж наверняка понимаете, что это сугубо ситуативное решение. Никто не гарантирует, что завтра политика проверки не изменится.


Странно, что это вообще работает — почему виндовый антивирус не возбуждается при CreateProcess неподписанного бинаря?
Re[4]: онлайн инсталлер
От: Евгений Музыченко Франция https://software.muzychenko.net/ru
Дата: 14.12.23 08:41
Оценка: :)
Здравствуйте, flаt, Вы писали:

F>Странно, что это вообще работает — почему виндовый антивирус не возбуждается при CreateProcess неподписанного бинаря?


Вот и мне интересно. Видать, в винде до сих пор работают какие-то политики в районе Trusted Zones, и подписи пристально проверяются только у файлов, пришедших из "недовереных" источников. Профанация все это.
Re: онлайн инсталлер
От: Пересичный Шароварщик Украина https://fuck-sw-clones.com
Дата: 14.12.23 22:44
Оценка: -1
Здравствуйте, _synapse_, Вы писали:

__>Хотел бы поинтересоваться тут чтобы не изобретать костыли.

__>Использует ли кто-нибудь веб инсталлеры, чтобы установшик сам скачивал и распаковывал файлы с сервера.
__>Беглым поиском поискал можно реализовать скриптами к inno-setup.

Вставлю свои 5 копеек —
жаба душит платить на КС серты + хочу сетап "как у хрома"

(уже закончил разработку, но ещё не в продакшене, предварительно всё ок)

всё "дот нет" С#
1. подписаный "сетап" (с манифестом запуска под админом) (по сути аппка консольная, с зеро интерфесом), при запусте — интерфеса нет — см. следующий пункт.
2. сетап стучится на сайт, получает с него ссылку на лейтест cloud-flare cdn последней версии — "версия в папке" на aws s3 (бекенд к КФ)
3. с cdn-а скачивается dll (SCL — setup control library) неподписанная, в которой находится логика установки конкретной версии
и собственно форма с прогресс баром.
4. 2-3 секунды SCL качает все "кишки программы в 7зип архивах" показывая прогресс бар юзеру, всё распаковывает в програм файлз и запускает основную аппку.
5. лончер программы (подписан) — выполняет грязный хакерский трюк загружает exe assembly from memory и ранит его. (по сути лончер пустышка)
6. если добавить в название сетапа debug — то вместо релиза с обфускатором будет выкачана дебаг версия с пдб файлами и без обфускатора (для отладки багов)

итого —
+ версионированы все версии
+ сетап контроллится с срв — "поинтер на лейтест" (старый сетап по умолчанию всегда поставит последнюю версию)
+ замена SCL либы даёт возможность без переподписывания сетапа поменять логику развёртывание\удаления любой версии.
+ лончер вечноподписан
+ сетапер вечноподписан
+ "слик" установка аппки — минимум интеракции от юзера, максимум скорости от клика, до запуска (я отказался от сф7, и 9! экранов визарда — установщика)
+ дебаг \ релиз + обфускатор

сборка + CI\CD автоматизированы.

из технически непростого — сетап качает длл для распаковки 7зипов и сейвит её в темп, дальше подключает рефлекшеном — так как
по другому ёё надо дропать в папку к сетаперу, что меня как юзера дико бы напрягло. И второй момент, по хорошему, мейн аппку надо реализовать как длл
и загружать рефлекшеном динамичски, но нет столько сил (переписывать всю программу), поэтому в разы проще exe assembly from memory

Поэтому 2 крякерских решения — это exe assembly from memory + dll reflection load

Почему это работает — потому, что ОСь "доверяет" подписаному исполняемому сетапу и лончеру.

Думаю, можно изи зашить внутренюю чифровую подпись в сетапер, чтоб он ранил только самоподписанную SCL, — таким образом нельзя будет
запустить любую другую либу, с помощью подписаных модулей. Вирусятники — лесом.
--
С наилучшими пожеланиеми,
Пересичный шароварщик из незалежной.
Отредактировано 14.12.2023 22:50 Пересичный Шароварщик . Предыдущая версия .
Re[5]: онлайн инсталлер
От: Пересичный Шароварщик Украина https://fuck-sw-clones.com
Дата: 14.12.23 22:49
Оценка:
Здравствуйте, Евгений Музыченко, Вы писали:

ЕМ>Здравствуйте, autopsist, Вы писали:


A>>Какой именно "краник"?


ЕМ>Возможность запускать неподписанные исполняемые файлы, скачанные подписанным установщиком.


A>>Кто прикроет?


ЕМ>Разработчик ОС, вестимо.


Это невозможно в принципе. (вне зависимости от системы)
"Можно скачать картинку и интерпретировать её как бинарный код".

Поэтому этого не будет в ближайшем обозримом будущем.
--
С наилучшими пожеланиеми,
Пересичный шароварщик из незалежной.
Re[4]: онлайн инсталлер
От: Пересичный Шароварщик Украина https://fuck-sw-clones.com
Дата: 14.12.23 23:05
Оценка:
Здравствуйте, flаt, Вы писали:

F>Здравствуйте, Евгений Музыченко, Вы писали:


A>>>Сетап подписан, исполняемые файлы самой программы не подписаны.


ЕМ>>Вы ж наверняка понимаете, что это сугубо ситуативное решение. Никто не гарантирует, что завтра политика проверки не изменится.


F>Странно, что это вообще работает — почему виндовый антивирус не возбуждается при CreateProcess неподписанного бинаря?


Потому, что винда трекает скачку исполняемых файлов из инета и маркирует их (ntfs ads, скорее всего) как "небезпасных" для УАК.
"печать баала 2.0" ) MOTW https://www.outflank.nl/blog/2020/03/30/mark-of-the-web-from-a-red-teams-perspective/

При чём она трекает не только "голый ексе", а и "зип архивы с ексе". Рар был брейнером — не трекало. (если скачать рар и оттуда выковырять ексе, то винда
его считает "относительно родным" для оси — без MOTW).

Это всё очень сильно различается в отношении групповых политик заданых на конкретной машине — и настроек УАК.
--
С наилучшими пожеланиеми,
Пересичный шароварщик из незалежной.
Re[4]: онлайн инсталлер
От: Пересичный Шароварщик Украина https://fuck-sw-clones.com
Дата: 14.12.23 23:08
Оценка:
Здравствуйте, Qt-Coder, Вы писали:

QC>Здравствуйте, _synapse_, Вы писали:


__>>А как распаковываете zip? стандартными средствами windows или в сетапе свой распаковщик?

__>>Может вы могли бы расшарить код основных функций?

QC>7za.exe кладется в основной подписанный дистр.


По-моему этого лучше не делать — так как деплой в темп ексешника сагрит большую половину АВ.
Надеемся на "диджитал сигнатюр", да, но как товаришЪ Касперский заявлял — "мы сами будем решать что вирус, а что не вирус" (с)

п.с. я проголосовал за длл
--
С наилучшими пожеланиеми,
Пересичный шароварщик из незалежной.
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.