Foxtable(狐表)用户栏目专家坐堂 → 代码疑问


  共有13987人关注过本帖树形打印复制链接

主题:代码疑问

帅哥哟,离线,有人找我吗?
卟离卟弃
  11楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:五尾狐 帖子:1181 积分:8108 威望:0 精华:1 注册:2009/1/17 10:52:00
  发帖心情 Post By:2010/11/1 10:25:00 [只看该作者]

以下是引用czy在2010-10-15 14:47:00的发言:

如果是sql数据源,我觉得按下面的步骤就可以了。

假设在原项目中进行升级:

 

'判断是否可以升级
'获取下载文件大小,将值保存到变量中
DownloadFile '下载更新文件到指定目录
'获取刚下载的文件的大小,将值保存到变量中
'比较服务器文件和已下载的文件大小是否一致(如果不一致说明下载中出错)
CopyFile '复制刚下载的文件,并重命名覆盖原项目    ,,,求解:程序正在打開運行狀態,這時覆盖原项目操作系統會自動提示錯誤啊.
DeleteFile '删除下载的文件
syscmd.Project.Open(ProjectFile) '重启项目


 回到顶部
帅哥哟,离线,有人找我吗?
bohe
  12楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:五尾狐 帖子:1074 积分:9872 威望:0 精华:0 注册:2008/9/2 11:34:00
  发帖心情 Post By:2010/11/1 10:48:00 [只看该作者]

自动升级此项功能很好,很实用,各位高手加油啊!最好老六写一个放到帮助中去。图片点击可在新窗口打开查看

 回到顶部
帅哥哟,离线,有人找我吗?
czy
  13楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信 一级勋章 三级勋章 二级勋章
等级:超级版主 帖子:6318 积分:33945 威望:0 精华:10 注册:2008/8/31 20:56:00
  发帖心情 Post By:2010/11/1 11:18:00 [只看该作者]

以下是引用卟离卟弃在2010-11-1 10:25:00的发言:

 

不会的,假设下载的文件名称为“test.Table”,保存在项目目录下的“test”文件夹中

 

FileSys.CopyFile(ProjectPath & test & "\test.Table",FileSys.GetFileInfo(ProjectFile).Name,True)


 回到顶部
帅哥哟,离线,有人找我吗?
卟离卟弃
  14楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:五尾狐 帖子:1181 积分:8108 威望:0 精华:1 注册:2009/1/17 10:52:00
  发帖心情 Post By:2010/11/1 11:33:00 [只看该作者]

以下是引用czy在2010-11-1 11:18:00的发言:

 

不会的,假设下载的文件名称为“test.Table”,保存在项目目录下的“test”文件夹中

 

FileSys.CopyFile(ProjectPath & test & "\test.Table",FileSys.GetFileInfo(ProjectFile).Name,True)

系統更新,應該是整個文件更新吧.test.Table 這只是單單一個文件,例:如果我的菜單發生變化.等等之類的更新..

 

整個系統更新,應該是複製整個文件夾吧.

C版是這樣的嗎?還是只需要更新一個文件


 回到顶部
帅哥哟,离线,有人找我吗?
czy
  15楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信 一级勋章 三级勋章 二级勋章
等级:超级版主 帖子:6318 积分:33945 威望:0 精华:10 注册:2008/8/31 20:56:00
  发帖心情 Post By:2010/11/1 12:00:00 [只看该作者]

如果不是单个的文件可以考虑用MoveDirectory,如果替换狐表的所有程序文件,不能替换的可能仍然存在。

 

MoveDirectory

将目录中的内容移到另一个目录,并删除原目录。

语法:

MoveDirectory(Directory, Destination)

Directory: 要移动的目录
Destination:目标位置

例如:

FileSys.MoveDirectory("C:\YourFolder", "D:\MyFolder")


 回到顶部
帅哥哟,离线,有人找我吗?
卟离卟弃
  16楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:五尾狐 帖子:1181 积分:8108 威望:0 精华:1 注册:2009/1/17 10:52:00
  发帖心情 Post By:2010/11/1 14:05:00 [只看该作者]

C版

你看我升級按鈕的代碼

FileSys.CopyDirectory ("\\192.168.1.2\系统文件更新\其它\自动升级程序", "D:\零时文件\其它\自动升级程序", True ) '复制服务器发布的文件夹到客户端指定文件夹并覆盖原文件夹.
FileSys.MoveDirectory("D:\零时文件\其它\自动升级程序", "D:\零时文件\其它\自动升级程序二",FileSys.GetFileInfo(ProjectFile).Name,True)
Dim Proc As New Process '定义一个新的Process
Proc.File = "d:\零时文件\其它\自动升级程序二\自动升级程序\wyq.exe" '指定文件路径
Proc.Start()'打开文件
Syscmd.Project.Exit(False)

 

測試的時候,能夠檢測到文件是否需要更新,只是更新按鈕代碼出問題

提示錯誤

 

 


