有没有办法在SCCM 2012中重新安装应用程序?

在SCCM 2007中,有几个“右键单击工具”,在它们的帮助下,可以“重新安装”软件包。在SCCM 2012中,我仍然找不到方法,如何重新安装应用程序?

让我解释一下:
我从软件创建了一个安装软件包,然后将其作为“应用程序”分发。安装成功完成。一周后,一个用户致电,他在使用此应用程序时遇到了麻烦。我创建的程序包支持重新安装(通过删除软件然后再次安装它或具有修复功能)。但是,在SCCM中,我没有选择(都没有找到可以做到这一点的右键单击工具)来重新安装软件包。我必须将其删除,然后再次安装。

我以为可以为此编写一个程序,并创建自己的“右键单击工具”,但是找不到任何信息该怎么办?

所以我的问题是:
-是否有可以以某种方式重新安装应用程序的右键单击工具?
-是否有一些文档,可以从中获得有关此问题的一些信息?

我敢肯定,许多其他人也有同样的问题。还是我没有找到方法,因为没有方法?:(

提前致谢!

赛伯多尔

在我们公司中,我们也必须喜欢它并进行了一些基础研究,但到目前为止似乎还没有人做过(并不意味着这是不可能的)。我们还与两位Microsoft SCCM顾问进行了交谈,双方都表示目前没有办法。

问题是应用程序都与检测方法有关。这是唯一会触发设置的事情。因此,如果您有软件,并且不想将其作为软件包进行部署(这仍然可行,并且仍可以使用Roger Zanders客户中心之类的工具重新运行它们),那么您可以做的就是使用一种检测方法影响。就像文件或reg键一样,您可以远程删除它们。就像所有其他客户端操作一样,可以远程触发应用程序部署评估周期,因此这不是问题。

可悲的是,这只是一种解决方法,我非常想如果有人证明我错了,但是到目前为止,这是我们能想到的最好的选择。

编辑:所以您激励我更深入地进行研究,并且我也从Microsoft获得了一些非常好的幻灯片,并且我发现了一些可能的方法:

由于该应用程序始终都在进行检测,因此我的想法是伪造它。

据我所知,检测方法以某种疯狂的xml格式保存在WMIroot\ccm\CIModels中的Class中Local_Detect_Synclet因此,我编写了一个脚本,该脚本在那里将检测方法替换为检查文件的空检测方法。它没有属性,因此永远无法工作。之后,我使用CCM_AppDeliveryType相同名称空间中的类应用程序上调用force方法它需要一个AppdeliveryTypeID和当前版本,但两者都可以在中看到CCM_AppDeliveryTypeSynclet强制重新安装程序后,我将检测方法重置为旧的强制方法,并触发了第二个强制,它将什么都不做,只会告诉系统已正确检测到该应用。完成所有这些操作的Vbscript如下所示:

computername = "WS0000xxxx"

Set wmiCIModels = GetObject("winmgmts:\\" & computername & "\root\ccm\CIModels")
Set wmiAppDeliveryType = GetObject("winmgmts:\\" & computername & "\root\ccm\CIModels:CCM_AppDeliveryType")


deploymentTypeID = "ScopeId_79903130-730F-48B7-8165-6088B83359BE/DeploymentType_68a80836-208e-401b-a69f-ae4c184b9f85"

Set installedDelTypes = wmiCIModels.ExecQuery("select * from Local_Detect_Synclet where AppDeliveryTypeId = '" & deploymentTypeID & "'" )

For Each instDelType In installedDelTypes
    strOldDetectionMethod = instDelType.ExpressionXml
    instDelType.ExpressionXml = "<LocalDetectionMethod><Settings><File></File></Settings><Rule xmlns=""http://schemas.microsoft.com/SystemsCenterConfigurationManager/2009/06/14/Rules""><Expression><Operator>Equals</Operator><Operands><SettingReference AuthoringScopeId="""" DataType=""Version"" SettingLogicalName=""X"" Method=""Value""/><ConstantValue DataType=""Version""/></Operands></Expression></Rule></LocalDetectionMethod>"
    instDelType.Put_ 0

    wmiAppDeliveryType.EnforceApp deploymentTypeID, "4", "", "Install", "", "1"

    instDelType.ExpressionXml = strOldDetectionMethod
    instDelType.Put_ 0

    wmiAppDeliveryType.EnforceApp deploymentTypeID, "4", "", "Install", "", "1" 
Next

ExpressionXML太长了,但是我通过反复尝试删除了其中的所有内容,这似乎是可能的。

为简单起见,我对AppdeliveryTypeID和修订版进行了硬编码,但您可以使用以下查询获取其中的列表,包括漂亮的名称:

Set wmiCIModels = GetObject("winmgmts:\\" & computername & "\root\ccm\CIModels")

Set delTypes = wmiCIModels.ExecQuery("select * from CCM_AppDeliveryTypeSynclet" )

For Each delType In delTypes
    WScript.Echo "Deployment Name: " & delType.AppDeliveryTypeName & VbCrLf & "AppdeliveryTypeID: " & delType.AppDeliveryTypeId & VbCrLf & "Revision: " & delType.Revision & VbCrLf
Next

这也是我到目前为止发现的最大缺点。只能轻松获取AppDeliveries的名称。例如,这些不是应用程序将在软件中心中显示的名称。我研究了翻译这一问题,但是到目前为止,我发现的唯一方法是查询SCCM DB本身,查询非常复杂,当然需要一些SCCM管理员来执行它。

与所有WMI脚本一样,您可以通过指定计算机名称来远程执行它,或者如果使用'。',则可以在本地执行它,因此您可以使用SCCM控制台扩展系统并基于此构建自己的右键单击工具。

即使未安装的应用程序(与重新运行软件包一样),这也将起作用。如果您不想这样做,可以检查CCM_AppDeliveryType以仅查看已安装的应用程序。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

有没有办法自动在R中重新安装软件包及其依赖项?

来自分类Dev

有没有办法在centos中安装GCL?

来自分类Dev

有没有办法可以重新分发红宝石鞋应用程序?

来自分类Dev

有没有办法重新定义结构?

来自分类Dev

有没有办法重新渲染?

来自分类Dev

有没有办法重新启动坏块?

来自分类Dev

有没有办法重新渲染?

来自分类Dev

有没有办法安装Chocolatey的早期版本?

来自分类Dev

有没有办法安装临时包?

来自分类Dev

有没有办法在 Heroku 上安装 GraphicsMagick?

来自分类Dev

有没有办法在Ipad上打开已安装的应用程序?

来自分类Dev

有没有办法在Ipad上打开已安装的应用程序?

来自分类Dev

有没有办法安装Windows(通用)应用程序的旧版本?

来自分类Dev

有没有办法减少执行从 npm 安装的节点应用程序的命令

来自分类Dev

有没有办法自动对模型应用限制?

来自分类Dev

有没有办法实现程序终止协议?

来自分类Dev

有没有办法记录程序的特定行为?

来自分类常见问题

有没有办法在PHP中扩展特征?

来自分类Dev

有没有办法清除JavaScript中的对象?

来自分类Dev

有没有办法重置Angular中的$ touched?

来自分类Dev

有没有办法在leveldb中更改键?

来自分类Dev

有没有办法使ghc中的并置过载?

来自分类Dev

有没有办法刷新Inkscape中的扩展

来自分类Dev

有没有办法在POJO中访问SlingRepository?

来自分类Dev

有没有办法在Haskell中取消映射?

来自分类Dev

有没有办法在VBA中编辑公式

来自分类Dev

有没有办法限制Firebase中的注册

来自分类Dev

有没有办法在Spark中洗牌集合

来自分类Dev

有没有办法在MATLAB中增加“ realmax”?

Related 相关文章

热门标签

归档