Всем привет!
Делаю проект для МЛМ - многоуровнего маркетинга.
Идея в том, что есть некий Setup.exe, устанавливающий клиентскую программу "Личный кабинет" (далее ЛК). Программа распространяется не только через Инет, но и на компакт-дисках.
Сам проект на VB, тащит с собой пресловутую библиотеку MSVBVM60.dll и другие необходмые компоненты, но будучи установленным этот самый ЛК может по желанию пользователя создавать уникальный инсталлятор, который в идеале обходился бы без этих компонентов. Попробую объяснить как это задумано:
1. Пользователь тем или иным способом получил и установил ЛК. У каждого пользователя есть свой личный номер (ID).
2. По нажатии "генератор собственного инсталлятора" ЛК берёт со своего сайта маленький exe файл-"болванку"
3. Затем программа находит в теле этой болванки место, куда вставляет личный номер (ID) владельца ЛК
4. Заливает этот EXE на FTP как Installer77777.exe, где 77777 - это ID владельца ЛК (или сохраняет его в какой-нибудь каталог, это не существенно).
Далее сам пользователь распространяет этот installer77777.exe.
Будучи запущенным на компе того, кто скачал или получил от распространителя этот файл, он делает следующее:
1. Пишет в реестр присутствующий в своём теле код "Спонсора" - т.е. 77777
2. Качает из Интернета оригинальный Setup.exe ЛК и запусакет.
ЛК разработан таким образом, что если новый пользователь зарегистрируется через ЛК, в реестре будет найден код 77777 и программа автоматически подписывает нового пользователя под владельца ID 77777, о чём сообщается в пришедшей на сервер форме зарегистрированного нового пользователя.
Надеюсь, удалось описать подробно.
Теперь как это реализовано сейчас и в чём состоит эпик фейл:
Пока генерируемый installer77777.exe представляет собой самораспаковывающийся в тихом режиме архив RAR, где лежат 2 файла - сам установщик, в теле когорого прошивается ID (банально содержит элемент text1.text, в котором присутствует флаг ##### и в процессе генерации он находится и заменяется на ID 77777), и необходимый нам MSVBVM60.DLL. Всё это пропускается через RAR без сжатия, чтобы в полученном SFX EXE этот флаг без труда находился ЛК. Результат - запускаемый SFX EXE, который распаковав всё в temp запускает installer, а он в свою очередь прописывает ID в реестр, затем качает с сайта и запускает Setup.exe ЛК.
Фейла тут два: 1) WinRAR куда то пихает проверочный код, поэтому после внесения ID в тело EXE просто перестаёт распаковываться, и 2) благодаря MSVBVM60.DLL получается довольно большой файл.
Вопросов будет три:
1) что посоветуете делать с самораспаковывающимся архивом? Очевидно, если не найду способ как-то корректировать проверочную сумму или что он там использует в SFX EXE, нужно найти менее замороченный архиватор-генератор SFX для решения задачи;
2) если бы была возможность не таскать никаких вспомогательных библиотек, то и в архиваторе нужды бы не было - если бы найти лёгкий в освоении язык, который бы компилил в полностью самодостаточный exe, работающий на любой винде и при этом умевший бы записывать ID в реестр, качать из интернета Setup и запускать его.
3) стоит ли вообще грузиться тасканием MSVBVM60, в конце концов все у кого винда начиная с XP эту библиотеку уже имеют. То тогда отсекаются юзеры ранних Windows, так ли это важно в повседневной практике...?
Очень надеюсь на ваши подсказки или советы!
С уважением, Здоровяк! =))