【问题标题】:FileOpenDialog from vbScript custom action appears behind main dialog来自 vbScript 自定义操作的 FileOpenDialog 出现在主对话框后面
【发布时间】:2013-12-16 06:13:24
【问题描述】:

我正在创建一个必须打开文件浏览器的安装程序。 wix 中没有文件浏览器,所以我构建了一个使用Shell.BrowseForFolder 方法的自定义 vbscript 操作。它工作正常,但文件对话框显示在主 wix 窗口后面。有谁知道我可以用来解决这个问题的 wix/vbscript 方法吗?

【问题讨论】:

    标签: vbscript wix windows-installer custom-action fileopendialog


    【解决方案1】:

    找到 MSI UI 的 HWND 并将其传递到 Shell.BrowseForFolder。我看到一些使用 FindWindow("MsiDialogCloseClass", vbNullString) 的示例解决方案。从自定义操作启动 UI 时要小心:您需要考虑静默安装/修复/卸载等,以确保在所有情况下都正确。

    您似乎正试图让用户选择一个目录。 MSI 对此有本机支持。我建议你使用它。示例见http://wix.codeplex.com/SourceControl/latest#src/ext/UIExtension/wixlib/BrowseDlg.wxs

    【讨论】:

    • 感谢您的快速回复!我试图让用户选择一个特定的文件,而不仅仅是目录,所以我认为我需要自定义操作。我对 wix 以及与 msi 相关的一切都很陌生,你能告诉我如何找到 HWND,以及如何将它传递给 vbScript 函数吗?
    • MSI 不会暴露 HWND,所以您需要自己找到它。在这里缺乏对 MSI 的了解不应该让你退缩。正如我所提到的,使用 FindWindow 按名称定位窗口。或者,您可以枚举系统上的窗口以找到符合您期望的条件(标题、进程 ID 等)的窗口。鉴于可用的表面积有限,您可能会发现 VBScript 确实限制了您在这里做很多事情的能力。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-03-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多