首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > .NET >

关于软件晋级的解决方案

2013-08-09 
关于软件升级的解决方案现在是这样的情况。在同一个局域网中有几十台电脑上面都安装了我们开发的软件。现在

关于软件升级的解决方案
现在是这样的情况。在同一个局域网中有几十台电脑上面都安装了我们开发的软件。现在又一个这样的情况。每次程序更新了 需要每一台电脑就要进行 复制、粘贴的操作。
我现在做了这样的方法在一台电脑上共享一个文件夹 将更新的程序放到里面,然后再每一个客户端都拷贝一个.bat的文件。这个文件的内容就是 双击它就会将服务器上的文件自动复制并替换到本地计算机。
但是没一个客户端都需要安装一个BAT文件 并且如果 放更新程序的电脑的IP地址一改变就需要将各个客户机电脑的.BAT文件修改一遍 太费劲了。大家伙有什么好的解决方案吗?
[解决办法]
我编了一个数据库操作的软件,我一般是把新更新包用流的方式存放在数据库,然后软件启动时不是直接运程序,而是运行另外一个更新程式,发现有版本变更有从数据库下载到本地,再用BAT文件COPY覆盖原来的程序包,如果没有更新包就直接使用API函数调用主程式。
procedure TForm1.FormShow(Sender: TObject);
var
  Img_No,Font_No:string;
  SW_Ver,TempStr,MainStr:string;
  Main_Ver:string;
  File_Name:string;
  Row_Int,i:Integer;
begin
   qry2.Close;
   qry2.SQL.Clear;
   qry2.SQL.Add('select * from 软件更新');
   qry2.Open;
   Row_Int:=qry2.RecordCount;

   RzVersionInfo1.FilePath:=ExtractFilePath(Application.ExeName)+'Ex.exe';
   Main_Ver:=RzVersionInfo1.FileVersion;//查询数据库内更新包的版本
   
   SW_Ver:=qry2.fieldbyname('标题').AsString;

   if Main_Ver<>SW_Ver then//假如版本与现在程序版本不同
   begin
       if Application.MessageBox('系统检测有更新版,你现在要立即更新吗?', 
         '警告', MB_YESNO + MB_ICONWARNING + MB_DEFBUTTON2 + MB_TOPMOST) =
         IDYES then
       begin
        while not qry2.Eof do
       begin
         File_Name:=qry2.fieldbyname('文件名').AsString;
         TBlobField(qry2.FieldByName('附件')).SaveToFile(ExtractFilePath(Application.ExeName)+'\Temp\'+ File_Name +'');//将更新包下载到相对目录下的TEMP文件夹
         qry2.Next;
       end;



   TempStr:=ExtractFilePath(Application.ExeName)+'Temp\';
   MainStr:=ExtractFilePath(Application.ExeName);

  ShellExecute(handle,'open','copy.bat',nil,nil,SW_SHOWNORMAL);//调用BAT文件COPY下载的更新文件
       end;
       end else
       begin
      ShellExecute(handle,'open','EX.exe',nil,nil,SW_SHOWNORMAL);//如果没有更新包则用API直接调用EX.EXE执行文件。
   end;
   Application.Terminate;//完成上面的操作关闭更新程序
end;



希望对你有用!
[解决办法]
我用的也是类似楼上的方法,最新的程序放在服务器,客户端先运行更新程序,更新程序比照服务器及客户端程序的时间,如果有更新的程序,从服务器拷贝过来,再调用系统主程序,通出更新程序
[解决办法]
我是用ftp的,主程序、升级程序2个exe,可以互相更新,但感觉ftp不太好用。
[解决办法]
1、将文件存放在数据库中;
2、客户端程序启动时,检测中否有新版,在启动Autodown程序。
3、Autodown程序结束,重新调用主程序。
[解决办法]
自动更新嘛,Delphi有个Http自动下载更新的控件

热点排行