Что нового

[Автоматизация] Установка OCS

gdu

Новичок
Сообщения
20
Репутация
0
Добрый день!!! подскажите как скопировать нужные конфиги в папку которую создает запускаемая программа по адресу:C:\Пользователи\Имя учетной записи\AppData\Local\Temp? имя папки каждый раз изменяется (*.tmp)!!
Пытаюсь автоматизировать установку OCS агента, проблема заключается в том, что при запуске агента он создает папку с разными именами в userprofile/temp, пока удалось выполнить копирование в папку temp!!!! но как скопировать во вновь созданную папку с рандомным именем не пойму???? прошу помощи..
Код:
#RequireAdmin
#include <GUIConstants.au3>
Opt("TrayIconDebug", 1)
Opt("WinWaitDelay", 0)
$pfiles = EnvGet("programfiles")
$app_name = ("OCS Inventory Agent 2017")
$temp_path = (@TempDir)
$podrazdelenie = "ГГ Фи упр|КУГСИН|ГГУ и тд..
DirCreate ($pfiles&"\OCS Inventory Agent\")
FileInstall ("D:\disk_D\Autoit\source\OCS Agent 4.0.5.4\admininfo.conf", $pfiles&"\OCS Inventory Agent\admininfo.conf")

GUICreate("Проверка принадлежности компьютера", 320, 330)

GUICtrlCreateLabel ("Фамилия, Имя, Отчество пользователя:",  10, 10, 400)
$combo_fio = GUICtrlCreateInput (RegRead ("HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Microsoft\Windows NT\CurrentVersion", "RegisteredOwner"), 10,30,300,20)
GUICtrlCreateLabel ("текущая информация:   "&@LF&RegRead ("HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Microsoft\Windows NT\CurrentVersion", "RegisteredOwner"),  10, 55, 400)

GuiCtrlCreateGraphic(10, 90, 50, 50, 0)
GUICtrlSetGraphic(-1,$GUI_GR_COLOR, 0x646464)
GUICtrlSetGraphic(-1,$GUI_GR_LINE, 300, 0)
GUICtrlSetGraphic(-1,$GUI_GR_MOVE, 0, 90)
GUICtrlSetGraphic(-1,$GUI_GR_LINE, 300, 90)

GUICtrlCreateLabel ("Подразделение, выберите из списка:",  10, 100, 400)
$combo_podr = GUICtrlCreateCombo (RegRead ("HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Microsoft\Windows NT\CurrentVersion", "RegisteredOrganization"), 10,120,300)
GUICtrlSetData(-1, $podrazdelenie, "")
GUICtrlCreateLabel ("текущая информация:   "&@LF&RegRead ("HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Microsoft\Windows NT\CurrentVersion", "RegisteredOrganization"),  10, 145, 400)


GUICtrlCreateLabel ("Номер кабинета, где установлен данный компьютер:",  10, 190, 400)
$combo_kab = GUICtrlCreateInput (RegRead ("HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Microsoft\Windows NT\CurrentVersion", "Registeredtag"), 10,210,300,20)
GUICtrlCreateLabel ("текущая информация:   "&@LF&RegRead ("HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Microsoft\Windows NT\CurrentVersion", "Registeredtag"),  10, 210, 300,20)

$Button_1 = GUICtrlCreateButton ( "ОК", 60, 280, 70)
$Button_2 = GUICtrlCreateButton ( "Выход", 190, 280, 70)

GUISetState ()



While 1
	$msg = GUIGetMsg()
	Select
		Case $msg = $Button_1
		$fio = GUICtrlRead ($combo_fio, 1)
		$podr = GUICtrlRead ($combo_podr, 1)
		$kab = GUICtrlRead ($combo_kab, 1)
		$check = MsgBox (54, "OCS Inventory 2017", "Будет записана следующая информация:"&@LF&@LF&"ФИО сотрудника:"&@LF&$fio&@LF&@LF&"Подразделение:"&@LF&$podr&@LF&@LF&"Номер кабинета:"&@LF&$kab)
			If $check = 2 Then
				MsgBox (16, "OCS Inventory 2017", "Установка прервана.")
				Exit
			ElseIf $check = 11 Then
				RegWrite ("HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Microsoft\Windows NT\CurrentVersion", "RegisteredOwner", "REG_SZ", $fio)
				RegWrite ("HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Microsoft\Windows NT\CurrentVersion", "RegisteredOrganization", "REG_SZ", $podr)
				RegWrite ("HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Microsoft\Windows NT\CurrentVersion", "Registeredtag", "REG_SZ", $kab)
				
				IniWrite ("C:\programData\OCS Inventory NG\Agent\admininfo.conf", "OCS Inventory Agent", "TAG", $kab)
				GUIDelete()

			ExitLoop
			EndIf
		Case $msg = $GUI_EVENT_CLOSE
		MsgBox (16, "OCS Inventory 2017", "Установка прервана.")
		Exit
	    Case $msg = $Button_2
		MsgBox (16, "OCS Inventory 2017", "Установка прервана.")
		Exit
    EndSelect
Wend

;
DirCreate ($temp_path)    (Эти файлы необходимо переместить с папку созданную в папке Temp запущенным инсталяторов агента OCS)

FileInstall ("D:\disk_D\Autoit\source\OCS Agent 4.0.5.4\OcsAgentSetup.exe", $temp_path&"\OcsAgentSetup.exe", 1)
FileInstall ("D:\disk_D\Autoit\source\OCS Agent 4.0.5.4\cacert.pem", $temp_path&"\cacert.pem", 1)
FileInstall ("D:\disk_D\Autoit\source\OCS Agent 4.0.5.4\service.ini", $temp_path&"\service.ini", 1)
FileInstall ("D:\disk_D\Autoit\source\OCS Agent 4.0.5.4\proxy.ini", $temp_path&"\proxy.ini", 1)
FileInstall ("D:\disk_D\Autoit\source\OCS Agent 4.0.5.4\server.ini", $temp_path&"\server.ini", 1)
FileInstall ("D:\disk_D\Autoit\source\OCS Agent 4.0.5.4\agent.ini", $temp_path&"\agent.ini", 1)
FileInstall ("D:\disk_D\Autoit\source\OCS Agent 4.0.5.4\local.ini", $temp_path&"\local.ini", 1)
FileInstall ("D:\disk_D\Autoit\source\OCS Agent 4.0.5.4\ioSpecial.ini", $temp_path&"\ioSpecial.ini", 1)
FileInstall ("D:\disk_D\Autoit\source\OCS Agent 4.0.5.4\advsplash.dll", $temp_path&"\advsplash.dll", 1)
FileInstall ("D:\disk_D\Autoit\source\OCS Agent 4.0.5.4\InstallOptions.dll", $temp_path&"\InstallOptions.dll", 1)
FileInstall ("D:\disk_D\Autoit\source\OCS Agent 4.0.5.4\KillProcDLL.dll", $temp_path&"\KillProcDLL.dll", 1)
FileInstall ("D:\disk_D\Autoit\source\OCS Agent 4.0.5.4\nsExec.dll", $temp_path&"\nsExec.dll", 1)
FileInstall ("D:\disk_D\Autoit\source\OCS Agent 4.0.5.4\services.dll", $temp_path&"\services.dll", 1)
FileInstall ("D:\disk_D\Autoit\source\OCS Agent 4.0.5.4\SetACL.exe", $temp_path&"\SetACL.exe", 1)
FileInstall ("D:\disk_D\Autoit\source\OCS Agent 4.0.5.4\System.dll", $temp_path&"\System.dll", 1)
FileInstall ("D:\disk_D\Autoit\source\OCS Agent 4.0.5.4\UserInfo.dll", $temp_path&"\UserInfo.dll", 1)
;

; установка OCS-Агента, копирование SSL-сертификата сервера
SplashTextOn ("Установка "&$app_name, @LF&"Происходит установка "&$app_name&@LF&"Пожалуйста, подождите..."&@LF&@LF&"- установка Агента...", 500, 120)
RunWait ($temp_path&"\OcsAgentSetup.exe /s  /NOSPLASH /debug /now /server:ocs/ocsinventory")

FileMove ($temp_path&"\cacert.pem", $pfiles&"\OCS Inventory Agent\cacert.pem", 1)
RunWait ("net stop ""ocs inventory service""")

FileCopy ($temp_path&"\server.ini", $pfiles&"\OCS Inventory Agent\server.ini", 1)
RunWait ("net start ""ocs inventory service""")

;добавил строку ниже
FileCopy ($temp_path&"\service.ini", $pfiles&"\OCS Inventory Agent\service.ini", 1)
RunWait ("net start ""ocs inventory service""")
;
FileCopy ($temp_path&"\proxy.ini", $pfiles&"\OCS Inventory Agent\proxy.ini", 0)
RunWait ("net start ""ocs inventory service""")
;
FileCopy ($temp_path&"\agent.ini", $pfiles&"\OCS Inventory Agent\agent.ini", 1)
RunWait ("net start ""ocs inventory service""")
;
FileCopy ($temp_path&"\local.ini", $pfiles&"\OCS Inventory Agent\local.ini", 1)
RunWait ("net start ""ocs inventory service""")
;
FileCopy ($temp_path&"\ioSpecial.ini", $pfiles&"\OCS Inventory Agent\ioSpecial.ini", 1)
RunWait ("net start ""ocs inventory service""")
;
; копирование установочных файлов во временную папку
SplashTextOn ("Установка "&$app_name, @LF&"Происходит установка "&$app_name&@LF&"Пожалуйста, подождите..."&@LF&@LF&"- копирование файлов...", 500, 140)

;

;удаление временной папки
DirRemove ($temp_path, 1)
SplashOff ()
MsgBox (64, "Установка "&$app_name, @LF&"Установка "&$app_name&" успешно завершена!")
 
Автор
G

gdu

Новичок
Сообщения
20
Репутация
0
Alofa сказал(а):
gdu сказал(а):
...вот часть скрипта
А где? ;) *click*

