如何在 wix 屏幕/对话框之间插入 C# CA 屏幕/表单

Posted

技术标签:

【中文标题】如何在 wix 屏幕/对话框之间插入 C# CA 屏幕/表单【英文标题】:How to insert C# CA screen/form in between wix screens/dialogs 【发布时间】:2014-10-23 06:06:17 【问题描述】:

我的要求是在 2 个 Wix 对话框之间插入 C# CA 表单。

详情:

    我的第一个屏幕是 wix 对话框,单击“下一步”按钮后,Wix 对话框应关闭,C# CA 表单应打开。 在 C# CA 表单中单击“下一步”按钮时,该按钮应关闭并打开第二个 Wix 对话框。 在 C# CA 表单中单击“后退”按钮时,应关闭并打开第一个 Wix 对话框。

如何在 Wix 中实现。

提前致谢。

【问题讨论】:

什么是“C# CA 表单”? CA 用于“自定义操作”,据我所知 除了 Van S 提出的问题之外,如果没有大量不清楚的工作,这在技术上甚至是不可能的。如果您认为 Windows Installer 对话框只是一堆 .NET 表单,它可能看起来很简单,但事实并非如此。您在询问从 Windows Installer 对话框进程运行的 Next 按钮如何从其他位置找到并调用对话框,为其提供正确的焦点和 Z 顺序,然后您的对话框如何调用下一个 Windows Installer 对话框,为其提供焦点, Z 顺序等。正如 Van S. 所说,只需为其设计自己的 WiX 对话框或使用引导程序。 @PhilDW,是的,这似乎无法实现。似乎 Wix 不支持这一点。感谢您的回复。 它甚至不是 WiX,它是 Windows Installer 的架构。您可以使用替换 MSI UI 的 WiX 引导程序来执行此操作,但这需要您提供安装过程中显示的大部分表单。但关键是您可以将自己的 C# 表单插入到序列中,因为如果(例如)它们在类库中,您可以从引导程序中调用它们。例如bryanpjohnston.com/2012/09/28/… 【参考方案1】:

AFAIU,您将创建一个包含 UI 的自定义操作,这违反了自定义操作设计实践。例如,您将无法进行静默安装。有一个 CA 最佳实践列表here。

似乎向安装 UI 链添加自定义对话框是您真正需要的。有几篇文章如何做到这一点,例如,this one。

您需要的 UI 体验可能无法通过 Windows Installer 有限的 UI 功能获得。在这种情况下,您应该考虑如何重新设计它以利用内置选项,或者考虑实现自定义 UI,这绝非易事。通常,bootstrapper application 可以处理复杂的 UI 部分,并启动纯 MSI 包安装。

【讨论】:

是的,这似乎无法实现。似乎 Wix 不支持这一点。感谢您的回复。

以上是关于如何在 wix 屏幕/对话框之间插入 C# CA 屏幕/表单的主要内容,如果未能解决你的问题,请参考以下文章

在链 wix 中插入自定义对话框

UI序列中的Wix进度条

WiX - 如何在文件浏览对话框后刷新编辑控件

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

如何在 Wix 安装程序中隐藏标题栏?

Wix:如何使用 FileInUse 对话框