Наш отдел ИТ-поддержки выпускает внутренний программный продукт, который я пишу с помощью групповой политики.
Можно ли принудительно установить обновление определенного программного обеспечения групповой политики, не предлагая пользователям выйти из системы и снова войти в систему на своих машинах?
Программное обеспечение невозможно установить / обновить, если пользователь не перезагрузит свой компьютер (объекты «Компьютеры» в GPO применяются до того, как пользователь сможет войти в систему). Может быть, Vista сможет это сделать, я не уверен, но с XP вам действительно нужно перезагружаться.
В командной оболочке вы можете запустить
gpupdate / force
который (как предполагает команда) принудительно обновит групповую политику. Его также можно настроить для обновления политики пользователя или компьютера с помощью переключателя.
/ target: компьютер
или
/ target: пользователь
Для Win 2003:
gpupdate /force /target:computer
Для Win 2000:
secedit /refreshpolicy machine_policy /enforce
Не уверен насчет XP, но вы можете попробовать оба
Это обман по сравнению с вашим вопросом, но вы можете использовать psexec для удаленной установки пакета на компьютеры, не прерывая активности пользователей. Psexec от Sysinternals (сейчас Microsoft) бесплатно
Возможно создание задачи расписания для пользователей, и эта задача запускает vbscript или что-то еще для обновления приложения. Сценарий должен проверить версию исполняемого файла предыдущей замены или запустить задачу обновления.
On Error Resume Next
DIM fso
Dim version
Set fso = CreateObject("Scripting.FileSystemObject")
Set WshShell = WScript.CreateObject("WScript.Shell")
x86=wshShell.ExpandEnvironmentStrings("%PROGRAMFILES(x86)%")&"\Cisco Systems\Cisco Jabber\CiscoJabber.exe"
x64=wshShell.ExpandEnvironmentStrings("%PROGRAMFILES%")&"\Cisco Systems\Cisco Jabber\CiscoJabber.exe"
If (fso.FileExists(x86) or fso.FileExists(x64)) Then
version= CreateObject("Scripting.FileSystemObject").GetFileVersion(x86)
if (strcomp(version,"",1)=0) then
version= CreateObject("Scripting.FileSystemObject").GetFileVersion(x64)
'Wscript.echo "x64"
end if
'Wscript.Echo version & " en x86"
if (strcomp(version,"11.5.1.29337",1)=0) then
'Wscript.Echo "Tiene la ultima version"
else
'Wscript.Echo "Updating"
WshShell.Run "msiexec.exe /I ""\\server\sharedfolder\CiscoJabberSetup.msi"" /quiet"
end if
Else
'WScript.Echo("Install as new app")
'WshShell.Run "msiexec.exe /I ""\\server\sharefolder\CiscoJabberSetup.msi"" /quiet"
End If
WScript.Quit()