日期:2011-05-15  浏览次数:20424 次

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)后面选择“所有配置”,选择配置属性的生成