Форум программистов, компьютерный форум, киберфорум
Наши страницы
PowerShell
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.60/5: Рейтинг темы: голосов - 5, средняя оценка - 4.60
Stalis
0 / 0 / 0
Регистрация: 20.06.2015
Сообщений: 6
1

Автоматическая переустановка программы

09.03.2016, 20:52. Просмотров 962. Ответов 5
Метки нет (Все метки)

Всем доброго времени суток. Решил для себя и команды, в которой начинаем заниматься разработкой написать скрипт, который будет загружать и устанавливать все необходимое (IDE(Code::Blocks), либы к ней и т.д.). Дело вот в чем: Инсталлятор и деинсталлятор Code::Blocks не поддерживает тихий запуск(по крайней мере инфы нигде не нашел), а хотелось бы, чтобы инсталляция прошла без участия пользователя.
Скрипт пишу на онтопике. Насколько я понял, при помощи WMI можно отслеживать активность процесса/службы(поправьте, если не прав). Можно ли как-нибудь отследить запуск процесса(cb-1601-mingw-setup.exe),
Алгоритм, который вертится у меня в голове таков:

Открываем инсталлятор
Создаем COM-объект, который и будет нашим имитатором
Отслеживаем, открылось ли окно
Имитируем нажатие "Enter"
Отслеживаем, изменилась ли форма
Снова имитируем нажатие "Enter"
Снова отслеживаем, изменилась ли форма
Снова имитируем нажатие "Enter"
Ищем TextBox, который очищаем и вставляем туда строку(путь установки)
Жмем "Enter"
Если (появилось окно над формой(якобы такая директория уже существует)) {жмем Enter}
Отслеживаем изменение формы
Жмем Enter

Но вот вопрос, как это все реализовать?

Дошел до такого и все. Втыкалити
PowerShell
1
2
3
4
5
6
                    start $dest\cb-1601-mingw-setup.exe
                    #Создаем объект WScript.Shell
                    $wshell = New-Object -ComObject WScript.Shell 
                    Start-Sleep -Seconds 2
                    #Нажимаем Enter
                    $wshell.SendKeys("{Enter}")
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
09.03.2016, 20:52
Ответы с готовыми решениями:

Переустановка win
Проблема такая-при переустановке винды, в тот момент, когда нужно выбрать...

Переустановка Windows?
Есть Windows XP установленно и настроенно много разных программ, вопрос как...

Переустановка Windows на чистый HDD
Есть необходимость начисто затереть HDD, занулить, как говорят профи. Смогу ли...

Переустановка Windows через интернет
Здравствуйте, ув. форумчане. Я на данном форуме новичек. Появилась идея и хочу...

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

5
greg zakharov
Покинул форум
1967 / 837 / 242
Регистрация: 07.05.2015
Сообщений: 1,679
10.03.2016, 09:49 2
Какой смысл заморачиваться с инсталлятором, когда на офсайте Code::Blocks есть помимо прочего zip-пакеты? Гораздо проще развернуть их или вовсе собрать все из исходников самостоятельно, нежели устанавливать mingw'овый пакет. Но если головная боль предпочтительней, то при ближейшем рассмотрении инсталляторы Code:Blocks - это NSIS-пакеты, а значит теоретически они должны поддерживать "тихую" установку. Если память не изменяет, то посмотреть на допустимые аргументы командной строки инсталлятора можно с помощью ключа /cmdhelp, а "тихая" установка осуществляется примерно так:
Код
installer.exe /s _?="C:\Program Files\CodeBlocks"
где _?="..." указание конечной папки установки. В общем, проще скачать сам NSIS и почитать справку по нему.
Если все вышесказанное не берется в расчет (или разработчики не предусмотрели чего-то в инсталляторе), то нужно сразу оговориться: использование WMI является плохой затеей, а потому при всей его внешней сексуальности за интимные места его лучше не лапать, ровно как и секас с COM ничем хорошим не обернется; ну запустите Вы инсталлятор с помощью Run WScript.Shell'а, ну получите фокус его окна AppActivate'ом, а дальше? куча переходов SendKeys'ами? Лучше все-таки zip-пакет, благо распаковать его с помощью PowerShell не составляет труда.
1
Stalis
0 / 0 / 0
Регистрация: 20.06.2015
Сообщений: 6
11.03.2016, 00:15  [ТС] 3
Спасибо за инфу, с тихой установкой разбираться было влом, в итоге вставил ссылку на *.zip. Кстати, а штатными средствами powershell можно ли распаковать *.tar.gz? Или 7zip юзать?
И еще, если можно, вопрос: между echo и Write-host есть принципиальная разница?
0
greg zakharov
Покинул форум
1967 / 837 / 242
Регистрация: 07.05.2015
Сообщений: 1,679
11.03.2016, 08:36 4
zip'ы PowerShell способен распаковывать и без сторонней помощи, правда в зависимости от версии оного принцип распаковки будет отличаться. Что касательно тарболов (bz2, gz и прочего), в Windows с ними приходится работать крайне редко (если не брать в расчет случаи сборки чего-то из исходников, но на то есть MinGW или Cygwin), поэтому как вариант можно использовать либо 7zip, либо установить PSCX для PowerShell, - сам не пользовался, но говорят вещь неплохая, с кучей различных свистоперделок, в том числе возмождностью распаковки тарболов (очевидно через тот же 7zip).
echo - это альяс командлета Write-Output:
PowerShell
1
2
3
4
5
PS E:\sandbox> ls alias:echo
 
CommandType     Name                                               Version    Source
-----------     ----                                               -------    ------
Alias           echo -> Write-Output
следовательно, разница между echo и Write-Host все же есть:
PowerShell
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
PS E:\sandbox> man Write-Output
 
NAME
    Write-Output
 
SYNOPSIS
    Отправляет указанные объекты в следующую команду по конвейеру.
    Если команда является последней в конвейере, объекты отображаются
    в консоли.
...
 
PS E:\sandbox> man Write-Host
 
NAME
    Write-Host
 
SYNOPSIS
    Записывает настраиваемые выходные данные в хост.
...
1
Stalis
0 / 0 / 0
Регистрация: 20.06.2015
Сообщений: 6
12.03.2016, 20:10  [ТС] 5
Спасибо большое, скрипт доделал, доволен как слон) Сейчас начал изучать PowerGUI(до этого писал на Windows Powershell ISE)
0
greg zakharov
Покинул форум
1967 / 837 / 242
Регистрация: 07.05.2015
Сообщений: 1,679
12.03.2016, 20:47 6
Со своей стороны могу сказать, что не испытываю восторга ни от ISE, ни от PowerGUI. Это, конечно же, субъективно: на всяк товар найдется свой купец. Лично мне нравится Vim; он не требователен к ресурсам, расширяем и настраивается под конкретные нужды так, как это хочется лично мне, а не то, как это решили за меня.
0
12.03.2016, 20:47
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
12.03.2016, 20:47

Переустановка win на более старус версию
здравствуйте. такая задача: имеется комп(не первой свежести). на нем есть win...

Автоматическая защита от DDoS
Доброго времени суток, уважаемые форумчане! Вопрос назрел: имеется сервер на...

Автоматическая раздача прав на папки
Доброе времени суток. Есть скрипт который по заготовке выдирает из csv файла...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru