Как сделать автоустановку программ
Делаем автоустановщик программ своими руками
Всем привет. Сегодня я расскажу вам как сделать автоустановщик программ(с автокликером) в Windows. Т.е. программу, которая будет запускать установку нужных нам программ и кликать по нужным кнопкам на форме. Использовать я буду язык С++(Qt) и Windows API. Вы можете использовать свой язык, в котором возможен вызов API функций Windows
Постановка задачи примерно следующая: есть набор приложений, которые нужно установить один за одним без участия человека. В окне каждого приложения свои специфические кнопки и флажки, которые нужно нажимать(если нет флага бесшумной установки). Программа автоустановщик должна запускать приложения один за одним, кликать на нужные кнопки и закрывать окна установленных приложений.
В принципе приведенную ниже методику можно использовать и для других целей, например кликать по таймеру по какой то одной кнопке в программе, ну или что то еще на ваше усмотрение :-). Я покажу на примере установки программ.
У меня имеется 5 приложений: Google Chrome, K-Lite Codeck Pack Mega, The KMPlayer, WinDjView, WinRar. Нужно их установить все в любом порядке. Первое, что мы должны сделать в этой задаче, это проверить, есть ли у указанных приложений флаги бесшумной установки. Т.е. когда мы на вход инсталлятора подаем флаг(обычно /s) и программа устанавливается без открытия каких-либо окон, т.е. бесшумно. Поискав в интернете для моих версий программ, я нашел что есть такой флаг у программы WinRar(‘/s’), The KMPlayer(‘/s’), Google Chrome (‘-ms’), K-Lite Codeck Pack Mega(‘/VERYSILENT’). Как видно для большинства приложений нашлись флаги бесшумной установки, но в WinDjView пришлось, используя WinAPI кликать по кнопкам
Теперь давайте рассмотрим по порядку установку каждого приложения.
При старте автоустановщик проверяет наличие приложений для установки в соответствующих папках:
И так для каждого приложения
После этого запускаем функции установки каждого приложения одно за одним. Каждая следующая функция должна запускаться после завершения предыдущей
Первым запускается установка Google Chrome:
QProcess – класс для запуска внешних процессов. Здесь он используется для того, чтобы определить когда закончиться выполнении программы установки Chrome.exe, т.е. когда завершиться инсталляция, объект proc испустит сигнал завершения finished(int, QProcess::ExitStatus) после чего мы начнем установку следующего приложения уже в методе chromFinished. Далее указываем инсталлятору флаг бесшумной установки ‘-ms’ который позволит установить приложения без открытия каких-либо диалоговых окон.
После того, как завершиться процесс установки Google Chrome, выполниться метод chromFinished(int, QProcess::ExitStatus) в котором мы начинаем установку KMPlayer
В runSetupKmplayer все аналогично функции runSetupChrome, только флаг бесшумной установки у KMPlayer другой — ‘/s’. После завершения установки KMPlayer выполниться метод kmFinished(int, QProcess::ExitStatus) в котором мы начинаем установку WinRar
Здесь все аналогично предыдущим функциям. После установки WinRar запуститься метод rarFinished(int, QProcess::ExitStatus) в котором мы начинаем установку K-Lite Codeck с флагом ‘/VERYSILENT’
После завершения этого этапа запуститься метод codecFinished(int, QProcess::ExitStatus) в котором мы начинаем установку WinDjView. А здесь уже интереснее
Т.к. для этого инсталлятора не нашлось флага бесшумной установки, пришлось прокликать по кнопкам в мастере установки в функции startWdjTimer
Здесь обнуляются все переменные таймаутов, которые будут помогать задерживать ненадолго запуск API функций, чтобы мастер установки успел переключить страницу на следующий шаг. Также здесь создается и запускается таймер для первой страницы, который после 0.5 секунды вызовет метод checkDjwWindows1() в котором идет проверка, появилось ли нужное окно, если не появилось, выходим из функции и ждем еще 0.5 сек и так до появления нужного окошка(или выхода таймаута в 50 сек). После появления окошка останавливаем таймер и начинаем выполнять нужные нам действия на первой странице мастера
Здесь находим хендл нужного окна:
Здесь находим нужную нам кнопку ОК:
Отсылаем сигнал клика(Mouse Down+Mouse Up):
И запускаем таймер для следующего окна мастера установки:
Чтобы вызывать функции WinAPI нам нужно подключить заголовочный файл windows.h
Далее все по той же схеме, таймер ждет открытия нужного окна(с нужным заголовком) и после этого находит нужную кнопку и отсылаем ей сигнал нажатия:
Следующее окошко абсолютно идентичное по коду:
Следующее окошко тоже:
Далее чуть посложнее – нужно снять галочки с параметров установки Яндекс.Бар и нажать Установить:
Ниже привожу полный код метода, а дальше распишу какие функции за что отвечают:
Здесь все как обычно, находим хендл главного окна:
Далее находим нужную нам панель с флажками внутри родительского окна(wnd):
Откуда взялось число 32770? Это код нужной нам панели с флажками. Я его получил через инструмент Spy++ в Visual Studio
Он позволяет отследить нужные хендлы элементов в Windows окошках. Нужно нажать на мишень в окне Find Window и навести на нужное окошко или элемент в окне и Spy++ отобразит хендл окна
Далее внутри панели находим флажок Настроить параметры установки и щелкаем по нему чтобы активировать:
После этого находим нужные флажки и снимаем их:
После этого жмем Установить:
Далее на следующей странице нужно просто щелкнуть по кнопке Далее:
Далее нужно снять две галочки на последней странице установки и нажать готово. Действуем также как и раньше:
На этом установка заканчивается.
Вначале, когда я запускал этот автоустановщик без таймаутов, API функции упорно не хотели выполняться, пока я не понял, в чем было дело, нужно все делать шаг за шагом с задержками на нужное время, потому как каждая страница мастера установки открывается через различные промежутки времени
Автоматизация установки софта на чистую Windows
Наверное вы задавались вопросом, а можно ли упростить себе переустановку системы.
Конечно вы подразумеваете что переустановка Windows включает установку драйверов и нужного ПО. Office, Браузер и так далее.
Программа называется Silent Install Helper. Ссылка на sourceforge программы: sourceforge.net/projects/sih
Программа скачивается и запускается без установки.
Главное окно программы:
Эта программа обладает огромными возможностями для автоматизации установки.
Программа может создать скрипт для авто установки софта.
И так же установить весь софт прямо из программы.
Нам нужно создать скрипт для установки.
В Menu Bar в интерфейсе нам нужно выбрать пункт Installer.
В зависимости если от наших хотелок мы можем выбрать папку с инсталляторами или отдельно инсталляторы.
И после добавление всех установщиков нажимаем на галочку возле каждого инсталлятора.
И потом нажимаем пункт Tools нажимаем пункт Create *.cmd file.
Программа про анализирует установщик и создаст скрипт или запустит установку.
И сохраняем этот файл куда-то.
Программа создаст файл с примерно таким контентом:
Программа проанализирует инсталлятор и создаст скрипт для тихой установки программ если это возможно.