我最近问if you can detect from the application if .NET is installed(因此应用程序不会因一般异常错误而崩溃)。
答案似乎是一个简单的“不”。如果没有安装.NET,我仍然希望能够优雅地退出,有没有办法做到这一点?
请记住,我不想更改可执行文件名,这意味着可以使用非托管可执行文件执行检查,并且dll可以使用真正的.NET程序,但不需要执行可执行文件。
编辑:我并不是说从安装程序失败,根本就没有安装程序,只有可执行文件。当然,这种情况发生的可能性极小,但我仍然希望能够检查它。
答案 0 :(得分:3)
您有两种不同的选择:
OR
当然,你可以将两者结合起来,为两全其美。
答案 1 :(得分:0)
您可以编写一个本机应用程序来检查.Net存在。然后,您需要使用LoadLibrary加载托管dll并调用其中的函数(GetProcAddress),它将启动.Net应用程序。
我猜你还需要弄乱.Net dll来使你的主函数可以从非托管代码中看到和调用。它被称为反PInvoke。
答案 2 :(得分:0)
你可以做的是在原生的Win32 C / C ++中编写你的.NET检测代码,它会进行检测,显示一些用户友好的错误信息或者你正常下降的意思,或者如果有合适的话,可以调用.NET dll框架可用。如果您不想拥有两个可执行文件,只需将dll的字节存储在本机可执行文件中并动态加载它。
请注意,这种方法使您无法使用Mono运行应用程序。
答案 3 :(得分:-2)
只是提供一个很好的消息框,它没有安装并提供下载。大多数安装人员都允许你这样做。