自动更新出现win32Exception

seener_wal 2012-06-14 04:12:12
我在做一个客户端自动更新程序,版本比对侯到更新程序
单独做的更新和下载出现win32Exception 异常
代码片段大家帮忙看下是什么问题
private void endPost(object o, EventArgs e)
{
byte[] resultstr = (byte[])o;

if (resultstr != null)
{
Msg msg = Serializer.Deserialize<Msg>(OptBase.byte2stream(resultstr));
int serviceVersion = msg.version; //服务器版本
int minorVersion = GetSerial.getMinorVersion(); //当前版本版本
if (serviceVersion > minorVersion)
{
try
{
MessageBox.Show("检测到有新版本发布了,是否需要更新!", "信息提示", MessageBoxButtons.YesNo, MessageBoxIcon.Asterisk, MessageBoxDefaultButton.Button3);
System.Diagnostics.Process.Start("update.exe", GlobParams.baseURL); //执行这出现异常
Application.Exit();
}
catch(Exception ex)
{
throw new Exception("升级失败了,原因是:" + ex.Message,ex);
}
}
else
{
//当前版本小于服务端版本
Status ld = new Status();
ld.ShowDialog();
ld.Dispose();
}
}
else
{
Status ld = new Status();
ld.ShowDialog();
ld.Dispose();
}
}

//update.exe代码片段
private string baseURL = "";
public Form1()
{
InitializeComponent();
baseURL = System.Environment.GetCommandLineArgs().GetValue(1).ToString();
}
...全文
210 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
seener_wal 2012-06-14
  • 打赏
  • 举报
回复
恩谢谢大家,问题找到了,长时间没重启动机子,执行update。exe出现很多进程导致出现这样异常
结贴了
宝_爸 2012-06-14
  • 打赏
  • 举报
回复
Console.WriteLine(ex.ToString());

会把InnerException的内容也打印出来。
seener_wal 2012-06-14
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 的回复:]
C# code


try
{
System.Diagnostics.Process.Start("update.exe", GlobParams.baseURL);
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
}


看看ex.Message是什么
[/Quote]
ex.Message 控制台这个异常消息是 Win32Exception 就这句
seener_wal 2012-06-14
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 的回复:]
C# code


try
{
System.Diagnostics.Process.Start("update.exe", GlobParams.baseURL);
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
}


看看ex.Message是什么
[/Quote]
这句我输出了 Win32Exception 就这句
seener_wal 2012-06-14
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 的回复:]
C# code


try
{
System.Diagnostics.Process.Start("update.exe", GlobParams.baseURL);
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
}


看看ex.Message是什么
[/Quote]
与那句就没什么关系,那只是捕获异常
执行这句 System.Diagnostics.Process.Start("update.exe", GlobParams.baseURL);
就没执行下去
ParanoidKing 2012-06-14
  • 打赏
  • 举报
回复

try
{
System.Diagnostics.Process.Start("update.exe", GlobParams.baseURL);
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
}

看看ex.Message是什么
seener_wal 2012-06-14
  • 打赏
  • 举报
回复
public Form1()
{
InitializeComponent();
baseURL = System.Environment.GetCommandLineArgs().GetValue(1).ToString();
}

GlobParams.baseURL 也就是这个update.exe里面的baseURL
seener_wal 2012-06-14
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 的回复:]
GlobParams.baseURL这个是什么?

我的做法和你类似,从未出问题,

C# code



double NewVer = Convert.ToDouble(new BLL.SYS_UpdateManager().GetNewVer());
double CurrVer = Convert.ToDouble(alle……
[/Quote]

GlobParams.baseURL 是服务端地址
是的我的更新和下载都做在update.exe里面了
allen0118 2012-06-14
  • 打赏
  • 举报
回复
GlobParams.baseURL这个是什么?

我的做法和你类似,从未出问题,


double NewVer = Convert.ToDouble(new BLL.SYS_UpdateManager().GetNewVer());
double CurrVer = Convert.ToDouble(allensingleton.currentlyVersion);

if (NewVer > CurrVer)
{

DialogResult dr = MessageBox.Show("发现新的版本是否要更新该软件?", "系统提示", MessageBoxButtons.OKCancel, MessageBoxIcon.Information);
if (dr == DialogResult.OK)
{
Process.Start(@"C:\Program Files\CMS\MesUpdate.exe");
this.Dispose();
this.Close();
}
}


真正更新文件的代码都是写在那个MesUpdate.exe的加载事件里面。
seener_wal 2012-06-14
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 的回复:]
是不是update.exe没有和主程序在同一个目录下?
[/Quote]
在的放一起的
ParanoidKing 2012-06-14
  • 打赏
  • 举报
回复
是不是update.exe没有和主程序在同一个目录下?
seener_wal 2012-06-14
  • 打赏
  • 举报
回复
高手,大侠帮忙看看撒,急,
C#方面接触不多
解决加分
seener_wal 2012-06-14
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 的回复:]
Exception 的 Message是什么?

有没有InnerException,它的MEssage是什么。
[/Quote]
弹出就是 未处理 Win32Exception
seener_wal 2012-06-14
  • 打赏
  • 举报
回复
update.exe 这个单独我测试过可以下载和更新的
宝_爸 2012-06-14
  • 打赏
  • 举报
回复
Exception 的 Message是什么?

有没有InnerException,它的MEssage是什么。

111,119

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • AIGC Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