3

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

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

提前致谢。
保罗

4

2 回答 2

0

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

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

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

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

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

但也许你遇到了别的事情?再次,请更新您的问题以提供更多详细信息,以便我们为您提供更好的答案。

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

于 2014-05-18T00:32:07.257 回答
0

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

于 2010-10-29T18:20:19.250 回答