图片点击可在新窗口打开查看此主题相关图片如下:01.png
图片点击可在新窗口打开查看

 回到顶部
帅哥哟,离线,有人找我吗?
czy
  17楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信 一级勋章 三级勋章 二级勋章
等级:超级版主 帖子:6318 积分:33945 威望:0 精华:10 注册:2008/8/31 20:56:00
  发帖心情 Post By:2010/11/1 15:02:00 [只看该作者]

问题应该在这吧?

 

FileSys.MoveDirectory("D:\零时文件\其它\自动升级程序", "D:\零时文件\其它\自动升级程序二\" & FileSys.GetFileInfo(ProjectFile).Name,True)


 回到顶部
帅哥哟,离线,有人找我吗?
bohe
  18楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:五尾狐 帖子:1074 积分:9872 威望:0 精华:0 注册:2008/9/2 11:34:00
  发帖心情 Post By:2010/11/1 21:37:00 [只看该作者]

以下是引用czy在2010-11-1 15:02:00的发言:

问题应该在这吧?

 

FileSys.MoveDirectory("D:\零时文件\其它\自动升级程序", "D:\零时文件\其它\自动升级程序二\" & FileSys.GetFileInfo(ProjectFile).Name,True)

C版,FileSys.GetFileInfo(ProjectFile).Name 什么意思,帮助中没找到。


 回到顶部
帅哥哟,离线,有人找我吗?
czy
  19楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信 一级勋章 三级勋章 二级勋章
等级:超级版主 帖子:6318 积分:33945 威望:0 精华:10 注册:2008/8/31 20:56:00
  发帖心情 Post By:2010/11/2 9:01:00 [只看该作者]

以下是引用bohe在2010-11-1 21:37:00的发言:

C版,FileSys.GetFileInfo(ProjectFile).Name 什么意思,帮助中没找到。

 

返回正在使用的项目名称。

[此贴子已经被作者于2010-11-2 9:01:36编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
卟离卟弃
  20楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:五尾狐 帖子:1181 积分:8108 威望:0 精华:1 注册:2009/1/17 10:52:00
  发帖心情 Post By:2010/11/2 9:26:00 [只看该作者]

啊...

借助setup2go 軟件 基本上實現自動更新功能了

 

我是這樣做的,

把程序製作成為EXE安裝文件. 這樣更新的時候只要從服務器中複製下來,然後執行安裝就可以了.

 

在做成EXE安裝程序的時候,有兩個地方一定要先上

  1.程序自動安裝,不用要人工操作


图片点击可在新窗口打开查看此主题相关图片如下:02.png
图片点击可在新窗口打开查看

 2.安裝後,自動運行


图片点击可在新窗口打开查看此主题相关图片如下:01.png
图片点击可在新窗口打开查看

 

登錄窗口
 


图片点击可在新窗口打开查看此主题相关图片如下:03.png
图片点击可在新窗口打开查看

 

登錄窗口 AFTERLOAD 事件代碼
Dim cmd As New SQLCommand
Dim dt As datatable
Dim cmb As WinForm.ComboBox = e.Form.Controls("UserName")
cmd.C
cmd.CommandText = "SELECT DISTINCT Name From {Users} where [设备清单]= 'Y' "
dt = cmd.ExecuteReader()
For Each dr As DataRow In dt.Datarows
    cmb.Items.Add(dr("Name"))
Next
cmb.SelectedIndex = 0
Forms("登陆窗口").Controls("PassWord").Select() '返回窗口中 TB1控件
Dim b1 As String =Tables("客户端版本号")(0)("客户端版本号")
Dim b2 As String =Tables("服务器版本号")(0)("服务器版本号")
If b1 = b2 Then
Else
    Dim Proc As New Process
    MessageBox.Show("系统有更新,请更新文件!!", "提示")
    Forms("登陆窗口").Close()
    Forms("软件更新").OPEN()
End If

確認升級按鈕代碼

If FileSys.FileExists("\\192.168.1.2\系统文件更新\其它\自动升级程序.exe") Then
    Network.DownloadFile("\\192.168.1.2\系统文件更新\其它\自动升级程序.exe","d:\零时文件\自动升级程序二\自动升级程序.exe","wyq","wyq7758520",True, 100000, True) '复制服务器发布的文件夹到客户端指定文件夹并覆盖原文件夹
    Dim Proc As New Process '定义一个新的Process
    Proc.File = "d:\零时文件\自动升级程序二\自动升级程序.exe" '指定文件路径
    Proc.Start()'打开文件
    Syscmd.Project.Exit(False)
    e.Form.TimerEnabled = False
Else
    Messagebox.Show("更新文件不存在或已经被删除!请联系管理员!","提示")
End If

 

 

呵,做成EXE文件,基本上可以,, 這種辦法可能很笨,我實在想不出了..

 

求更簡易的辦法..........


 回到顶部
总数 23 上一页 1 2 3 下一页