|
![]() |
#1 |
Злыдни
|
Формировали и пакет msi для развертывания (есть для этого программы), но не вижу я смысла в установке клиента на все машины. Равернули на одну станцию, сформировали рабочую директорию с набором файлов и копируйте.
Достаточно скрипта: Код: Dim DesktopPath, Shortcut Dim UserName, SDrive Dim WshShell, ObjEnv, Wscr Dim fso Dim VerCL, VerSRV Dim ProgPath, WorkPath, LnkPath, TagPath, CfgPath, DPath Dim oFolder, oFile, file Const ClientPath = "шара, где лежит клиент" Const DestPath = "%SYSTEMDRIVE%\Program Files\Navision\Axapta\Client\Bin" Const Cfg1 ="что-то -user=" --путь до конфигурациооного файла и параметр для имени, если нужно Set fso = createobject("Scripting.FileSystemObject") Set WshShell = CreateObject("WScript.Shell") Set ObjEnv = WshShell.Environment("Process") SDrive = ObjEnv("SYSTEMDRIVE") ProgPath = SDrive + "\Program Files\Navision\Axapta\Client\Bin" DPath = WshShell.ExpandEnvironmentStrings(DestPath) If (Not fso.FileExists(ProgPath & "\Ax32.exe")) Then If (Not fso.FolderExists(SDrive & "\Program Files\Navision")) Then fso.CreateFolder(SDrive & "\Program Files\Navision") End If If (Not fso.FolderExists(SDrive & "\Program Files\Navision\Axapta")) Then fso.CreateFolder(SDrive & "\Program Files\Navision\Axapta") End If If (Not fso.FolderExists(SDrive & "\Program Files\Navision\Axapta\Client")) Then fso.CreateFolder(SDrive & "\Program Files\Navision\Axapta\Client") End If If (Not fso.FolderExists(SDrive & "\Program Files\Navision\Axapta\Client\Bin")) Then fso.CreateFolder(SDrive & "\Program Files\Navision\Axapta\Client\Bin") End If fso.CopyFile (ClientPath & "\*.*"), DPath DesktopPath = WshShell.SpecialFolders("Desktop") TagPath = DPath & "\Ax32.exe" If (Not fso.FileExists(DesktopPath & "\Axapta.lnk")) Then Set Shortcut = WshShell.CreateShortcut(DesktopPath & "\Axapta.lnk") Shortcut.TargetPath = """" & TagPath & """" Shortcut.Arguments = Cfg1 Shortcut.WorkingDirectory = DPath Shortcut.IconLocation = (DPath & "\Ax32.exe,0") Shortcut.WindowStyle = 1 Shortcut.Save End If Else VerCL = fso.GetFileVersion(ProgPath & "\Ax32.exe") VerSRV = fso.GetFileVersion(ClientPath & "\Ax32.exe") If (VerSRV <> VerCL) Then set oFolder = fso.GetFolder(DPath) Set oFile = oFolder.Files For Each i In oFile file = oFolder.Path & "\" & i.Name fso.DeleteFile file, true Next fso.CopyFile (ClientPath & "\*.*"), DPath End If End If
__________________
люди...считают, что если техника не ломается, то ее не нужно ремонтировать. Инженеры считают, что если она не ломается, то нуждается в совершенствовании. |
|
![]() |
#2 |
Участник
|
Цитата:
Цитата:
Правда, для работы батника понадобится psexec, 4nt и админские права на удаленной машине. |
|
|
За это сообщение автора поблагодарили: Roman777 (2), Viknik (1). |
![]() |
#3 |
NavAx
|
Цитата:
Сообщение от gl00mie
![]() Полностью поддерживаю, с MSI больше мороки. Можно, конечно, воспользоваться установкой через групповую политику, но я лично написал банальный батник для удаленной (со своего компа) установки. При этом не просто копируются файлы клиента, но еще проверяется доступность указанной машины, наличие на ней предыдущей "установки" (по тому же пути) клиента и его полный снос, а также регистрация небходимых OCX и DLL и создание записей в реестре, чтобы нормально создавались сообщения в eventlog, и работал performance monitor. До кучи еще копируются необходимые шрифты, и в реестр импортируются данные для подставновки шрифтов, чтобы не было "крякозябр".
Правда, для работы батника понадобится psexec, 4nt и админские права на удаленной машине. Правильно ли я понимаю, что необходимо предварительно установить только на одну машину клиента с необходимым SP и KR, скопировать получившийся Bin в директорию Bin для батника? Можно немного поподробнее о запуске этого скрипта? |
|
![]() |
#4 |
Участник
|
Цитата:
Мне, правда, десятками за раз клиентов ставить не довелось, но батник легко подрихтовать, чтоб он лишнего не спрашивал и брал имя машины из ком.строки или из файла. Да, на счет performance monitor: для него на удаленной машине регистрируются счетчики COM-коннектора, но сам коннектор не регистрируется. Если это необходимо, то можно добавить его в эту строчку аналогично другим dll: Код: psexec \\%__host% cmd /c for %%a in ("%__client_dir%\bin\*.ocx" "%__client_dir%\bin\anameter.dll" "%__client_dir%\bin\smmaxol.dll") do regsvr32 /s %%a Последний раз редактировалось gl00mie; 18.07.2007 в 10:03. |
|