zoukankan      html  css  js  c++  java
  • WPF开机启动时发生的异常

      纠结很久的一个问题,经过漫长的排查终于得到了解决.详细情景是这样的:

      用WPF做了2个程序A和B,其中A是主程序,B是升级程序.A首先运行,在窗口加载前会连接服务器判断是否有新版本,如果有新版本则先下载服务器端的B程序并覆盖掉本地的B,然后再运行B程序.这样的流程是为了实现升级程序的自更新,一直也运行正常,没什么好说的.

      问题出现在有些用户将A程序设置成开机启动后,第一次运行总会出现应用程序崩溃,崩溃是出现在B运行的时候.我在本地尝试后也是出现此情况.如果A程序不需要更新,那么是无需运行B的,但是B每次都会运行.

    幸好点击"调试程序"后,还能用VS进入调试,发现的问题是启动了B程序,而B程序报了异常"无法加载程序集XXXX",但是该程序集的确是在应用程序目录下.把该程序集扔到GAC就没问题了,此时可以断定应用程序路径一定出现了问题.

    排查代码,发现从服务器下载B程序是直接用的相对路径WebClient.DownloadFile("http://.....", "B.exe");而这里下载的文件跑到windows/system32文件夹下面去了.下载完毕后启动B程序也是用的Process.Start("B.exe"),也跑去启动了windows/system32文件夹下的文件.知道问题所在就简单了,这里加上System.Enviroment.CurrentDirectory或者Process.GetCurrentProcess().MainModule.FileName作为当前文件夹限定,就解决了.

    问题分析出来很简单,可是解决过程还是多坎坷的.问题只出现在刚开机的那一次启动,意味着我得频繁的注销登录用户(VS也是关了又开,开了又关);费了这么大功夫,就只解决这么一处小错误,就像一个武功高手,使完一套九阴真经,又来一套降龙十八掌,最后靠一通王八拳解决战斗,相当没劲.

  • 相关阅读:
    福大软工1816 · 第二次作业
    团队第一次作业
    软工实践 第三次作业 结对作业一
    软件工程-个人项目
    白茫茫一片真干净·福大软工1816 · 第一次作业
    Alpha 冲刺 (3/10)
    Alpha冲刺 (2/10)
    Alpha 冲刺(1)
    福大软工 · 第七次作业——需求分析报告
    福大软工 · 第八次作业(课堂实战)- 项目UML设计(团队)
  • 原文地址:https://www.cnblogs.com/scheshan/p/2570059.html
Copyright © 2011-2022 走看看