wix查找是否在特征选择树之后安装了先决条件(customizelg)

时间:2011-10-11 05:48:26

标签: wix

我正在使用wix创建一个安装程序。我的安装程序安装了2个功能。

  • 功能1取决于Prerequisite-1
  • 功能2取决于Prerequisite-2

当用户从功能选择树(customizelg)中选择功能1并按下Next时,作为安装的一部分,我想检查是否安装了功能1的先决条件。如果不是我想中止安装。

我可以使用RegistrySearch找到先决条件。

如何完成这项任务?

2 个答案:

答案 0 :(得分:3)

我认为您不需要自定义操作,并且在选择功能后不应移动先决条件检查。

相反,让它按照通常的方式进行。使用RegistrySearch检测是否已安装两个先决条件。因此,您将拥有两个属性 - PREREQ1INSTALLEDPREREQ2INSTALLED - 设置。使您的功能条件取决于这些属性,用户将无法选择已禁用的功能。

如果您只有这两个功能,因此至少有一个功能可用于安装,请创建启动条件以检查是否已安装至少一个先决条件:

<Condition>PREREQ1INSTALLED OR PREREQ2INSTALLED</Condition>

答案 1 :(得分:2)

要在选择功能后检查先决条件,您可以使用自定义操作。在此自定义操作中,您可以检查是否已选择该功能,并且根据该操作,您可以使用注册表搜索相应地获取先决条件和预成型操作的详细信息。

要获取自定义操作中的所有功能,您可以使用此代码示例:

 foreach (FeatureInfo fi in session.Features)
 {
     if (fi.RequestState == InstallState.Local || fi.RequestState == InstallState.Source || fi.RequestState == InstallState.Default)
     {           
         if (fi.Name == "Feature1")
         {
             //check for prerequisite for Feature1
         }
         if (fi.Name == "JobService")
         {
             //check for prerequisite for Feature2
         }
     }
}

如果未安装先决条件,则设置一些会话变量以在UI上显示消息