Wix - 自定义操作 Return 代码 - 处理

Wix - Custom Action Return Code - Handling

请仔细阅读,因为我会解释我正在尝试做什么。我有一个 wix 安装程序调用自定义操作来验证用户输入。如果验证成功我想调用下一个对话框,如果验证不成功则不移动

  1. 我有一个自定义操作
  2. 自定义操作验证用户名和密码
  3. 如果验证成功,自定义操作会将 属性 ([CONNECTED] = 1) 值设置为 1
  4. 如果验证失败,它会将 属性 值设置为空,然后弹出一个消息框,提示值不正确
  5. 自定义操作 (c#) 在我的对话框中的下一个按钮中执行
  6. 自定义动作执行正常,失败时弹出 这是问题所在 如果失败,则会弹出一个窗口,我的 wix 安装程序会跳转到结束对话框 (FINISH),只给我退出安装的选项。 或者它有时会给我下一个对话框,即使它失败了。 这是执行我的自定义操作的代码。 <Control Id="Next" Type="PushButton" X="236" Y="243" Width="56" Height="17" Default="yes" Text="[ButtonText_Next]"> <Publish Event="DoAction" Value="MyCustomAction">1</Publish> <Publish Event="NewDialog" Value="CustomizeDlg">CONNECTED= "1"</Publish> </Control>

我的问题是,如果出现错误意味着它没有 return a 1,为什么它不保留在当前对话框中。单击“确定”后它会转到“完成”对话框。

来自自定义操作的 return 值旨在供 Windows 安装人员使用,而非您。返回 ActionResult.Failure 告诉 Windows 您的 CA 严重失败,需要完成安装。如果您的 CA 工作正常并且对安装过程不是致命的,那么 return 结果是成功的。使用 属性 值表示用户结果。

根据我的经验,处理此类对话的更常用方法是使用从一个对话到下一个对话的正常顺序。唯一的区别是您启动对话框时禁用下一步按钮,如果您的用户验证成功则启用它。