先决条件验证和安装C#

先决条件验证和安装C#,c#,windows-installer,prerequisites,C#,Windows Installer,Prerequisites,我开发了一个自定义安装程序应用程序,因为VisualStudio安装项目的可定制性不足以满足我的需要。 我为.NET framework、SQL Server等先决条件开发了验证程序和安装程序,但无法使用Process.start启动某些可执行文件,如.NET framework中的可执行文件 我想知道是否有一个自定义的先决条件验证程序和安装程序,或者是否有一种不同于自己开发的先决条件安装和验证方法:) 提前谢谢。 保罗我强烈建议你去看看。这是一个开源安装工具,我使用它来完成您正在寻找的任务,

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

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

提前谢谢。

保罗

我强烈建议你去看看。这是一个开源安装工具,我使用它来完成您正在寻找的任务,它有一个重要的社区。

为什么Process.Start()不适合您?由于缺乏这些知识,我只能描述在尝试启动.NET安装程序时遇到的情况

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

处理后台UAC对话框是我遇到的问题。它会无声地闪烁,并被用户忽略,他们可能认为安装程序已经冻结并完全放弃了它。我刚刚花了两周时间研究这个问题。只有当用户在安装程序启动和UAC对话框出现之间的安装程序窗口外单击时,才会发生这种情况。这样做会让Windows认为用户想要做其他事情,并保持他单击的窗口处于活动状态。Windows被设计为禁止“焦点窃取”,因此没有任何官方方式“抓取”窗口的焦点(即,对于您启动的UAC对话框)

可以安全地假设用户单击的窗口不属于您,因此官方的Windows方法(让具有焦点的窗口向您的进程授予获取焦点的权限)在这种情况下不起作用。如果msiexec.exe能够保持其windows顶级功能,这将是一件好事

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

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


正如另一位用户所建议的那样,无论目标IDE有多好,更改安装IDE都是一大步。而且,尽管我不能推荐使用VisualStudio来开发MSI文件,但如果您继续完成所要完成的任务,我会考虑移到另一个IDE。但是,到目前为止,您只描述了一个要解决的本地化问题,而使用其他工具可能无法解决该问题。

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