【问题标题】:Prerequisites validation and installation C#先决条件验证和安装 C#
【发布时间】:2010-10-29 14:07:26
【问题描述】:

我开发了一个自定义安装程序应用程序,因为 Visual Studio 安装项目的可定制性不足以满足我的需求。 我为 .NET 框架、SQL Server 等先决条件开发了一个验证器和一个安装程序,但我无法使用 Process.Start 从 .NET 框架启动一些可执行文件。

我想知道是否有用于先决条件的自定义验证器和安装程序,或者有一种不同于我自己开发的先决条件安装和验证方法:)。

提前致谢。
保罗

【问题讨论】:

  • 为什么无法启动安装程序?您没有选择 WiX 或 NSIS 等现有安装工具的原因是什么?

标签: c# windows-installer prerequisites


【解决方案1】:

我强烈建议你看看http://nsis.sourceforge.net/Main_Page。这是一个开源安装工具,我已将其用于您正在寻找的任务,并且拥有一个重要的社区。​​p>

【讨论】:

    【解决方案2】:

    为什么 Process.Start() 对您不起作用?在没有这些知识的情况下,我只能描述我在尝试启动 .NET 安装程序时遇到的情况。

    如果出现 UAC 对话框,请求管理员权限,则无法避免要求您的用户单击它。尝试启动 .NET 安装程序时,任何非升级安装过程(包括专业的第三方解决方案)都会遇到 UAC 对话框。这是因为 .NET 安装程序需要提升的管理员令牌才能运行。你无法解决这个问题。

    处理后台 UAC 对话框是我遇到的。它会无声地闪烁,并被那些可能认为安装程序已冻结并完全放弃它的用户所忽略。我刚刚花了 2 周的时间来解决这个问题。仅当用户在安装程序启动和 UAC 对话框出现之间单击安装程序窗口外时才会发生这种情况。这样做会使 Windows 认为用户想要处理其他事情,并保持他单击的窗口处于活动状态。 Windows 旨在抑制“焦点窃取”,因此没有任何官方方法可以为您的窗口(即您的进程启动的 UAC 对话框)“抢回”焦点。

    假设您的用户单击的窗口不属于您是安全的,因此官方的 Windows 方法(让具有焦点的窗口授予您的进程获取焦点的权限)不适用于这种情况。如果 msiexec.exe 能够保持其窗口处于顶级状态,那就太好了。

    所以在这一点上,如果您遇到我遇到的问题,那么我知道没有任何简单且 Microsoft 支持的解决方案。

    但也许您遇到了其他问题?同样,请更新您的问题并提供更多详细信息,以便我们为您提供更好的答案。

    更换安装IDE,正如另一位用户所建议的那样,无论目标IDE多么好,都是一大步。尽管我不建议使用 Visual Studio 来开发 MSI 文件,但只有在您继续遇到想要完成的问题时,我才会考虑迁移到另一个 IDE。然而,到目前为止,您只描述了一个需要解决的局部问题,并且可能无法通过使用其他工具来解决。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-01-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多