Показать полную графическую версию : Скрипт автоматически запускающий исталляцию программ
Всем привет, возникла проблема - как можно сделать чтоб в зависимости от необходимости установки программ, скрипт перенаправлял на установку текущей программы или на запрос установки следующей программы?
вот сам простой скрипт:
Set WshShell = CreateObject("WScript.Shell")
RetCode = WshShell.Run("""C:\Program Files\CCleaner\CCleaner.exe""", 1, vbTrue)
RetCode = WshShell.Run("notepad", 1, vbTrue)
RetCode = WshShell.Run("notepad", 1, vbTrue)
Будьте так добры, помогите :)
Мммм... что то не очень понятно, что требуется. Можно на пальцах? По порядку так сказать...
:) конечно!
1. необходимо установить 3 программы к примеру.
Что должен делать скрипт - спрашивает в самом начале - нужно ли устанавливать Пр№1, тут - если я говорю - да, то скрипт устанавливает ее, после завершения, предлагает уст. пр №2, если я скажу нет, то сразу переходит на прогамму №2 не устанавливая 1ю и т.д. - программ много - автоматизация установок ПО
:) надеюсь на понимание!
И спасибо за внимание. Очень нужно просто - это все у меня есть, но на батниках и без возм выбора, а желательно.
Так?
If (MsgBox("Установить программу XXX?", vbYesNo) = vbOK) Then
RetCode = WshShell.Run("XXX", 1, vbTrue)
End If
If (MsgBox("Установить программу YYY?", vbYesNo) = vbOK) Then
RetCode = WshShell.Run("YYY", 1, vbTrue)
End If
ну как бы да, надеюсь я правильно понял - а если я нажму нет, то тогда как повед скрипт?
поведет скрипт, ведь он должен автоматом перекинуться на установку программы yyy
тоесть как я понимаю речь идет о команде Else
' Объявляем переменные
Dim WshShell,theNotepad,Res,Text,Title
' Создаем объект WshShell
Set WshShell = WScript.CreateObject("WScript.Shell")
Text="Запуск установки программного обеспечения" & vbCrLf & "Установка Хранителя Паролей "
Title="Установка"
' Выводим диалоговое окно на экран
Res=WshShell.Popup(Text,0,Title,vbOkCancel)
' Определяем, какая из кнопок была нажата в диалоговом окне
If (Res=vbOk) Then
Set theNotepad = WshShell.Exec("C:\Program Files\KeePass-1.08\KeePass.exe")
Else
... вот тут надо чтоб снова вышло окно запроса
и вновь выбрать да или нет, но уже для следующей программы
а потом в конце эта процедура
WScript.Sleep 100
только здесь выполнено по другому - просто для объяснения.
Если ты нажмешь Отмена, программа перейдет к выполнению следующего оператора.
В примере, который указал ты, если ты нажмешь Да, и установится первая программа, то после этого запроса на установку второй программмы не будет.
в том то и дело, а мне надо чтоб все программы автоматически предлагались к выполнению
Ну и?
If () Then
............
End If
И так по порядку для каждой программы.
А еще лучше функцию напиши. Будет грамотнее.
Option Explicit
Dim WshShell,theNotepad,Res,Text,Title,RetCode
Set WshShell = WScript.CreateObject("WScript.Shell")
Text="Хранитель паролей"
Title="Установка"
Res=WshShell.Popup(Text,0,Title,vbOkCancel)
If (Res=vbOk) Then
RetCode = WshShell.Run("""C:\Program Files\KeePass-1.08\KeePass.exe""", 1, vbTrue)
Else
Text="RegShot"
Title="Установка"
Res=WshShell.Popup(Text,0,Title,vbOkCancel)
RetCode = WshShell.Run("""C:\Program Files\regshot181_src_bin\regshot.exe""", 1, vbTrue)
WScript.Sleep 100
End If
но как сделать чтоб если я выбираю Yes, то после установки, автоматом выходило окно с вопросом и т.д.
..с вопросом на установку след программы
Option Explicit
Dim WshShell,theNotepad,Res,Text,Title,RetCode
Set WshShell = WScript.CreateObject("WScript.Shell")
Text="Хранитель паролей"
Title="Установка"
Res=WshShell.Popup(Text,0,Title,vbOkCancel)
If (Res=vbOk) Then
RetCode = WshShell.Run("""C:\Program Files\KeePass-1.08\KeePass.exe""", 1, vbTrue)
End If
Text="RegShot"
Title="Установка"
Res=WshShell.Popup(Text,0,Title,vbOkCancel)
If (Res=vbOk) Then
RetCode = WshShell.Run("""C:\Program Files\regshot181_src_bin\regshot.exe""", 1, vbTrue)
End If
WScript.Sleep 100
Но я бы сделал так:
'------------------------
Option Explicit
'------------------------
Dim setup_dic
Set setup_dic = CreateObject("Scripting.Dictionary")
Call setup_dic.Add("Хранитель паролей", """C:\Program Files\KeePass-1.08\KeePass.exe""")
Call setup_dic.Add("RegShot", """C:\Program Files\regshot181_src_bin\regshot.exe""")
Dim prog, progs
progs = setup_dic.Keys
For Each prog In progs
Call setup_prog(prog, setup_dic(prog))
Next
'------------------------
dim g_WshShell
Function setup_prog(prog_name, prog_path)
If IsEmpty(g_WshShell) Then
Set g_WshShell = WScript.CreateObject("WScript.Shell")
End If
If (g_WshShell.Popup(prog_name,0,"Установка",vbOkCancel) = vbOk) Then
Call g_WshShell.Run(prog_path, 1, vbTrue)
End If
End Function
Таким образом усилия по добавлению новых программ сводятся к минимуму.
:) вообще спасибо! Но есть пару моментов - когда я нажмаю ок при первой программе, то после запука, недожидаясь завершения первой запускается 2ая.
2ое - не мог бы ты разъяснить чуток что описывается в скрипте?
Буду очень благодарен.
Только что попробовал. Программы нормально запускаются по порядку, проверь скрипт.
По поводу скрипта.
Dim setup_dic
Set setup_dic = CreateObject("Scripting.Dictionary")
Call setup_dic.Add("Хранитель паролей", """C:\Program Files\KeePass-1.08\KeePass.exe""")
Call setup_dic.Add("RegShot", """C:\Program Files\regshot181_src_bin\regshot.exe""")
Scripting.Dictionary – объект, позволяющий хранить коллекцию данных в виде ключ-значение. Ключ должен быть уникальным. В качестве ключа здесь выступает название программы, в качестве значения – путь к ней. Сначала мы заполняем словарь известными программами.
Dim prog, progs
progs = setup_dic.Keys
Получаем массив, содержащий все значения ключей.
For Each prog In progs
Call setup_prog(prog, setup_dic(prog))
Next
Теперь перебираем все значения ключей (имя программы), и для каждого значения вызываем функцию запуска, в которую передаем название программы, и путь ее запуска (значение словаря, соответствующее имени программы – setup_dic(prog))
:) отличный скрипт, так на самом деле станет еще проще перебирать все программы с помощью словаря!
Респект! Я еще с ним повожусь, потом поделюсь впечатлениеми подробнее.
Спасибо.
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.
Available in ZeroNet 1osznRoVratMCN3bFoFpR2pSV5c9z6sTC