我正在完成一个C#应用程序的工作,并希望制作一个ClickOnce安装程序。
现在,我只想确保安装程序正常运行,并且我能够在没有Visual Studio的情况下运行exe。
所以我将我的项目设置为需要Windows Installer和.NET 3.5 SP1,并告诉它从供应商处下载(我稍后会包含这些组件,但不会用于此测试)。它只是一个不需要更新的基本实用程序,因此我禁用更新并告诉它使用CD / DVD安装方法,因为我只想在本地运行它。当我运行生成的setup.exe时,我收到安装提示,MyApp出现在“添加/删除程序”中。但是,一旦安装程序完成,它就会崩溃并显示以下消息:
[MyApp]遇到了问题 需要关闭。我们很抱歉 不便。
尝试运行.exe时会弹出相同的消息。安装期间不会创建“开始菜单”文件夹。我试图完全不再创建安装文件,因此它只生成了.application文件,但我仍然遇到了同样的错误。
我错过了一些明显的东西吗?我的应用程序在Release配置中编译并运行正常。 ClickOnce是不是应该使用常规的WinForms应用程序?
这个问题: WPF application crash after ClickOnce publish 听起来与我的问题相似,但我使用的是Windows Forms,因此没有得到XAML异常。它只是拒绝运行。
答案 0 :(得分:3)
一个好的起点是为AppDomain.UnhandledException事件添加处理程序。这是在代码内发生异常时引发的事件,并且不由try/catch
块处理(或者被重新抛出并且从不再次处理)。 .NET在这种情况下的行为是关闭应用程序 - 从它的角度来看,存在一个失控的错误。
在此事件处理程序中,您应该 - 至少 - 以确保在应用程序关闭之前写入错误的方式记录错误。这可能是一个非常粗鲁的MessageBox,用于显示错误内容,写入文本文件,或(最好)写入公共日志记录位置。