Re[2]: онлайн инсталлер
От: _synapse_  
Дата: 15.12.23 05:10
Оценка: +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, — таким образом нельзя будет

ПШ>запустить любую другую либу, с помощью подписаных модулей. Вирусятники — лесом.


Как вы сами написали, вы используете хакерские трюки с выполнением из памяти и мне кажется что антивирусы будут ругаться на такое, даже не смотря на подпись.
Как мне кажется решение установки через инно-сетап через простую распаковку zip файла лучше, о котором написали выше и безопаснее.
Re[4]: онлайн инсталлер
От: _synapse_  
Дата: 07.01.24 09:13
Оценка:
Здравствуйте, Александр Широков, Вы писали:


АШ>Источник файлов. Каждую под-папку указываем отдельно. У меня в архиве все лежит в папке "files", чтобы не смешивалось с содержимым temp

АШ>
АШ>Source: {tmp}\files\*.*; DestDir: {app}; ExternalSize: 22000000; Flags: ignoreversion external
АШ>Source: {tmp}\files\Subfolder\*.*; DestDir: {app}\Demo; ExternalSize: 300000; Flags: ignoreversion external
АШ>


А почему решили для каждой под-папки сделать запись, в innosetup есть доп опции Flags: createallsubdirs recursesubdirs
Так ведь будет универсальнее, не надо будет обновлять инсталлятор в случае если появится новая папка в архиве
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.