如果没有安装.NET,如何正常失败?

Jor*_*oba 9 .net

我最近问过你是否可以从应用程序中检测到是否安装了.NET(因此应用程序不会因一般异常错误而崩溃).

答案似乎是一个简单的"不".如果没有安装.NET,我仍然希望能够优雅地退出,有没有办法做到这一点?

请记住,我不想更改可执行文件名,这意味着可以使用非托管可执行文件执行检查,并且dll可以使用真正的.NET程序,但不需要执行可执行文件.

编辑:我并不是说从安装程序失败,根本没有安装程序,只有可执行文件.当然,这种情况发生的可能性极小,但我仍然希望能够检查它.

Adr*_*ore 3

您有两种不同的选择:

  • 编写一个小型本机代码加载器,用于检查运行时并在安装了运行时时执行您的软件。否则,它可能只会给用户一条错误消息,将他指向运行时的下载位置等。

或者

  • 确保您的安装程序安装了运行时。Joe Coehorn 在这篇文章中提到使用 MSI 可以很容易地做到这一点,并且您也应该能够使用其他安装程序(例如 InnoSetup)来做到这一点。当然,如果有人首先安装您的软件,然后重新安装 Windows,然后尝试运行您的应用程序而不重新安装它,它就会崩溃。

当然,您可以将两者结合起来,以获得两全其美的效果。