Все на месте.


Добавлено:
Сообщение автоматически объединено:

gdu сказал(а):
Добрый день!!! подскажите как скопировать нужные конфиги в папку которую создает запускаемая программа по адресу:C:\Пользователи\Имя учетной записи\AppData\Local\Temp? имя папки каждый раз изменяется (*.tmp)!!
Пытаюсь автоматизировать установку OCS агента, проблема заключается в том, что при запуске агента он создает папку с разными именами в userprofile/temp, пока удалось выполнить копирование в папку temp!!!! но как скопировать во вновь созданную папку с рандомным именем не пойму???? прошу помощи..
Код:
#RequireAdmin
#include <GUIConstants.au3>
Opt("TrayIconDebug", 1)
Opt("WinWaitDelay", 0)
$pfiles = EnvGet("programfiles")
$app_name = ("OCS Inventory Agent 2017")
$temp_path = (@TempDir)
$podrazdelenie = "ГГ Фи упр|КУГСИН|ГГУ и тд..
DirCreate ($pfiles&"\OCS Inventory Agent\")
FileInstall ("D:\disk_D\Autoit\source\OCS Agent 4.0.5.4\admininfo.conf", $pfiles&"\OCS Inventory Agent\admininfo.conf")

GUICreate("Проверка принадлежности компьютера", 320, 330)

GUICtrlCreateLabel ("Фамилия, Имя, Отчество пользователя:",  10, 10, 400)
$combo_fio = GUICtrlCreateInput (RegRead ("HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Microsoft\Windows NT\CurrentVersion", "RegisteredOwner"), 10,30,300,20)
GUICtrlCreateLabel ("текущая информация:   "&@LF&RegRead ("HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Microsoft\Windows NT\CurrentVersion", "RegisteredOwner"),  10, 55, 400)

GuiCtrlCreateGraphic(10, 90, 50, 50, 0)
GUICtrlSetGraphic(-1,$GUI_GR_COLOR, 0x646464)
GUICtrlSetGraphic(-1,$GUI_GR_LINE, 300, 0)
GUICtrlSetGraphic(-1,$GUI_GR_MOVE, 0, 90)
GUICtrlSetGraphic(-1,$GUI_GR_LINE, 300, 90)

GUICtrlCreateLabel ("Подразделение, выберите из списка:",  10, 100, 400)
$combo_podr = GUICtrlCreateCombo (RegRead ("HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Microsoft\Windows NT\CurrentVersion", "RegisteredOrganization"), 10,120,300)
GUICtrlSetData(-1, $podrazdelenie, "")
GUICtrlCreateLabel ("текущая информация:   "&@LF&RegRead ("HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Microsoft\Windows NT\CurrentVersion", "RegisteredOrganization"),  10, 145, 400)


GUICtrlCreateLabel ("Номер кабинета, где установлен данный компьютер:",  10, 190, 400)
$combo_kab = GUICtrlCreateInput (RegRead ("HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Microsoft\Windows NT\CurrentVersion", "Registeredtag"), 10,210,300,20)
GUICtrlCreateLabel ("текущая информация:   "&@LF&RegRead ("HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Microsoft\Windows NT\CurrentVersion", "Registeredtag"),  10, 210, 300,20)

$Button_1 = GUICtrlCreateButton ( "ОК", 60, 280, 70)
$Button_2 = GUICtrlCreateButton ( "Выход", 190, 280, 70)

GUISetState ()



While 1
	$msg = GUIGetMsg()
	Select
		Case $msg = $Button_1
		$fio = GUICtrlRead ($combo_fio, 1)
		$podr = GUICtrlRead ($combo_podr, 1)
		$kab = GUICtrlRead ($combo_kab, 1)
		$check = MsgBox (54, "OCS Inventory 2017", "Будет записана следующая информация:"&@LF&@LF&"ФИО сотрудника:"&@LF&$fio&@LF&@LF&"Подразделение:"&@LF&$podr&@LF&@LF&"Номер кабинета:"&@LF&$kab)
			If $check = 2 Then
				MsgBox (16, "OCS Inventory 2017", "Установка прервана.")
				Exit
			ElseIf $check = 11 Then
				RegWrite ("HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Microsoft\Windows NT\CurrentVersion", "RegisteredOwner", "REG_SZ", $fio)
				RegWrite ("HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Microsoft\Windows NT\CurrentVersion", "RegisteredOrganization", "REG_SZ", $podr)
				RegWrite ("HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Microsoft\Windows NT\CurrentVersion", "Registeredtag", "REG_SZ", $kab)
				
				IniWrite ("C:\programData\OCS Inventory NG\Agent\admininfo.conf", "OCS Inventory Agent", "TAG", $kab)
				GUIDelete()

			ExitLoop
			EndIf
		Case $msg = $GUI_EVENT_CLOSE
		MsgBox (16, "OCS Inventory 2017", "Установка прервана.")
		Exit
	    Case $msg = $Button_2
		MsgBox (16, "OCS Inventory 2017", "Установка прервана.")
		Exit
    EndSelect
Wend

;
DirCreate ($temp_path)    (Эти файлы необходимо переместить с папку созданную в папке Temp запущенным инсталяторов агента OCS)

FileInstall ("D:\disk_D\Autoit\source\OCS Agent 4.0.5.4\OcsAgentSetup.exe", $temp_path&"\OcsAgentSetup.exe", 1)
FileInstall ("D:\disk_D\Autoit\source\OCS Agent 4.0.5.4\cacert.pem", $temp_path&"\cacert.pem", 1)
FileInstall ("D:\disk_D\Autoit\source\OCS Agent 4.0.5.4\service.ini", $temp_path&"\service.ini", 1)
FileInstall ("D:\disk_D\Autoit\source\OCS Agent 4.0.5.4\proxy.ini", $temp_path&"\proxy.ini", 1)
FileInstall ("D:\disk_D\Autoit\source\OCS Agent 4.0.5.4\server.ini", $temp_path&"\server.ini", 1)
FileInstall ("D:\disk_D\Autoit\source\OCS Agent 4.0.5.4\agent.ini", $temp_path&"\agent.ini", 1)
FileInstall ("D:\disk_D\Autoit\source\OCS Agent 4.0.5.4\local.ini", $temp_path&"\local.ini", 1)
FileInstall ("D:\disk_D\Autoit\source\OCS Agent 4.0.5.4\ioSpecial.ini", $temp_path&"\ioSpecial.ini", 1)
FileInstall ("D:\disk_D\Autoit\source\OCS Agent 4.0.5.4\advsplash.dll", $temp_path&"\advsplash.dll", 1)
FileInstall ("D:\disk_D\Autoit\source\OCS Agent 4.0.5.4\InstallOptions.dll", $temp_path&"\InstallOptions.dll", 1)
FileInstall ("D:\disk_D\Autoit\source\OCS Agent 4.0.5.4\KillProcDLL.dll", $temp_path&"\KillProcDLL.dll", 1)
FileInstall ("D:\disk_D\Autoit\source\OCS Agent 4.0.5.4\nsExec.dll", $temp_path&"\nsExec.dll", 1)
FileInstall ("D:\disk_D\Autoit\source\OCS Agent 4.0.5.4\services.dll", $temp_path&"\services.dll", 1)
FileInstall ("D:\disk_D\Autoit\source\OCS Agent 4.0.5.4\SetACL.exe", $temp_path&"\SetACL.exe", 1)
FileInstall ("D:\disk_D\Autoit\source\OCS Agent 4.0.5.4\System.dll", $temp_path&"\System.dll", 1)
FileInstall ("D:\disk_D\Autoit\source\OCS Agent 4.0.5.4\UserInfo.dll", $temp_path&"\UserInfo.dll", 1)
;

; установка OCS-Агента, копирование SSL-сертификата сервера
SplashTextOn ("Установка "&$app_name, @LF&"Происходит установка "&$app_name&@LF&"Пожалуйста, подождите..."&@LF&@LF&"- установка Агента...", 500, 120)
RunWait ($temp_path&"\OcsAgentSetup.exe /s  /NOSPLASH /debug /now /server:ocs/ocsinventory")

FileMove ($temp_path&"\cacert.pem", $pfiles&"\OCS Inventory Agent\cacert.pem", 1)
RunWait ("net stop ""ocs inventory service""")

FileCopy ($temp_path&"\server.ini", $pfiles&"\OCS Inventory Agent\server.ini", 1)
RunWait ("net start ""ocs inventory service""")

;добавил строку ниже
FileCopy ($temp_path&"\service.ini", $pfiles&"\OCS Inventory Agent\service.ini", 1)
RunWait ("net start ""ocs inventory service""")
;
FileCopy ($temp_path&"\proxy.ini", $pfiles&"\OCS Inventory Agent\proxy.ini", 0)
RunWait ("net start ""ocs inventory service""")
;
FileCopy ($temp_path&"\agent.ini", $pfiles&"\OCS Inventory Agent\agent.ini", 1)
RunWait ("net start ""ocs inventory service""")
;
FileCopy ($temp_path&"\local.ini", $pfiles&"\OCS Inventory Agent\local.ini", 1)
RunWait ("net start ""ocs inventory service""")
;
FileCopy ($temp_path&"\ioSpecial.ini", $pfiles&"\OCS Inventory Agent\ioSpecial.ini", 1)
RunWait ("net start ""ocs inventory service""")
;
; копирование установочных файлов во временную папку
SplashTextOn ("Установка "&$app_name, @LF&"Происходит установка "&$app_name&@LF&"Пожалуйста, подождите..."&@LF&@LF&"- копирование файлов...", 500, 140)

;

;удаление временной папки
DirRemove ($temp_path, 1)
SplashOff ()
MsgBox (64, "Установка "&$app_name, @LF&"Установка "&$app_name&" успешно завершена!")
 

Вложения

  • на форум.JPG
    на форум.JPG
    61.2 КБ · Просмотры: 19
Сообщения
137
Репутация
-2
Я на этом форуме пол года и каждый раз удивляюсь как одни участники форума читают темы других участников форума, успешно улавливают их гениальный полёт мысли, понимают проблему и выдают верное решение. Наверно, потому что у меня нет приписки "Autoit Гуру", я несколько минут потратил на то, чтобы вникнуть в строку
как скопировать нужные конфиги в папку которую создает запускаемая программа по адресу:C:\Пользователи\Имя учетной записи\AppData\Local\Temp? имя папки каждый раз изменяется (*.tmp)!!
и понять что же такое "конфиги" и в какую папку их нужно копировать и, если б не код, вообще ничего не понял бы. Потом я пытался сопоставить проблему автора с названием темы - никаких совпадений не нашёл, зато гугл рассказал что такое OCS Agent.
Пока знатоки Autoit обходят тему стороной, объясните мне, пожалуйста, какую именно функцию должен выполнять скрипт?Насколько я понял, сначала нужно включить файлы в скомпилированный скрипт и уже при его выполнении, скрипт копирует файлы в определённую директорию. Если всё верно - зачем их копировать в промежуточную папку Temp?Или это принципиальное условие?
Вот примеры из справки, которые я проверил и все они прекрасно работают:
Код:
; Добавляет файл "C:\test.bmp" в скомпилированный скрипт и извлекает в "D:\mydir\test.bmp", при запуске скомпилированного скрипта
$b = True
If $b = True Then FileInstall("C:\test.bmp", "D:\mydir\test.bmp")

Вот второй:
Код:
FileInstall("test.gif", @TempDir & '\test.gif') ; Если скрипт не скомпилирован, то файл будет скопирован в казанный каталог
FileInstall("test.gif", "*") ; файл находится в каталоге скрипта при компиляции, а также извлекается в каталог скомпилированного скрипта при запуске
- кстати, никаких подпапок в Temp у меня не появилось
А не пробовали:
Код:
FileInstall ("D:\disk_D\Autoit\source\OCS Agent 4.0.5.4\*.*", $temp_path&"\*.*", 1)
мне кажется уйдёт половина кода скрипта.
Вот, мне и хотелось бы запустить скрипт проверить, но там столько дополнений в реестр, столько всего убрать надо перед запуском, что я не стал этого делать. Если вы хотите получить ответ от гуру - это одно. Если же хотите, чтоб вашим кодом занялись фанаты или такие же новички как я, например - разбейте код на блоки, всё что работает - удалите, что не работает - опишите,определите название для темы и залейте на форум
 
Автор
G

gdu

Новичок
Сообщения
20
Репутация
0
Есть инсталятор OCS Agent.exe этот установщик необходимо автоматизировать, т.е при запуске OCS Agent.exe не вводить данные адреса сервера, пароля и тд... а подсунуть ini файлы с готовыми параметрами, загвостка возникает в том, что при запуске OCS Agent.exe он извлекает свои конфигурационные файлы во временную папку, куда по замыслу нужно подкинуть готовые конфиги со всеми нужными параметрами, проблема состоит в том,что при извлечении инсталятором конфигов он создает при каждом запуске папку с разными именами *.tmp. не вижу проблем копирования в статичную папку с определенным заранее именем. проблема в подмене конфигурационных файлов в папке темт.


Добавлено:
Сообщение автоматически объединено:

Код:
; Убрал лишние строки.

#RequireAdmin
#include <GUIConstants.au3>
Opt("TrayIconDebug", 1)
Opt("WinWaitDelay", 0)
$pfiles = EnvGet("programfiles")
$app_name = ("OCS Inventory Agent 2017")
$temp_path = (@TempDir)
DirCreate ($temp_path)

;FileInstall ("D:\disk_D\Autoit\source\OCS Agent 4.0.5.4\OcsAgentSetup.exe", $temp_path&"\OcsAgentSetup.exe", 1)
;FileInstall ("D:\disk_D\Autoit\source\OCS Agent 4.0.5.4\cacert.pem", $temp_path&"\cacert.pem", 1)
;FileInstall ("D:\disk_D\Autoit\source\OCS Agent 4.0.5.4\server.ini", $temp_path&"\service.ini", 1)
FileInstall ("D:\disk_D\Autoit\source\OCS Agent 4.0.5.4\OcsAgentSetup.exe", $temp_path&"\OcsAgentSetup.exe", 1)
FileInstall ("D:\disk_D\Autoit\source\OCS Agent 4.0.5.4\cacert.pem", $temp_path&"\cacert.pem", 1)
FileInstall ("D:\disk_D\Autoit\source\OCS Agent 4.0.5.4\service.ini", $temp_path&"\service.ini", 1)
FileInstall ("D:\disk_D\Autoit\source\OCS Agent 4.0.5.4\proxy.ini", $temp_path&"\proxy.ini", 1)
FileInstall ("D:\disk_D\Autoit\source\OCS Agent 4.0.5.4\server.ini", $temp_path&"\server.ini", 1)
FileInstall ("D:\disk_D\Autoit\source\OCS Agent 4.0.5.4\agent.ini", $temp_path&"\agent.ini", 1)
FileInstall ("D:\disk_D\Autoit\source\OCS Agent 4.0.5.4\local.ini", $temp_path&"\local.ini", 1)
FileInstall ("D:\disk_D\Autoit\source\OCS Agent 4.0.5.4\ioSpecial.ini", $temp_path&"\ioSpecial.ini", 1)
FileInstall ("D:\disk_D\Autoit\source\OCS Agent 4.0.5.4\advsplash.dll", $temp_path&"\advsplash.dll", 1)
FileInstall ("D:\disk_D\Autoit\source\OCS Agent 4.0.5.4\InstallOptions.dll", $temp_path&"\InstallOptions.dll", 1)
FileInstall ("D:\disk_D\Autoit\source\OCS Agent 4.0.5.4\KillProcDLL.dll", $temp_path&"\KillProcDLL.dll", 1)
FileInstall ("D:\disk_D\Autoit\source\OCS Agent 4.0.5.4\nsExec.dll", $temp_path&"\nsExec.dll", 1)
FileInstall ("D:\disk_D\Autoit\source\OCS Agent 4.0.5.4\services.dll", $temp_path&"\services.dll", 1)
FileInstall ("D:\disk_D\Autoit\source\OCS Agent 4.0.5.4\SetACL.exe", $temp_path&"\SetACL.exe", 1)
FileInstall ("D:\disk_D\Autoit\source\OCS Agent 4.0.5.4\System.dll", $temp_path&"\System.dll", 1)
FileInstall ("D:\disk_D\Autoit\source\OCS Agent 4.0.5.4\UserInfo.dll", $temp_path&"\UserInfo.dll", 1)
;

; установка OCS-Агента, копирование SSL-сертификата сервера (надо для деплоя пакетов)
SplashTextOn ("Установка "&$app_name, @LF&"Происходит установка "&$app_name&@LF&"Пожалуйста, подождите..."&@LF&@LF&"- установка Агента...", 500, 120)
RunWait ($temp_path&"\OcsAgentSetup.exe /NOSPLASH /debug /now /server:ocs/ocsinventory")

FileMove ($temp_path&"\cacert.pem", $pfiles&"\OCS Inventory Agent\cacert.pem", 1)
RunWait ("net stop ""ocs inventory service""")

FileCopy ($temp_path&"\server.ini", $pfiles&"\OCS Inventory Agent\server.ini", 1)
RunWait ("net start ""ocs inventory service""")

;добавил строку ниже
FileCopy ($temp_path&"\service.ini", $pfiles&"\OCS Inventory Agent\service.ini", 1)
RunWait ("net start ""ocs inventory service""")
;
FileCopy ($temp_path&"\proxy.ini", $pfiles&"\OCS Inventory Agent\proxy.ini", 0)
RunWait ("net start ""ocs inventory service""")
;
FileCopy ($temp_path&"\agent.ini", $pfiles&"\OCS Inventory Agent\agent.ini", 1)
RunWait ("net start ""ocs inventory service""")
;
FileCopy ($temp_path&"\local.ini", $pfiles&"\OCS Inventory Agent\local.ini", 1)
RunWait ("net start ""ocs inventory service""")
;
FileCopy ($temp_path&"\ioSpecial.ini", $pfiles&"\OCS Inventory Agent\ioSpecial.ini", 1)
RunWait ("net start ""ocs inventory service""")
;
; копирование установочных файлов во временную папку
SplashTextOn ("Установка "&$app_name, @LF&"Происходит установка "&$app_name&@LF&"Пожалуйста, подождите..."&@LF&@LF&"- копирование файлов...", 500, 140)

;

;удаление временной папки
DirRemove ($temp_path, 1)
SplashOff ()
MsgBox (64, "Установка "&$app_name, @LF&"Установка "&$app_name&" успешно завершена!")
 

ra4o

AutoIT Гуру
Сообщения
1,165
Репутация
246
Если имя папки не известно, но известно содержимое этой папки, тогда её можно найти, перебирая содержимое всех папок в директории Темп, например, ищем папку в которой содержится файл "agent.ini"
Код:
#include <File.au3>
#include <Array.au3>

$IniFile = 'agent.ini'

$DirList = _FileListToArray(@TempDir, Default, 2)
If Not @error Then
	For $i = 1 To $DirList[0]
		$FileList = _FileListToArray(@TempDir & '\' & $DirList[$i], '*.ini', 1)
		If _ArraySearch($FileList, $IniFile) >= 0 Then MsgBox(48, 'Папка', $IniFile & ' найдено в папке' & @CR & $DirList[$i])
	Next
EndIf
если не достаточно одного файла для определения папки, то и остальные можно дописать в условие поиска.
Код:
If _ArraySearch($FileList, 'agent.ini') >= 0 _
		And _ArraySearch($FileList, 'ioSpecial.ini') >= 0 _
		And _ArraySearch($FileList, 'local.ini') >= 0 _
		And _ArraySearch($FileList, 'server.ini') >= 0 _
		Then MsgBox(48, 'Папка', $IniFile & ' найдено в папке' & @CR & $DirList[$i])
 
A

Alofa

Гость
gdu сказал(а):
... создает папку с разными именами в userprofile/temp...

Вот пример определения temp-папки для OCSNG Windows Agent 2.3.0.0.
Код:
#RequireAdmin
;~ #include <Array.au3>
#include <WinAPIProc.au3>
#include <WinAPISys.au3>

Local $aData, $iPID, $sDir, $aMem
Local $sProcess = 'OCS-NG-Windows-Agent-Setup.exe'
Local $sMyProgram = @ScriptDir & '\OCSNG-Windows-Agent-2.3.0.0\' & $sProcess
Local $sTempDir = StringRegExpReplace(@TempDir, '([^\wЁ-Яа-ё\s])', '\\$1') ; Экранируем возможные метасимволы в адресе

If (_WinAPI_GetVersion() < '6.0') And (@AutoItX64) Then Exit MsgBox(262144 + 16, 'Error!', _
		'Этот пример в 64-битной системе будет работать только в Windows Vista или более поздней версии.')
If Not ProcessExists($sProcess) Then $iPID = Run(FileGetShortName($sMyProgram)) ; Запускаем инсталятор (если такй процесс еще не запущен)
$iPID = ProcessWait($sProcess, 10)
If Not $iPID Then Exit

For $i = 0 To 10 ; Делаем 11 возможных попыток поиска модулей процесса в папке @TempDir
	$aData = _WinAPI_EnumProcessModules($iPID, $LIST_MODULES_32BIT) ; https://www.autoitscript.com/autoit3/docs/libfunctions/_WinAPI_EnumProcessModules.htm
;~ _ArrayDisplay($aData)
	If Not @error Then
		For $j = 1 To $aData[0][0]
			$sDir = StringRegExpReplace($aData[$j][1], '(' & $sTempDir & '\\[^\\]+).+', '\1')
			If @extended Then ExitLoop 2
			$sDir = ''
		Next
	EndIf
	Sleep(300)
Next

MsgBox(262144, 'Папка:', ($sDir ? $sDir : 'Oops :('))




Добавлено:
Сообщение автоматически объединено:

gdu, а что в вашем коде означает эта, не раз повторяющаяся, строка?
Код:
RunWait ("net start ""ocs inventory service""")
 
Автор
G

gdu

Новичок
Сообщения
20
Репутация
0
gdu, а что в вашем коде означает эта, не раз повторяющаяся, строка?
Код:
RunWait ("net start ""ocs inventory service""")

[/quote]

ожидание момента окончания работы программы, после чего продолжить выполнение скрипта,
далее удаление временной папки и появление информационного окна.
DirRemove ($temp_path, 1)
SplashOff ()
MsgBox (64, "Установка "&$app_name, @LF&"Установка "&$app_name&" успешно завершена!")
 
Верх