Group-Policy

使用組策略升級程序

  • July 10, 2018

我正在嘗試通過 GPO 安裝已安裝在某些機器上的程序的新版本。目前,如果沒有安裝以前版本的程序,該策略是基於使用者的,並且可以正常工作。如果安裝了舊版本的程序,則該策略不執行任何操作,但仍認為成功。舊版本的程序是在每台機器上手動安裝的,所以我無法進行升級。

有沒有一種簡單的方法可以替換或刪除舊版本?我想過讓另一個策略刪除舊版本,但這似乎有點草率。

如果該應用程序列在添加/刪除程序中,您可以確定要執行先前的 msi 命令以進行全新安裝。通常該條目位於HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall和特定的 UninstallString 上,例如 MsiExec.exe /I{23170F69-40C1-2702-0920-000001000000}。

因此,您可以執行 GPO 以在之前執行 CMD 執行該命令 con Computer 啟動,然後推送新應用程序。

這是使用 VBS 的最後一個版本重新安裝我的 Jabber 的一個範例:

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\sharefolder\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()

引用自:https://serverfault.com/questions/769579