Wix - 自定义操作返回代码 - 处理

Posted

技术标签:

【中文标题】Wix - 自定义操作返回代码 - 处理【英文标题】:Wix - Custom Action Return Code - Handling 【发布时间】:2016-09-20 13:17:42 【问题描述】:

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

    我有一个自定义操作 自定义操作验证用户名和密码 如果验证成功,自定义操作会将属性 ([CONNECTED] = 1) 值设置为 1 如果验证失败,它将属性值设置为空,然后弹出一个消息框,提示值不正确 自定义操作 (c#) 在我的对话框中的下一个按钮中执行 自定义动作执行正常,失败时弹出 这是问题所在 如果失败,则会弹出一个窗口,我的 wix 安装程序会跳转到结束对话框(完成),只给我退出安装的选项。 或者它有时会给我下一个对话框,即使它失败了。 这是执行我的自定义操作的代码。 <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>

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

【问题讨论】:

我多次尝试编辑代码。这是我的代码。 ` 1CONNECTED="1" ` 只要它返回一个 actionresult.failure 它就会结束对话框而不是留在这个对话框中 有时您会因为对话顺序而失败,这不是自定义操作失败。尝试使用 msiexec /i your_package.msi /L*vx your_package.log 生成日志消息,以查找有关错误的更多详细信息。 【参考方案1】:

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

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

【讨论】:

我让我的下一个按钮根据属性结果继续。谢谢你的回答,我已经接受了。

以上是关于Wix - 自定义操作返回代码 - 处理的主要内容,如果未能解决你的问题,请参考以下文章

WiX v3.7 - vbScript 自定义操作 BrowseForFolder() 不返回单个文件名

参数未传递给 WiX 中的延迟自定义操作

Wix:修补时运行条件自定义操作(非完整安装)

WiX 自定义引导程序 - 单实例检查

如何在关闭对话框的 Wix 安装程序中停止自定义操作中的进度条

Wix:自定义操作能走多远?