winform程序相对web程序而言,功能更强大,编程更方便,但软件更新却相当麻烦,要到客户端一台一台地升级,本文结合实际情况,通过软件实现自动升级,弥补了这一缺陷,有较好的参考价值。
由于程序在运行时不能用新的版本覆盖自己,因此,我们将登录窗口单独做成一个可执行文件,用户登录时,从网上检测是否有新的主程序,如果有,则从后台下载并覆盖老的版本,用户输入正确的用户名和密码后,通过参数将必要的信息(如用户名、密码等)传递给主程序,实现登录,我们还是以实际例子来说明。
创建一个项目,不妨取名为MainPro,作为主程序,切换到代码窗口,看到如下一段代码:
/// <summary>
/// 应用程序的主入口点。
/// </summary>
[STAThread]
static void Main()
{
Application.Run(new Form1());
}
为了接收参数,我们添加两个静态变量m_UserName和m_Password用于存放用户名和密码,并修改Main函数为:
private static string m_UserName,m_Password;
/// <summary>
/// 应用程序的主入口点。
/// </summary>
[STAThread]
static void Main(string[] args)
{
if(args.Length==2)//有参数输入,你还可以根据实际情况传入更多参数
{
//记录下用户名和密码,供软件使用
m_UserName=args[0];
m_Password=args[1];
Application.Run(new Form1());
}
else
{
MessageBox.Show("不能从这里启动");
}
}
为了显示登录是否正确,Load事件的代码修改为:
private void Form1_Load(object sender, System.EventArgs e)
{
string msg=string.Format("用户名:{0},密码:{1}",m_UserName,m_Password);
MessageBox.Show(msg);
}
这样,我们的示例主程序就完成了,只有加入参数才能运行该主程序,例如我们在DOS窗口中用“mainpro user pass”来启动该软件。
由于本项目涉及到不止一个程序,为保证运行正确,需要将编译后的可执行文件放到同一个文件夹,尽管我们可以编译后再将文件复制到同一个文件夹中,但每次都手工复制比较费事,这里采取一个简单的办法。先在硬盘中创建一个文件夹,如D:\output,选择菜单“项目”→“属性”,会弹出一个对话框,在配置(C)后面选择“所有配置”,选择配置属性的生成