如何检测SCCM 2012是否已安装?

时间:2011-08-26 12:17:28

标签: winapi wix sccm

我正在编写Wix C ++自定义操作来检测是否已安装SCCM 2012。我这样做是通过从注册表中读取产品GUID:SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Uninstall\

但是这不适用于安装SCCM 2012的系统,注册表中没有此类信息。

任何人都可以指出我正确的方向来实现这个目标吗?

我想在安装SCCM 2012时安装我的软件。

2 个答案:

答案 0 :(得分:2)

您应该利用Condition元素。如果将它放在Product或Fragment下,它将作为启动条件。详细了解发布条件here

您将创作的这种情况将检查一个属性。如果您正在寻找安装的软件,则应设置该属性,而不是另外设置(这是最简单的情况)。为了实现这一点,请创建RegistrySearch元素,该元素将在找到正确的注册表路径时定义属性。 RegistrySearch元素应该是Property元素的子元素。

正如你所看到的 - 这里没有自定义动作,这太棒了! :)

答案 1 :(得分:2)

您不应该依赖未记录的内部来检测软件 - 它们可以在没有警告的情况下进行更改。 (例如,产品代码GUID在升级期间会发生变化,因此除非SCCM团队表示他们不会更改它,否则SCCM 2012 RTM甚至2012更新可能会发生变化。)

相反,看看团队是否记录了检测它的方法。大多数团队记录了一个注册表值,用于检测安装了哪个版本的内容。如果他们不这样做,你仍然可能更好地关注注册表,因为那里的价值不太可能消失。