Автор Тема: [Автоматизация] Автоматическая установка набора программ  (Прочитано 5154 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Эта тема содержит сообщение, помеченное как лучший ответ. Кликните здесь для перехода к этому сообщению.

Оффлайн vollez [?]

  • Новичок
  • *
  • Сообщений: 8
  • Репутация: 0
    • Награды
  • Версия AutoIt: 3.3.12.0
Здравствуйте. Решил написать программу для автоматической установки набора программ. Всё вроде бы работает (по отдельности) но я просто не знаю (или не хватает фантазии) как придумать добавить автоустановку SP3 для XP первым пунктом установки. Всё застопорилось на настойке автозапусков и указателях на функции.
Код: AutoIt [Выделить]
; Запускаем скрипт с админскими правами
#requireadmin

;указываем, что нужно использовать координаты окна программы, а не рабочего стола
Opt("MouseCoordMode", 2)
Opt("PixelCoordMode", 2)

;эти инклуды нужны для используемых нами функций
#include <GUIConstants.au3>
#include <file.au3>

;Графическая оболочка (Гуи)
$hGUI = GUICreate('Инсталлер', 200, 430)
$h_1 = GUICtrlCreateCheckbox('SP3', 10, 20, 190, 17)
$h_2 = GUICtrlCreateCheckbox('Обновление драйверов', 10, 40, 190, 17)
$h_3 = GUICtrlCreateCheckbox('WinRar x32', 10, 60, 190, 17)
$h_4 = GUICtrlCreateCheckbox('WinRar x64', 10, 80, 190, 17)
$h_5 = GUICtrlCreateCheckbox('Adobe Reader XI', 10, 100, 190, 17)
$h_6 = GUICtrlCreateCheckbox('Microsoft Office 2007', 10, 120, 190, 17)
$h_7 = GUICtrlCreateCheckbox('Adobe Photoshop CC 14', 10, 140, 100, 17)
$h_8 = GUICtrlCreateCheckbox('Reboot', 10, 180, 190, 17)
$hLabel = GUICtrlCreateLabel('Выберите и нажмите старт', 10, 380, 180, 17)
$hButtonGo = GUICtrlCreateButton('СТАРТ', 10, 400, 80, 25)
$hButtonQuit = GUICtrlCreateButton('ВЫХОД', 100, 400, 80, 25)
GUISetState()

;Проверка есть ли наш скрипт в авторане
If RegRead("HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run", @ScriptName) Then
    MyFunc2()
Else
    Myfunc()
EndIf

;Установка программ
Func Myfunc()
        While 1
        $msg = GUIGetMsg()
        Select
            Case $msg = $GUI_EVENT_CLOSE Or $msg = $hButtonQuit
                Exit
            Case $msg = $hButtonGo
                GUISetState(@SW_DISABLE)
                If GUICtrlRead($h_1) = $GUI_UNCHECKED And GUICtrlRead($h_2) = $GUI_UNCHECKED And GUICtrlRead($h_3) = $GUI_UNCHECKED And GUICtrlRead($h_4) = $GUI_UNCHECKED And GUICtrlRead($h_5) = $GUI_UNCHECKED And GUICtrlRead($h_6) = $GUI_UNCHECKED And GUICtrlRead($h_7) = $GUI_UNCHECKED = $GUI_UNCHECKED And GUICtrlRead($h_8) = $GUI_UNCHECKED Then
                    MsgBox(0, 'Error', 'Ни одного пункта не выбрано!')
                Else
                    If GUICtrlRead($h_1) = $GUI_CHECKED Then
                        GUICtrlSetData($hLabel, 'Устанавливаем SP3')
Здесь должен быть код установки  SP3. Код приложен в конце. После окончания установки код должен продолжаться дальше.

                        GUICtrlSetData($hLabel, 'SP3 установлен')
                    EndIf
                    If GUICtrlRead($h_2) = $GUI_CHECKED Then
                        GUICtrlSetData($hLabel, 'Обновляем драйверы')
                        Run("\Автоинсталл\Soft\DRPSu12\DriverPackSolution.exe")
                        ControlClick('DriverPack Solution 12','Отмена','Button2')
                        GUICtrlSetData($hLabel, 'Драйверы обновлены')
                    EndIf
                    If GUICtrlRead($h_3) = $GUI_CHECKED Then
                         GUICtrlSetData($hLabel, 'Устанавливаем WinRar x32')
                        ; устанавливаем WinRar x32
                        Run("\Автоинсталл\Soft\winrar-x32-420ru.exe")
                        WinWaitActive("WinRAR 4.20 (русская 32-разрядная версия)")
                        ControlClick('WinRAR 4.20 (русская 32-разрядная версия)','Установить','Button2')
                        WinWaitActive("Настройка WinRAR")
                        Send("{enter}")
                        WinWaitActive("Установка WinRAR")
                        ControlClick('Установка WinRAR','Готово','Button1')
                        WinClose("WinRAR")
                        sleep(1000)
                        GUICtrlSetData($hLabel, 'WinRar x32 установлен')
                    EndIf
                    If GUICtrlRead($h_4) = $GUI_CHECKED Then
                        GUICtrlSetData($hLabel, 'Устанавливаем WinRar x64')
                         ; устанавливаем WinRar x64
                        Run("\Автоинсталл\Soft\winrar-x64-420ru.exe")
                        WinWaitActive("WinRAR 4.20 (русская 64-разрядная версия)")
                        ControlClick('WinRAR 4.20 (русская 64-разрядная версия)','Установить','Button2')
                        WinWaitActive("Настройка WinRAR")
                        Send("{enter}")
                        WinWaitActive("Установка WinRAR")
                        ControlClick('Установка WinRAR','Готово','Button1')
                        WinClose("WinRAR")
                        sleep(1000)
                        GUICtrlSetData($hLabel, 'WinRar x64 установлен')
                    EndIf
                    If GUICtrlRead($h_5) = $GUI_CHECKED Then
                        GUICtrlSetData($hLabel, 'Устанавливаем Adobe Reader XI')
                        ; устанавливаем Adobe Reader XI
                        RunWait("\Автоинсталл\Soft\Adobe Reader XI v11.0.10\Adobe Reader XI v11.0.10\Adobe.Reader.XI.v11.0.10.exe  /S /Q")
                        GUICtrlSetData($hLabel, 'Adobe Reader XI установлен')
                    EndIf
                    If GUICtrlRead($h_6) = $GUI_CHECKED Then
                        GUICtrlSetData($hLabel, 'Устанавливаем Microsoft Office 2007')
                        RunWait("\Автоинсталл\Soft\office2007\SETUP.EXE")
                        Sleep(1000)
                        GUICtrlSetData($hLabel, 'Microsoft Office 2007 установлен')
                    EndIf
                    If GUICtrlRead($h_7) = $GUI_CHECKED Then
                        GUICtrlSetData($hLabel, 'Устанавливаем Adobe Photoshop CC 14')
                        RunWait("\Автоинсталл\Soft\Adobe Photoshop CC 14.1.2 Final RePack\PhotoshopCC-14.1.2.exe /S /R")
                        Sleep(1000)
                        GUICtrlSetData($hLabel, 'Adobe Photoshop CC 14 установлен')
                    EndIf
                    If GUICtrlRead($h_8) = $GUI_CHECKED Then
                        GUICtrlSetData($hLabel, 'Reboot')
                        Shutdown(2)
                        GUICtrlSetData($hLabel, 'Reboot')
                    EndIf
                    MsgBox(0, 'Done!', 'Все выбранные программы установленны')
                    GUICtrlSetData($hLabel, 'Выберите софт и нажмите GO!')
                EndIf
                GUISetState(@SW_ENABLE)
        EndSelect
    WEnd
EndFunc   ;==>Myfunc

Код установки SP3
Func fragment()
   While 1
   RegWrite("HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run", "Path1", "REG_SZ", @ScriptFullPath)
   RunWait("WindowsXP-KB936929-SP3-x86-RUS /passive /forcerestart")
   WEnd
EndFunc
Func fragment2()
   While 1
   Sleep(30000)
   RegDelete("HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run", "Path1")
   Shutdown(2)
WEnd
EndFunc


Русское сообщество AutoIt


Оффлайн Ksaan [?]

  • bb
  • Новичок
  • *
  • Сообщений: 207
  • Репутация: 15
  • Пол: Мужской
    • Награды
  • Версия AutoIt: 3.3.x.x
Я не совсем понял что ты хочешь? Вызывай функцию с установкой SP3 там где ты хочешь.
Воображение - это начало создания. Вы воображаете то, что хотите; вы желаете то, что воображаете; и, наконец, вы создаете то, что желаете.
                                                 Джордж Бернард Шоу.

Оффлайн vollez [?]

  • Новичок
  • *
  • Сообщений: 8

  • Автор темы
  • Репутация: 0
    • Награды
  • Версия AutoIt: 3.3.12.0
Как мне сказал препод у которого я скачал обновление после установки необходимо сделать 2 перезагрузки и только потом устанавливать дрова и программы. Проблема с реализацией этих перезагрузок. Отдельный скрипт установки sp3 работает отлично, а как потом из него вернуться в этот и продолжить выполнение я не знаю.

Русское сообщество AutoIt


Оффлайн Ksaan [?]

  • bb
  • Новичок
  • *
  • Сообщений: 207
  • Репутация: 15
  • Пол: Мужской
    • Награды
  • Версия AutoIt: 3.3.x.x
Можно попробовать на время установки писать лог файл и при перезагрузке читать с него с какой функций продолжить скрипт
я с телефона сижу может где ошибся но думаю смысл поймёшь
(нажмите для показа/скрытия)


Добавлено: Март 06, 2015, 20:23:45
Переделал вроде теперь должно работать.
« Последнее редактирование: Март 06, 2015, 20:34:15 от Ksaan »

Оффлайн vollez [?]

  • Новичок
  • *
  • Сообщений: 8

  • Автор темы
  • Репутация: 0
    • Награды
  • Версия AutoIt: 3.3.12.0
При запуске теперь сразу пишет что выбранные программы установлены.
А разве после установки программы значение из ini не должно удаляться?
« Последнее редактирование: Март 07, 2015, 07:57:02 от vollez »

Русское сообщество AutoIt


Оффлайн madmasles [?]

  • Глобальный модератор
  • *
  • Сообщений: 7790
  • Репутация: 2317
  • Пол: Мужской
  • Награды За модерирование форума
    • Награды
  • Версия AutoIt: 3.3.x.x
vollez  [?]
Цитировать
после установки необходимо сделать 2 перезагрузки и только потом устанавливать дрова и программы.
Можно сделать примерно по такой схеме (работает только скомпилированный скрипт).
Код: AutoIt [Выделить]
If $CmdLine[0] Then
    Switch $CmdLine[1]
        Case '/AfterSP3'
            MsgBox(64, 'Info', 'Первая перезагрузка после установки SP3')
            MsgBox(64, 'Info', 'Устанавливаем драйвера')
            RegWrite('HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\RunOnce', @ScriptName, 'REG_SZ', '"' & @ScriptFullPath & '" /Next')
            Shutdown(2)
        Case '/Next'
            MsgBox(64, 'Info', 'Вторая перезагрузка после установки драйверов')
            MsgBox(64, 'Info', 'Устанавливаем программы')
    EndSwitch
Else
    MsgBox(64, 'Info', 'Устанавливаем SP3 (если надо)')
    RegWrite('HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\RunOnce', @ScriptName, 'REG_SZ', '"' & @ScriptFullPath & '" /AfterSP3')
    Shutdown(2)
EndIf

Также можно предусмотреть ключ автоматической установки.

PS
Скрипты определения установленных систем, версий SP и программ есть на форуме.
« Последнее редактирование: Март 07, 2015, 08:46:50 от madmasles »

Оффлайн vollez [?]

  • Новичок
  • *
  • Сообщений: 8

  • Автор темы
  • Репутация: 0
    • Награды
  • Версия AutoIt: 3.3.12.0
Цитировать
Также можно предусмотреть ключ автоматической установки.
Не очень понял. Тут почти все программы устанавливаются с ключом автоустановки. Проблема в том чтобы настроить запуск установки выбранных программ после перезагрузки.Примерно последовательность должна быть такая:
1. запуск приложения и выбор программ.
2. перезагрузка после установки SP3
3. установка остальных программ выбранных в первом пункте

Оффлайн madmasles [?]

  • Глобальный модератор
  • *
  • Сообщений: 7790
  • Репутация: 2317
  • Пол: Мужской
  • Награды За модерирование форума
    • Награды
  • Версия AutoIt: 3.3.x.x
vollez  [?]
Цитировать
Цитировать
Также можно предусмотреть ключ автоматической установки.
Не очень понял.
Я имею в виду следующее:
1. Если скрипт запускается первый раз без ключа:
1.1. Открывается окно, где пользователь выбирает то, что хочет установить.  Выбранные программы пишутся, например, в ини-файл.
1.2. Проверка и установка SP (если нужно), первая перезагрузка.
1.3. Установка драйверов, вторая перезагрузка.
1.4. Установка выбранных (прочитанных из ини-файла) программ. Удаление ини-файла. Если нужна, то последняя перезагрузка.

2. Если скрипт запускается первый раз, например, с ключом /avto.
2.1 Нет окна, в ини-файл пишутся программы по умолчанию (см. п.2.4.).
2.2. Проверка и установка SP (если нужно), первая перезагрузка.
2.3. Установка драйверов, вторая перезагрузка.
2.4. Установка, например, всех программ или только необходимого минимума (как Вы сами предусмотрите в скрипте). Удаление ини-файла. Если нужна, то последняя перезагрузка.

Схема реализации всего этого есть в моем предыдущем ответе и в ответе Ksaan`a.

Русское сообщество AutoIt


Оффлайн Ksaan [?]

  • bb
  • Новичок
  • *
  • Сообщений: 207
  • Репутация: 15
  • Пол: Мужской
    • Награды
  • Версия AutoIt: 3.3.x.x
При запуске теперь сразу пишет что выбранные программы установлены.
А разве после установки программы значение из ini не должно удаляться?
Он не завершает скрипт сразу при перезагрузке, попробуй зациклить функцию
Код: AutoIt [Выделить]
Func fragment()
    GUICtrlSetData($hLabel, 'Устанавливаем SP3')
    RegWrite("HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\RunOnce", "Path1", "REG_SZ", @ScriptFullPath)
    RunWait("WindowsXP-KB936929-SP3-x86-RUS /passive /forcerestart")
    Shutdown(2) ; reset
    While 1
        Sleep(100)
    WEnd
EndFunc ; ==> fragment()


P.S Только я кто его знает как у всех но у меня скрипт сразу создаёт ini если скрипт на рабочем столе лежит
« Последнее редактирование: Март 07, 2015, 11:05:44 от Ksaan »

Оффлайн madmasles [?]

  • Глобальный модератор
  • *
  • Сообщений: 7790
  • Репутация: 2317
  • Пол: Мужской
  • Награды За модерирование форума
    • Награды
  • Версия AutoIt: 3.3.x.x
Ksaan,
ИМХО, лучше писать в реестр в раздел ...\RunOnce, а не в ...\Run, так как не нужно будет в последствии удалять эти записи.


Добавлено: Март 07, 2015, 11:07:39
Ksaan  [?]
Цитировать
кто его знает как у всех но у меня скрипт сразу создаёт ini если скрипт на рабочем столе лежит
Ksaan  [?]
Цитировать
$sPath_ini = @ScriptDir & "Test.ini"
У Вас нет обратного слеша перед Test.ini.


Добавлено: Март 07, 2015, 11:11:32
vollez,
Могу еще посоветовать посмотреть этот раздел: Наборы обновлений для Windows XP/2003/Windows 7. ИМХО, там есть все, что Вам нужно.
« Последнее редактирование: Март 07, 2015, 11:11:32 от madmasles, Причина: Объединение сообщений »

Оффлайн vollez [?]

  • Новичок
  • *
  • Сообщений: 8

  • Автор темы
  • Репутация: 0
    • Награды
  • Версия AutoIt: 3.3.12.0
Всё понял. Идея с параметром отличная возьму на заметку для дальнейшего развития. Сейчас бы привести в рабочее состояние скрипт который предложил Ksaan. Я его немного изменил. Вот что получилось. Установка программ по отдельности в нём работает, но вся проблема в том что путаюсь в автозапусках и правильно их расставить у меня не получается.

(нажмите для показа/скрытия)

Помечен как лучший ответ пользователем vollez Отправлен Март 07, 2015, 18:54:23

Оффлайн Ksaan [?]

  • bb
  • Новичок
  • *
  • Сообщений: 207
  • Репутация: 15
  • Пол: Мужской
    • Награды
  • Версия AutoIt: 3.3.x.x
Ну всё я у себя уже протестировал: при выборе SP3 будет 2 перезагрузки и продолжение установки программ
Скрипт откомпелируй
(нажмите для показа/скрытия)
Я бы переделал автозагрузку через RunOnce но мне лень со смартфона это делать

Оффлайн joiner [?]

  • Расмус-бродяга
  • Модератор
  • *
  • Сообщений: 2959
  • Репутация: 495
  • Пол: Мужской
    • Награды
  • Версия AutoIt: 3.3.12.0
помимо этого, элементы взять в массив и избавиться от множества If...Then
Были времена, когда солнце было ярче, трава зеленее, а водка сорокоградуснее

Оффлайн AZJIO [?]

  • VIP
  • *
  • Сообщений: 2741
  • Репутация: 1143
    • мой сайт
    • Награды
  • Версия AutoIt: 3.3.8.1
vollez
В RunOnce записывай автозагрузку и в ini веди учёт количества перезагрузок. Хотя и в Run можно, удаляя самостоятельно. А в RunOnce само удаляется после загрузки, и там можно сделать очередь запуска исполняемых файлов.

Русское сообщество AutoIt


 

Похожие темы

  Тема / Автор Ответов Последний ответ
10 Ответов
17191 Просмотров
Последний ответ Январь 31, 2012, 16:44:25
от snoitaleR
1 Ответов
5568 Просмотров
Последний ответ Июль 15, 2011, 11:17:40
от snoitaleR
7 Ответов
17983 Просмотров
Последний ответ Июль 15, 2011, 20:15:38
от BlackCoreLogic
0 Ответов
3506 Просмотров
Последний ответ Июль 15, 2011, 04:39:12
от CreatoR
1 Ответов
7457 Просмотров
Последний ответ Декабрь 26, 2011, 10:51:05
от Duero
0 Ответов
4783 Просмотров
Последний ответ Сентябрь 03, 2013, 16:11:53
от alex33
13 Ответов
13440 Просмотров
Последний ответ Сентябрь 01, 2018, 02:16:42
от Robertpak
0 Ответов
6814 Просмотров
Последний ответ Декабрь 05, 2013, 14:53:00
от saturnus
4 Ответов
3324 Просмотров
Последний ответ Февраль 22, 2014, 15:29:16
от Astel064
0 Ответов
396 Просмотров
Последний ответ Ноябрь 25, 2017, 01:13:01
от Kuznec