【问题标题】:WIX how to open custom UIWIX如何打开自定义UI
【发布时间】:2011-05-31 07:45:37
【问题描述】:

我有自己的安装 UI(使用 SharpSetup)。问题是,当我双击 msi 文件时,UI 没有出现 => 当我卸载它时相同。要查看 UI,我必须双击我的 UI 项目 => gui.exe

我正在寻找的是:

当我双击 msi 文件时是否可以启动 UI? 如果可能的话=>我该怎么做?如果我卸载它(添加/删除程序),我还必须包含什么?

谢谢

【问题讨论】:

    标签: c# user-interface wix installation windows-installer


    【解决方案1】:

    您必须使用 EmbeddedUI 元素来指定您拥有自定义 UI 的文件。

    示例(自定义 UI 在 dll 中):

    <UI>
        <EmbeddedUI Id="EmbeddedUI.dll" SourceFile="..\EmbeddedUI\EmbeddedUI.dll"/>
    </UI>
    

    一旦你这样做了,你就必须为每一个动作提供对话框,因为默认的股票都不会再运行了。

    关于卸载,如果我没记错的话,自定义 UI 只会在修复过程中显示,因此您可以触发修复而不是卸载以显示 ui 并从那里卸载。卸载过程直接应使用默认 UI 卸载应用程序(卸载进度条)

    根据 MSDN:“自定义 UI DLL,在本例中为 embedui.dll,应导出用户定义的 InitializeEmbeddedUI、EmbeddedUIHandler 和 ShutdownEmbeddedUI 函数。

    您可以查看更多信息here

    【讨论】:

    • 感谢您的回复,我在 WIX 文件中添加了 -Tag 并创建了一个实现 IEmbeddedUI 的 gui.dll。 IEmbeddedUI 包括方法(Initialize、ProcessMessage、Shutdown)。我不太确定,但那些是 th dll 所需的方法吗?问题是,这些方法都没有被调用
    • @TimTiTim 我已经编辑了答案,其中包含指向有关 EmbeddedUI 的 MSDN 示例的链接。这些是显示自定义 UI 所需的方法。我之前使用 C++ 和 MFC 完成了这项工作,并且工作正常。
    • 感谢更新,我也看到了。我正在使用 WPF,我也添加了这些方法。但它不起作用。是否有可能在 WIX 文件中定义 GUI dll 的入口点?
    • @TimTiTim 据我所知,不,您不能为 GUI 设置入口点。您只需实现这些功能,MSI 将在需要时调用它们。您可以使用像 ORCA 这样的工具来检查输出的 msi 文件,看看是否将正确的条目添加到 MsiEmbeddedUI 表中。
    • 我刚刚用 ORCA 检查了 msi 文件。 MsiEmbeddedUI 有一个条目,该条目包含预期的 dll 名称。但是仍然没有调用 InitializeEmbeddedUI 方法。也许我的 dll 中仍然没有正确的方法。我的方法如下所示: public bool InitializeEmbeddedUI(Session session, string resourcePath, InstallUIOptions internalUILevel) public MessageResult EmbeddedUIHandler(InstallMessage messageType, Record messageRecord) AND public void ShutdownEmbeddedUI() .我正在使用 Microsoft.Deployment.WindowsInstaller.dll
    【解决方案2】:

    SharpSetup 使用外部 UI,而不是嵌入式 UI。在典型情况下,msi 文件不包含任何 UI,因此您所观察到的内容是非常值得期待的。但是,您不应将独立的 .msi 文件部署到客户端,而应仅将包含所有必需文件(包括 .msi 文件和 gui.exe)的 Installer.exe 文件部署到客户端。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-12-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多