Installation 在WiX捆绑包中,如果我不';找不到注册表项?
我需要编写一个WiX包,除非系统上存在某个注册表项,否则它不会运行 在一个普通的安装项目中,我会使用一个启动条件,但我不是在编写安装项目,而是在编写顶级包。Installation 在WiX捆绑包中,如果我不';找不到注册表项?,installation,wix,burn,Installation,Wix,Burn,我需要编写一个WiX包,除非系统上存在某个注册表项,否则它不会运行 在一个普通的安装项目中,我会使用一个启动条件,但我不是在编写安装项目,而是在编写顶级包。元素有一个条件属性,但在刻录手册中它说: 束的状态。如果不满足条件,捆绑包将拒绝运行。在加载引导程序应用程序之前(检测之前)会检查条件,因此只能引用内置变量,例如指示操作系统版本的变量 因此,除了最基本的高级检查之外,我似乎不能使用Bundle元素的Condition属性,当然也不能用于我需要的内容 那么,我如何在bundle级别检查注册表项
元素有一个条件
属性,但在刻录手册中它说:
束的状态。如果不满足条件,捆绑包将拒绝运行。在加载引导程序应用程序之前(检测之前)会检查条件,因此只能引用内置变量,例如指示操作系统版本的变量
因此,除了最基本的高级检查之外,我似乎不能使用Bundle
元素的Condition
属性,当然也不能用于我需要的内容
那么,我如何在bundle级别检查注册表项,并在注册表项不存在时拒绝继续?您肯定可以在bundle中执行注册表搜索,然后根据这些注册表搜索的结果确定一个条件,因为我在几个bootstrapper项目中正是这样做的。不完全确定文档所指的是什么,但它要么是过时的,要么就是错误的 我举了一个简单的例子:
<util:RegistrySearch
Id="ServerInstalledCheck"
Root="HKLM"
Key="SOFTWARE\$(var.OEMRegistryRootKeyName)"
Value="ServerPath"
Result="value"
Variable="ServerInstalled"/>
<bal:Condition Message="#(loc.ServerNotInstalledError)" >ServerInstalled OR WixBundleInstalled</bal:Condition>
服务器已安装或WixBundleInstalled
如果您的捆绑包找不到ServerPath key@HKLM\SOFTWARE\$(var.OEMRegistryRooteKeyName),这将停止安装
我还添加了或WixBundleInstalled
,因为您可能会遇到这样的问题:客户以某种方式卸载了引导程序中包含的所有或部分软件包(包括注册表搜索所依赖的软件包),然后您将永远无法卸载引导程序,直到您手动重新添加注册表项