WIX退出对话框

时间:2018-01-26 09:11:45

标签: wix

我需要确定用户是否在安装阶段安装了SQL,如果未安装用户,则会在退出对话框中显示安装SQL的复选框。 我定义了一个名为IS_INSTALL_SQL的变量,其初始值为0.在自定义操作中,我将确定用户是否已根据注册表安装了SQL,如果未安装,则将IS_INSTALL_SQL设置为1。 根据日志,IS_INSTALL_SQL设置为1,但在退出对话框中,该值仍为0,并且不显示复选框。

以下是代码

[product.wxs]

<Property Id="IS_INSTALL_SQL" Value="0"/>

<Binary Id="myCustomActionsDLL" SourceFile= "$(var.CustomAction1.TargetDir)CustomAction1.CA.dll" />

<CustomAction Id="checkSQLInstallAndVersion" BinaryKey="myCustomActionsDLL" DllEntry="checkSQLInstallAndVersionAction"  Execute="immediate" Return="check"/>


<InstallExecuteSequence>
  <Custom Action="checkSQLInstallAndVersion" Before="InstallValidate">NOT Installed</Custom>
</InstallExecuteSequence>

[ExitDialog.wxs]

<Control Id="InstallSQLCheckBox" 
         Type="CheckBox" 
         X="135" 
         Y="170" 
         Width="220" 
         Height="14" 
         Hidden="yes" 
         Property="WIXUI_EXITDIALOGOPTIONALCHECKBOX_SQL" 
         CheckBoxValue="1" 
         Text="[WIXUI_EXITDIALOGINSTALLSQLTEXT]" >

    <Condition Action="show">
      <![CDATA[IS_INSTALL_SQL = "1" AND NOT Installed]]>
    </Condition>
</Control>

以下是日志摘要。

  

第86行:MyLog:SQL版本低于最低版本   要求并进入安装SQL步骤。

     

第87行:MyLog:#IS_INSTALL_SQL#:0

     

第88行:MyLog:设置属性值

     

第89行:MyLog:#IS_INSTALL_SQL#:1

     

第187行:属性(S):IS_INSTALL_SQL = 1

     

第317行:属性(C):IS_INSTALL_SQL = 0

1 个答案:

答案 0 :(得分:0)

您只在InstallExecuteSequence期间安排在UI阶段之后发生的CA.在两者中提前安排它,包括InstallUISequence并在AppSearch之前对其进行排序,然后定义CustomAction @Execute="firstSequence",例如它只运行一次并适当地设置值。虽然您将其定义为公共(包括下划线的所有大写),但请确保在客户端阶段结束且服务器阶段启动时,在您的情况下,其值将重置为其默认值0