В кратце, софтинка предназначена для unattended доустановки программ и дров после установки винды. Эти самые программы и дрова для удобства представляются в виде пакетов...
читать дальше »
----------
GuiRunOnce
----------
Программка создана для того, чтобы облегчить и упростить процесс сборки и последующей установки дистрибутива Windows на компьютер конечного пользователя. Она является побочным продуктом сборки корпоративного дистрибутива, так что, можно сказать, "заточена" под это дело, хотя, ее можно приспособить и просто как удобный пакетный установщик чего-либо покусочного и громоздкого, который пользователь будет запускать сам. Основная задача, разумеется, провести установку в максимально "неприкосновенном" режиме.
Что умеет:
- Интуитивная и удобная для сборщика структура пакетов (можно понаделать много разных пакетов, и потом просто добавлять или удалять их в дистриб без лишних заморочек и пересборок)
- Возможность использовать сжатые пакеты (для экономии места)
- Ведет полный лог установки
- Умеет проводить установку в несколько этапов, разделенных перезагрузкой
- Перезагрузка является "асинхронной"
- Умеет чистить за собой (т.е. удалять свою папку со всем содержимым после установки и перезагрузки)
- Имеет простой но понятный GUI: пользователь видит, что происходит в данный момент
----------------
Как использовать
----------------
Для начала надо создать один или более пакетов. Каждый пакет представляет собой отдельную папку, внутри которой расположены исполняемые файлы инсталляторов или других программ, которые необходимо запустить в процессе обработки пакета. Программы могут находиться как в самой папке пакета, так и во вложенных подпапках. Также, в папке пакета должен находиться файл GuiRunOncePkg.ini с описанием пакета и необходимых для выполнения команд. Папка "SamplePkg" из комплекта -- это тестовый пакет. Внутри нее есть пример "полезной программы" Test.exe, пакетного файла Test.cmd (для примера как запускать пакетные файлы) и дескриптор GuiRunOncePkg.ini с описаниями параметров в комментариях. Ознакомившись со всем этим, вы сможете начать собирать свои пакеты.
Все пакеты вместе с программой GuiRunOnce.exe и главным конфигурационным файлом GuiRunOnce.ini (все его параметры описаны внутри него же, в комментариях) должны лежать в отдельной папке, которая, в свою очередь, может быть скопированна куда-нибудь на жесткий диск в процессе установки Windows (если используется в составе дистрибутива) или же просто лежать на флешке или CD (если предназначена для запуска пользователем).
Также, в папку с GuiRunOnce.exe можно положить 7z.exe и 7z.dll, если вы планируете использовать сжатые пакеты. Сжатый пакет делается очень просто: нужно просто запаковать содержимое папки с пакетом (но без самой папки, так, чтобы файл GuiRunOnce.ini лежал в корне архива) в архив 7z. Назвать его можете так же, как была названа до этого несжатая папка. При первом запуске программы, все архивы будут распакованы в обычные папки-пакеты, рядом с остальными несжатыми пакетами (разумеется, если они были вообще) в папке с программой (!!!). По этому сжатые пакеты не будут работать при запуске с CD и ими следует осторожно пользоваться при запуске с флешки.
Запуск программы на установу надо производить с параметром "-i" (без кавычек). Иначе, заупстив ее без параметров вы получите предупреждение и программа ничего делать не будет.
!!! При запуске примера учтите, что программа отображается поверх всех окон, и MessageBox от программы Text.exe будет не видно (он будет перекрыт окном программы), так что придется отодвинуть окно программы в сторону :)
Процесс работы программы такой:
1. Программа запускается с ключем -i например из раздела реестра RunOnce после установки винды и первого входа пользователя.
2. Программа ищет и распаковывает сжатые пакеты (если есть).
3. Программа сканирует все подпапки первого уровня на наличие GuiRunOncePkg.ini (если есть, то подпапка считается за пакет).
4. Программа начинает выполнять команды из пакетов. Сами пакеты (подпапки) перебираются в алфавитном порядке, а команды внутри каждого GuiRunOncePkg.ini в том порядке, в котором они перечислены.
5. Если после обработки пакета указана перезагрузка, то программа сначала добавит в RunOnce себя (для запуска и продолжения работы после перезагрузки), а потом асинхронно инициирует отсчет до перезагрузки.
--
Асинхронность полезна тем, что если запускать программу из RunOnce, то система будет ждать, пока программа полностью отработает и только потом продолжит запуск. Если делать перезагрузку синхронно (т.е. перезагрузку инициирует так же инстанция программы, что была запущена из RunOnce), то получится, что не успев запуститься система начинает перезагружаться, что может вызывать ошибки (особенно при первом входе пользователя в систему, когда начинается но не успевает отработать "настройка профиля пользователя"). Асинхронный режим дает возможность системе полностью загрузиться и только потом уже просходит перезагрузка. Т.е. во время активации счетчика перезагрузки, основная инстанция GuiRunOnce.exe закрывается, давая возможность системе продолжать загрузку, а счетчик тикает сам по себе.
--
6. После перезагрузки установка продолжается со следующего пакета.
И так до конца. В конце тоже может быть указана перезагрузка (в главном конфигурационном файле).
В версии 1.2 добавлена возможность отслеживать ошибки выполнения запускаемых программ по ExitCode. Пишутся в окно и в файл журнала.