Что нового

[Автоматизация] Программный комплекс для автоустановки программ

Andruxakonst

Новичок
Сообщения
21
Репутация
0
Доброе время суток! Вот решил написать такой программный комплекс.
Суть работы:
1) на машинах пользователей по должно мониторить новую версию программы
Вопрос. Через что лучше это мониторить? Через ini файл, куда будет записываться номер версии ручками (или прогой, которая будет у админа) или есть какой другой способ?
2) У пользователя, при появлении новой версии ПО, должно будет выйти сообщение. И если он занят ему должно быть предложено время, на которое установку необходимо отложить.
Как быть если пользователь выберет время, которое будет больше чем до конца рабочего дня? Перенести на сл. день и опять записать это в др. ini (локальный).
3) Если пользователь согласился на установку, то запускается ранее прописанный скрипт для установке именно этой программы.
Ну тут в принципе ничего сложного нет.

Общий вопрос, как это можно реализовать? Только ini файлами, или может есть еще способ?

Файлы с программами и автоустановками будут лежать на сетевом диске.
 

inververs

AutoIT Гуру
Сообщения
2,135
Репутация
465
1) Да ini хороший простой вариант. Autoit например, так же обновляется.
2) Вам важно обновить программу или спрашивать разрешение у пользователя? Если первое, то обновляйте автоматически, если второе - то делаете кнопку, не беспокоить в течении недели.
3) Да, тут действительно ничего сложного нет, путь к новой версии тоже пусть лежит в ini файле.


Andruxakonst [?]
или может есть еще способ?
Можете поднять веб сервер :smile:
 
Автор
A

Andruxakonst

Новичок
Сообщения
21
Репутация
0
inververs, спасибо! Значит я пошел по нужному пути! Буду начинать работу по написанию. Если что буду сюда отписываться с вопросами.
 
Автор
A

Andruxakonst

Новичок
Сообщения
21
Репутация
0
Есть ли возможность сделать так, что бы скомпилированный скрипт(*exe) возвращал после успешного или с ошибкой выполнения какое либо значение? Как например как ф-ция
Код:
ShellExecuteWait
при запуске какой либо программы или инсталлятора возвращает код выхода из программы, которая была запущена.

Хочется сделать так, что бы один скрипт запускал второй и первый мог отследить правильность выполнения второго.
 
Автор
A

Andruxakonst

Новичок
Сообщения
21
Репутация
0
alex33, благодарю! Ларчик просто открывался. Пошел дальше писать и пробовать! :IL_AutoIt_1:
 
Автор
A

Andruxakonst

Новичок
Сообщения
21
Репутация
0
Итак, наконец у меня дошли руки для дальнейшей работы!
После долгого кропотливого писания текста программы, наткнулся на ошибку которую пока не удалось поправить.
И так вопрос.

Есть некий *.INI файл с параметрами.
Код:
[192.168.3.11]
fz212 = r:\!!!Install\!autoInstall\Install\
[192.168.3.133]
fz212 = r:\!!!Install\!autoInstall\Install\

При совпадении IP машины и секции проблем нет, все отрабатывает как надо. Но вот как быть, когда такой сейкции нет?
Есть какая -то функция, типа
Код:
FileExist
, только для определения наличия секции?
Если идти просто
Код:
IniRead ( $ConfigLanDir, $IP, "?????", "Ошибка!" )
, то возникает ошибка. Где "вопросы" может быть что угодно...
Проще, как узнать что секция [192.168.3.11] существует или отсутствует?
 

InnI

AutoIT Гуру
Сообщения
4,557
Репутация
1,259
Andruxakonst [?]
Если идти просто
А зачем усложнять?
Код:
$fz212 = IniRead ( $ConfigLanDir, $IP, "fz212", "Ошибка!" )
If $fz212 = "Ошибка!" Then MsgBox(0, "", "Отсутствует: или файл или секция или параметр")
 

madmasles

Модератор
Глобальный модератор
Сообщения
7,790
Репутация
2,320
Andruxakonst [?]
как узнать что секция [192.168.3.11] существует или отсутствует?
Если есть принципиальная разница между отсутствием ини-файла и секции, то можно примерно так.
Код:
#cs
	$s_IniFile	- полный путь к ини-файлу
	$s_Section	- имя секции (регистр не учитывается)
	вернет:
	-1	- ини-файл $s_IniFile не существует
	0	- нет секции $s_Section
	1	- есть секция
#ce
Func _IniSectionExists($s_IniFile, $s_Section)
	If Not FileExists($s_IniFile) Then Return -1
	Local $a_Section = IniReadSectionNames($s_IniFile)
	If @error Then Return 0
	For $i = 1 To $a_Section[0]
		If $a_Section[$i] = $s_Section Then Return 1
	Next
	Return 0
EndFunc   ;==>_IniSectionExists
 
Автор
A

Andruxakonst

Новичок
Сообщения
21
Репутация
0
Так и сделал.
Считал все в массив IniReadSectionNames()и через цикл For ... Next перебрал. Если находит, то переменная одна, нет - другая.
Чуть позже выложу.
 
Верх