如何找出导致通用'无法启动应用程序的原因。联系应用程序供应商。 ClickOnce错误?

问题描述 投票:6回答:2

我有一个使用ClickOnce发布的.NET应用程序。在大多数情况下,一切都适用于此过程,但每隔一段时间,用户将收到一个错误,抛出下面显示的消息而不是打开程序:

应用程序无法启动。联系应用程序供应商。

我在MSDN上找到了Troubleshooting Specific Errors in ClickOnce Deployments页面(在附加错误部分中):

Error message

应用程序无法启动。联系应用程序发布者。

无法启动应用程序。联系应用程序供应商以获取帮助

Description

这些是无法启动应用程序时出现的一般错误消息,并且找不到其他特定原因。通常这意味着应用程序以某种方式损坏,或者ClickOnce存储已损坏。

虽然它不是针对此问题显示的错误消息的完全匹配,但我认为它足够接近上述类别的错误。现在解决此问题的方法是简单地删除存储在...中的所有ClickOnce用户设置。

C:\Users\USERNAME\AppData\Local\Apps\2.0  

...所以问题是可以承受的,但我的问题是:

我该怎么做才能找出导致这些一般错误的原因,以便我可以阻止它们发生?

.net clickonce
2个回答
4
投票

2件事:

  1. 如果单击“详细信息...”按钮,您将获得一个日志文件,通常会显示错误(可能是服务器上的清单文件损坏等)。
  2. 如果您说删除本地设置帮助,则可能是user.config文件已损坏。我们在我们的应用程序中遇到了这个问题 - 我无法找到原因(我的猜测是我经常写Properties.Settings,但我不确定)。无论如何,这是我的解决方法: public static void Main() { if (ApplicationDeployment.IsNetworkDeployed == true) { try { ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.PerUserRoamingAndLocal); } catch (ConfigurationErrorsException ex) { string filename = ex.Filename; _logger.Error(ex, "Cannot open config file"); if (File.Exists(filename) == true) { _logger.Error("Config file {0} content:\n{1}", filename, File.ReadAllText(filename)); File.Delete(filename); _logger.Error("Config file deleted"); Properties.Settings.Default.Upgrade(); // Properties.Settings.Default.Reload(); // you could optionally restart the app instead } else { _logger.Error("Config file {0} does not exist", filename); } } } // code continues... } 基本上我尝试读取设置,如果有任何错误 - 记录损坏文件的内容,删除它并继续。

0
投票

如果您的项目是64位,并且您尝试将其复制到\ windows \ system32,则会出现此错误。将.exe移动到\ windows \ syswow64可以解决问题。

© www.soinside.com 2019 - 2024. All rights reserved.