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

2023-12-04

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

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

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

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

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

提前致谢!


在我们公司,我们也必须喜欢这一点并做了一些基础研究,但到目前为止似乎没有人这样做过(并不意味着这是不可能的)。我们也和微软的两位SCCM顾问谈过这个问题,两人都表示目前没有办法。

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

遗憾的是,这只是一种解决方法,我非常希望有人证明我错了,但到目前为止,这是我们能想到的最好的方法。

编辑: 所以你激励我更深入地挖掘,我还从微软得到了一些非常好的幻灯片,我发现了一些可能的方法:

由于应用程序始终与检测有关,因此我的想法是伪造它。

据我所知,检测方法以某种疯狂的 xml 格式保存在 WMI 中root\ccm\CIModels在课堂里Local_Detect_Synclet。因此,我编写了一个脚本,将检测方法替换为检查文件的空检测方法。它没有任何属性,因此永远无法工作。之后,我使用该类在应用程序上调用强制方法CCM_AppDeliveryType在同一个命名空间中。它需要 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仅查看已安装的应用程序。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

有没有办法在 SCCM 2012 中重新安装应用程序? 的相关文章

  • 可滑动的侧面菜单不起作用

    我为响应式页面 针对移动页面 编写了一个自定义可滑动侧菜单 这是代码 jQuery code window load function data toggle click function var toggle el this data t

随机推荐

  • 理解链表实现的问题

    更新 非常感谢所有回复的人 这让我觉得在学习 Java 的过程中我并不孤单 请原谅 但我想我没有足够澄清我对链表和练习应用程序的不了解 首先 类定义如何包含其自身的对象 好吧 我知道这是递归 但对我来说仍然是一个非常奇怪和陌生的概念 第二
  • Safari 11 上的视频自动播放

    您好 我注意到视频不再在 Safari 11 上自动播放 下面是我的代码 它可以在 Chrome 上运行 因为它必须被静音 它仅显示海报图像 任何帮助
  • 使用 Java 中的 Selenium Webdriver 以不同用户身份运行 IE

    有谁知道如何使用 JAVA 使用 以不同用户身份运行 功能让 selenium 运行 IE 会话 我不知道我该如何设置这个 谷歌没有提出任何东西 所以也许我在某个地方寻找错误的东西 为了详细说明为什么我需要这样做 我正在测试的网站是一个内部
  • 在 MAMP 上安装 Phing 和 PHPUnit

    我在 OS X 10 6 上的 MAMP 下运行 phpunit 时遇到问题 我已经通过 PEAR 安装了 phpunit 它存在于 MAMP 目录中 但是当我在终端中运行 phpunit 时没有任何反应 我猜这是一个路径问题 但作为一个
  • PHPword在模板中插入表格

    PHPWord new PHPWord section PHPWord gt createSection table section gt addTable i 1 document PHPWord gt loadTemplate var
  • gcm推送通知:先成功,然后未在IOS中注册

    在 IOS 中使用谷歌云消息接收通知的所有段落之后 但我遇到了这个问题 我在 php 中发送带有服务器密钥和设备令牌的通知的帖子 第一次响应为 成功 但在设备上没有收到任何内容 第二次以及随后的时间 响应为 未注册 我重复所有段落 在钥匙串
  • constexpr 对于重载有用吗

    C 中有没有一种方法可以根据输入的运行时 编译时常量调用不同的重载 我的 MSVC 版本 12 无法使用 constexpr 执行此操作 阅读 C 文档 我不确定这是否是 constexpr 的工作方式 inline int Flip4 c
  • 从 Unity 中的另一个脚本访问对象的位置

    我正在制作一个同时包含球和玩家的游戏 到目前为止 我为球制作了一个球体 为玩家制作了一个正方形 模型将在稍后制作 我为玩家附加了一个移动脚本 以便它可以向各个方向移动 但我希望他能够在碰到球时捡起球 为此 我假设在球脚本中的碰撞函数中 我必
  • 如何使用 Sevenzipsharp 提取文件

    我将使用 Sevenzipsharp 将 ISO 文件中的文件提取到 USB 为此 我从 vs nuget 包管理器下载了 Sevenzipsharp 并编写了 实际上我不能 这段代码 我没有接受任何错误 但它不起作用 我哪里会犯错误 请写
  • 使用 javascript 搜索“\”

    我编写了以下代码来仅获取不带扩展名和路径的文件名 我正在浏览器中运行它
  • React-Router 在新选项卡中打开链接

    有没有办法得到反应路由器在新选项卡中打开链接 我尝试了这个 但没有成功 Test 可以通过添加类似的东西来弄乱它onClick foo 像我上面那样链接到链接 但会出现控制台错误 Thanks 从 React Router 版本 5 0 1
  • 用于检查号码以“078”开头且仅包含 10 位数字的正则表达式

    我需要验证 Asp Net 应用程序中的文本框 用户可以在其中输入手机号码 并且该号码应以 078 开头 并应包含 10 位数字 Sample 0781234567 这是我的代码 public static bool CheckPhoneN
  • 在 jQuery 移动应用程序中将参数从一个页面传递到另一个页面

    我正在使用 PhoneGap 构建 jQuery 移动应用程序 我必须使用 jQuery mobile 传递前一个页面的一些参数来打开一个新页面 为此 我尝试使用本地存储 如下所示 li click function console log
  • 使用 ServiceStack.Client 超时

    我已经通过 AJAX 调用使用服务堆栈一段时间了 没有出现任何问题 但最近创建了一个快速 winforms 应用程序 它利用服务堆栈客户端 特别是 JsonServiceClient 然而 我遇到了一个问题 即我一直在呼叫超时 但在前两次尝
  • 为什么Python会改变前面有0的整数的值?

    我实现了一个将整数转换为字符串表示形式的函数intToStr 代码如下 为了进行测试 我传递了一些值并观察到意外的输出 print intToStr 1223 prints 1223 as expected print intToStr 0
  • 将事件处理程序绑定到由 jQuery .html() 函数插入的元素上

    我渲染一些新内容 html ajax 调用我的网站后 getJSON scriptURL domainForm serialize function data checkedDomain html data html 现在 如何将事件处理程
  • 参数包是否有设定限制?

    元素的最大数量是否有上限参数包就像最大模板递归深度一样 我认为没有必要单独进行限制 元素的数量由实例化站点以及可以传递给模板的模板参数数量决定 有一个限制函数调用的参数数量 建议最小值 256 有一个限制模板参数的数量在模板声明中 建议最小
  • 在 PrimeFaces 菜单组件中混合静态和动态菜单条目

    我想在标记中保持菜单的一部分静态 并在 Java 中动态生成另一部分
  • SPARQL 参数化查询

    再会 我将 rdflib 用于 python 我有个问题 如何将变量放入 SPARQL 的查询中 当然不是 OSPF OSPF qres g query SELECT x z y WHERE course OSPF course termN
  • 有没有办法在 SCCM 2012 中重新安装应用程序?

    在 SCCM 2007 中 有几个 右键单击工具 在它们的帮助下可以 重新安装 软件包 在SCCM 2012中我仍然找不到方法 如何重新安装应用程序 让我解释 我从软件创建了一个安装包 然后将其作为 应用程序 分发 安装成功完成 一周后 一