C#怎样实现软件的升级 请问 用c#实现软件的更新 就是在启动软件时自动检测软件的版本号 然后完成升级操作 好实现吗?我是初学者,希望大家多多帮忙。[email protected] 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 可以。通过web services和XML实现自动升级http://topic.csdn.net/u/20090422/08/69f9713b-3982-4313-ab11-7fb6eefdcf93.html?seed=987436713http://topic.csdn.net/u/20081223/21/b0825274-2ce5-4dfc-8fdb-116660bc0e3c.html 我自己写了两种方式实现更新,1。FTP更新。2。局域网文件夹共享更新。第二种简单点,但是局域网嘛,局限性大一点。 VS2005以上的话,可以考虑用ClickOnce发布.它本身就提供的自动更新. 如果用ClickOnce 能否提供下源码呢? 你可以到网上搜索 AutoUpdate 我之前也是按照AutoUpdate思路进行制作的 挺好的 原理如下:1 发布新版本在指定路径上2在数据库建立存放版本的表3在登陆的时候判断,如果当前版本不等于数据库版本则升级4升级才用批处理文件覆盖本地,,如果需要源代码,发消息给我邮箱 [email protected] 导入 using System.Diagnostics;using System.Net;Load事件 string url = Process.GetCurrentProcess().MainModule.FileName;//取得程序路径 string vv = AssemblyName.GetAssemblyName(url).Version.ToString();//取得版本号 WebClient wc = new WebClient(); wc.DownloadFile("", "");//建立连接下载服务器的版本文件然后比较版本号 这个问题我想过,我的方法(不知道公认的方法是什么)是:在自己的网站,比如:www.abcdefg123.com/update目录下放一个最新的程序,并且放一个version.txt的文本,version.txt文本里面写的就是update目录下那个最新程序的版本,我们的程序检查更新的时候,下载version.txt文本(一般很小,因为里面只有几个数字),看看他里面写的版本是什么,是比现在的高的话,就下载update目录下的程序,覆盖原来的程序,当然,你要用原来的程序来调用更新程序,再用更新程序下载最新程序覆盖原来的程序!明白不? 利用反射,查找程序集的信息//反射得到当期的版本号与升级程序的版本号进行对比,如果不一致就进行升级。class Program{ static void Main(string[] args) { string version=Assembly.loadfile(@"(程序的路径)").GetName().Version.ToString(); Console.Writeline(version); }}if(currentVersion!=Version){ //读出有多少个文件需要更新 int newFileCount=int.Parse(sr.Readline()); for(int i=0;i<newFileCount;i++) { //取得文件下载路径和文件名 UpdateFile updateFile=new UpdateFile(); updateFile.FileName=sr.ReadLine(); updateFile.DownLoadPath=sr.ReadLine(); files.Add(updateFile); } foreach(UpdateFile file in files) { WebClient webClientNew=new WebClient(); //更新每个文件,注意web服务器的位置 webClient.DownloadFile(file.DownLoadPath,file.FileName) } MessageBox.show("升级成功!")}else{ MessageBox.show("你的程序已经是最新的版本!")} 我从网上看了和你的思路差不多,只不过不是txt文本,而是XML文档,还是谢谢了 engine10二次开发中怎么得到一个区图层的面积。急急急! 【菜鸟】问一下,vista界面控件的风格是不是不能用API写出来? 一组radiobutton怎么响应tab排序? 判断时间间隔 前台页面如何多次调用后台方法 双核CPU下获取随机数问题. .net windows程序,如何实现打开一个窗体后关闭原来的窗体? 问个菜问题 一个实体类如何返回不同的类型,想写一个扩展方法或其它方法也行 webform 中水晶报表打印报错:没有默认打印机 串口发送命令后是否会等待数据返回才发送下一条命令? c#做手机开发面试要注意什么
http://topic.csdn.net/u/20090422/08/69f9713b-3982-4313-ab11-7fb6eefdcf93.html?seed=987436713
http://topic.csdn.net/u/20081223/21/b0825274-2ce5-4dfc-8fdb-116660bc0e3c.html
2。局域网文件夹共享更新。第二种简单点,但是局域网嘛,局限性大一点。
1 发布新版本在指定路径上
2在数据库建立存放版本的表
3在登陆的时候判断,如果当前版本不等于数据库版本则升级
4升级才用批处理文件覆盖本地
,,如果需要源代码,发消息给我邮箱 [email protected]
using System.Diagnostics;
using System.Net;Load事件
string url = Process.GetCurrentProcess().MainModule.FileName;//取得程序路径
string vv = AssemblyName.GetAssemblyName(url).Version.ToString();//取得版本号
WebClient wc = new WebClient();
wc.DownloadFile("", "");//建立连接下载服务器的版本文件然后比较版本号
在自己的网站,比如:www.abcdefg123.com/update目录下放一个最新的程序,并且放一个version.txt的文本,version.txt文本里面写的就是update目录下那个最新程序的版本,我们的程序检查更新的时候,下载version.txt文本(一般很小,因为里面只有几个数字),看看他里面写的版本是什么,是比现在的高的话,就下载update目录下的程序,覆盖原来的程序,
当然,你要用原来的程序来调用更新程序,再用更新程序下载最新程序覆盖原来的程序!明白不?
//反射得到当期的版本号与升级程序的版本号进行对比,如果不一致就进行升级。
class Program
{
static void Main(string[] args)
{
string version=Assembly.loadfile(@"(程序的路径)").GetName().Version.ToString();
Console.Writeline(version);
}
}if(currentVersion!=Version)
{
//读出有多少个文件需要更新
int newFileCount=int.Parse(sr.Readline());
for(int i=0;i<newFileCount;i++)
{
//取得文件下载路径和文件名
UpdateFile updateFile=new UpdateFile();
updateFile.FileName=sr.ReadLine();
updateFile.DownLoadPath=sr.ReadLine();
files.Add(updateFile);
}
foreach(UpdateFile file in files)
{
WebClient webClientNew=new WebClient();
//更新每个文件,注意web服务器的位置
webClient.DownloadFile(file.DownLoadPath,file.FileName)
}
MessageBox.show("升级成功!")
}
else
{
MessageBox.show("你的程序已经是最新的版本!")
}