微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

SCCM不会更新手动安装的软件

如何解决SCCM不会更新手动安装的软件

客户端计算机均为Windows 10 Pro(64位)。

如果要通过SCCM安装 MyCompanyApp.msi ,我们发现可以使用SCCM成功更新它。那里一切正常。

但是,如果我要通过双击msi或运行 msiexec 在本地运行 MyCompanyApp.msi ,则使用SCCM对其进行更新将失败。此外,SCCM会继续进行安装,就好像从未检测到以前的安装一样。当您检查控制面板时,您看到该产品列出两次;每个版本都有不同的版本号。

最重要的是,当我将手动安装/升级与SCCM手动安装/升级混合使用时,遇到了上述问题。下表应该总结一下。

enter image description here

解决方法

记录 :您是否有正确的日志文件?如果没有,请创建它: Enable installation logs for MSI installer without any command line arguments

msiexec.exe /i C:\Path\Your.msi /L*v C:\Your.log

起点 :我会寻找FindRelatedProducts并检查找到的部分中日志文件的内容。


调试 :重大升级调试失败: WIX does not uninstall older version


原因? 您最有可能拥有:

  1. 编写错误的升级表。
  2. 按机器和按用户安装的混合方式。

1。升级表

检查Upgrade table中的条目。它看起来像这样吗?有很多方法可以弄乱这张桌子。最常见的问题是指定的VERSION RANGE。如果设置不正确,则发现的版本可能超出标识为“可以删除”的范围:

Upgrade


2。安装上下文 MSI does not support "cross context" updates as explained here by Rob Mensching-WiX的创建者。我对他的后续评论有一种或多或少的疯狂方法,我曾经使用过这种方法在错误的上下文中删除一些散乱的安装:Crazy approach。而是:检查SCCM最近有哪些功能可以删除按用户安装的内容?

每用户安装次数 Here is a piece on why per-user installs - as implemented by MSI - are not recommended-在我看来(以及许多其他MSI用户)。

您可以在有问题的计算机上找到每个用户的安装,例如- note that there could very well be NO per user installations

Dim i,msi
Set installer = CreateObject("WindowsInstaller.Installer")
i = 1

For Each product In installer.ProductsEx("","",7)
   productcode = product.ProductCode
   name = product.InstallProperty("ProductName")
   version=product.InstallProperty("VersionString")
   allusers=product.Context
   
   ' Ignore all per-machine installations
   If(allusers <> 4) Then
      msi = msi + CStr(i) + ": " & productcode & "," & name & "," & version & "," & allusers & vbNewLine & vbNewLine
      i = i + 1
   End If

Next

MsgBox msi

删除if部分以获取所有已安装的MSI产品。 MsgBox 可以显示的字符数有限制。改为写入文件? (see mid-page here)或使用 WScript.Echo msi

链接:

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。