【问题标题】:Attempt to install earlier version of the installed application causes error尝试安装已安装应用程序的早期版本会导致错误
【发布时间】:2021-02-26 15:26:58
【问题描述】:

我创建了一个自定义 UI,并根据需要提供了标准对话框以避免 ICE20 错误。我已根据需要包含以下行:

如果我使用 WIX UI,这可以正常工作。但是现在我创建了自己的自定义 UI,我收到一条“意外错误”消息,错误代码为 2814,然后是 2869。有谁知道如何捕获尝试降级以生成带有正确消息的对话框?

【问题讨论】:

  • 这仅在维护操作期间? (当您对现有安装运行修改或修复时)。它不是 100% 清楚的。
  • 如果我运行安装程序来安装应用程序,但它已经安装了。
  • 在这种情况下,它将是您的维护模式对话框。这些是原始安装过程中未显示的对话框。在普通 WiX 包中,它们的名称类似于 MaintenanceWelcomeDlgMaintenanceTypeDlg。这些允许您修改功能状态。您可以通过使用 Orca 打开 MSI(工具 => 对话框预览)在 MSI 文件中查看它们。 ControlEvent 表将显示每个对话框的事件。 Next 按钮将启动一个动作或对话框或两者。如果您制作自己的对话框,则应将其基于现有对话框集以包含这些对话框(如果它们丢失)。

标签: wix windows-installer burn


【解决方案1】:

我不是 MSI 对话专家,但有几点我可以指出:

  • 您可以自定义 MSI 中内置的内部 GUI。
  • 您还可以为 Burn setup.exe 启动器制作自己的 GUI。
    • Burn GUI 可以比相当古老的 MSI GUI 更现代。
    • Burn 启动器可以在安装过程中隐藏内置的 MSI GUI。

我不确定您自定义了哪个 GUI?

错误 2814:错误代码 2814:“在对话框 [2] 上,控件 [3] 将不存在的控件 [4] 命名为下一个控件。” - 这似乎表明对话框上的控件指向一个不存在的控件,作为对话框的 TAB 顺序要转到的下一个控件。您需要指向一个存在的有效控件,并且它也应该是可见的。

自定义 MSI GUI:除非您需要一些非常具体和不寻常的东西,否则很少建议您制作自己的 MSI GUI。您可以使用现有的对话框集,只使用inject a new dialog(这可能是您所做的)。由于 MSI 对话框缺乏灵活性,如果您确实需要很大的灵活性,我建议您制作一个 Burn setup.exe GUI。我没怎么看这个。

WiX MSI 对话框示例:有一个示例,此处设置了修改后的 WiX MSI 对话框:https://github.com/glytzhkof/WiXCustomDialog


链接:我有一些关于 MSI 对话框和刻录 GUI 的链接。这是相当重叠的,请略读一下,看看你觉得什么是有意义的:


其他链接:

【讨论】:

  • 谢谢,我去看看样本。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-05-07
相关资源
最近更新 更多