【问题标题】:Creating custom dialog using C# in MSI installer在 MSI 安装程序中使用 C# 创建自定义对话框
【发布时间】:2011-12-23 09:45:44
【问题描述】:

我们(我的项目团队)有一个用于 VS 2010 Windows 应用程序的现有 MSI 安装程序。我们正在使用一个许可证文件来验证 Windows 安装。我们正在使用标准的 VS 安装项目进行安装。

目前,我们在 MSI 安装中使用测试框来获取许可证文件路径,因此用户必须手动复制和粘贴许可证文件路径。我想通过添加一个“浏览文件”按钮来更改这一点,该按钮显示浏览文件对话框以选择许可证文件并在选择文件时自动填充文本框。

我使用 Orca 工具修改了 UI,以便在安装 UI 中的现有文本框旁边添加一个按钮。

我的问题是:是否可以编写一些 C# 托管代码来显示,比如打开文件对话框以选择许可证文件,然后填充文本框。 我知道这可以通过编写 C/C++ 代码来实现。 我看到很多人使用 WIX 工具集来创建设置文件。目前,我无法创建新的安装程序项目,因为它涉及学习 WIX,而我现在没有时间。

【问题讨论】:

    标签: c# visual-studio windows-installer


    【解决方案1】:

    我不相信这是可能的。
    开箱即用的 MSI 不支持托管代码,因此您将无法编写托管对话框。
    但是,您可以编写引导程序以将自定义图形界面附加到安装程序。不过,这很复杂。

    我知道你写了你不能在这个阶段转换到 WIX,但我可以向你保证,如果你熟悉 MSI 结构,学习它会很容易。
    然后,您可以使用 SharpSetup 为您的安装程序创建一个 C# GUI。

    【讨论】:

    • 感谢 SharpSetup 的推荐。不幸的是,从昨天开始,他们页面上的所有下载链接都已损坏。
    • 是的,他们的项目有一段时间没有活动了。相反,WixSharp 可以做同样的事情,甚至更多。
    【解决方案2】:

    这是可能的(请参阅可以将 .NET 代码包装在非托管 DLL 中的 DTF 之类的工具),但是对于调用 GetOpenFileNameMsiSetProperty 的自定义操作的复杂程度,我建议避免额外的依赖在 .NET 框架上。

    【讨论】:

      猜你喜欢
      • 2018-08-05
      • 1970-01-01
      • 2023-04-11
      • 1970-01-01
      • 1970-01-01
      • 2012-02-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多