我正在编写Wix C ++自定义操作来检测是否已安装SCCM 2012。我这样做是通过从注册表中读取产品GUID:SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Uninstall\
但是这不适用于安装SCCM 2012的系统,注册表中没有此类信息。
任何人都可以指出我正确的方向来实现这个目标吗?
我想在安装SCCM 2012时安装我的软件。
答案 0 :(得分:2)
您应该利用Condition元素。如果将它放在Product或Fragment下,它将作为启动条件。详细了解发布条件here。
您将创作的这种情况将检查一个属性。如果您正在寻找安装的软件,则应设置该属性,而不是另外设置(这是最简单的情况)。为了实现这一点,请创建RegistrySearch元素,该元素将在找到正确的注册表路径时定义属性。 RegistrySearch元素应该是Property元素的子元素。
正如你所看到的 - 这里没有自定义动作,这太棒了! :)
答案 1 :(得分:2)
您不应该依赖未记录的内部来检测软件 - 它们可以在没有警告的情况下进行更改。 (例如,产品代码GUID在升级期间会发生变化,因此除非SCCM团队表示他们不会更改它,否则SCCM 2012 RTM甚至2012更新可能会发生变化。)
相反,看看团队是否记录了检测它的方法。大多数团队记录了一个注册表值,用于检测安装了哪个版本的内容。如果他们不这样做,你仍然可能更好地关注注册表,因为那里的价值不太可能消失。