开启辅助访问 切换到宽版

精易论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

用微信号发送消息登录论坛

新人指南 邀请好友注册 - 我关注人的新帖 教你赚取精币 - 每日签到


求职/招聘- 论坛接单- 开发者大厅

论坛版规 总版规 - 建议/投诉 - 应聘版主 - 精华帖总集 积分说明 - 禁言标准 - 有奖举报

查看: 6912|回复: 3
收起左侧

[其它] 易语言编译后自动检查版本并上传服务器小技巧!

[复制链接]
结帖率:87% (53/61)
发表于 2019-9-16 17:25:06 | 显示全部楼层 |阅读模式   浙江省杭州市
本帖最后由 wlsk888 于 2019-9-16 17:35 编辑

     我在新更新一个易语言软件后,老是需要手动上传某服务器,给别人提供更新,有时更新忘记了上传,有时忘记本地和服务器版本有没有更新过
麻烦,所以有了下面一个小技巧
方法很简单,先写个sc.bat上传批处理(需要用到一个curl的小工具,支持多种方式,以下以ftp为例子,大家可以网上找)
把它放到你的需要更新的程序目录

rem 需要自己修改的如下:
rem <服务器网址>
rem <软件名称>
rem <ftp用户名>
rem <ftp密码>
rem <ftp网址>
rem <ftp目录>


    setlocal disabledelayedexpansion
    set version=%%i
    setlocal enabledelayedexpansion
)
del DE_Version_tmp.txt
if "%version%"=="" goto :err
echo 当前版本为:%version%
if exist 已上传版本.txt (goto :jcsc) else (
echo %version% >已上传版本.txt
goto :kssc
)

:jcsc
for /f "delims=" %%i in (已上传版本.txt) do (
    setlocal disabledelayedexpansion
    set oversion=%%i
    setlocal enabledelayedexpansion
    )
echo 已上传版本为:%oversion%
if %version%==%oversion% goto :bbcz

:kssc
echo 开始上传新版本,请等待完成...
echo 开始正常上传 >log.txt
echo <软件名称>-%version%-http://<服务器网址>/updown/<软件名称>.exe>up.txt
@ping 127.0.0.1 -n 2 >nulcurl -s -T  <软件名称>.exe -u <ftp用户名>:<ftp密码> ftp://<ftp网址>/<ftp目录>/ >>log.txt
curl -s -T  up.txt -u <ftp用户名>:<ftp密码> ftp://<ftp网址>/<ftp目录>/ >>log.txt
echo 上传完成 >>log.txt
echo %version% >已上传版本.txt
echo 新版本上传完成:%version%
@ping 127.0.0.1 -n 2 >nul
exit

:err
echo error
@ping 127.0.0.1 -n 3 >nul
echo error >log.txt
exit

:bbcz
echo 当前版本已上传过
@ping 127.0.0.1 -n 3 >nul
echo 当前版本已上传过 >log.txt
exit

:test
type 已上传版本.txt|findstr /i %version% >nul
if %errorlevel%==0 (echo 存在&pause) else (
echo 不存在
pause
)

rem 以上sc.bat批处理完成检查本目录下<软件名称>的版本,判断是否上传过,没有就自动上传,同时上传up.txt给服务器,帮助软件判断更新,最后在已上传版本.txt中记录,留给下次更新!
------------------------------------------------------------------------------------------------------------------------------------------------------------------
第二步
找到易语言安装目录\tools\link.ini
在最后加上一行
post_link_action1=cmd.exe /c if exist $(TARGET_DIR)\sc.bat $(TARGET_DIR)\sc.bat

第三步,就是每次更新编译前易语言程序修改下配置中的程序版本号

最后给出我更新用的一部分代码,供参考
//启动时:

_启动窗口.标题 = “软件名称-” + 版本信息.产品版本

本地更新 = 读配置项 (配置文件, “Options”, “本地更新”, “0”)
.如果真 (本地更新 = “1”)
    本地更新文件名 = 读配置项 (配置文件, “Options”, “本地更新文件名”, “”)
    .如果真 (本地更新文件名 ≠ “”)
        .如果真 (文件是否存在 (本地更新文件名) = 真)
            写配置项 (配置文件, “Options”, “本地更新”, “0”)
            写配置项 (配置文件, “Options”, “本地更新文件名”, “”)
            程序自杀 (本地更新文件名)
        .如果真结束

    .如果真结束

.如果真结束
自动更新 = 读配置项 (配置文件, “Options”, “自动更新”, “0”)
.如果 (自动更新 = “1”)
    _检查更新_被选择 ()
    自动更新选择框.选中 = 真
.否则
    自动更新选择框.选中 = 假

//版本比较:

  
子程序名返回值类型公开备 注
版本比对逻辑型 软件版本号大小对比
参数名类 型参考可空数组备 注
本地版本号文本型本地版本号
最新版本号文本型最新版本号
变量名类 型静态数组备 注
本地版本数组文本型0
最新版本数组文本型0
length整数型 
i整数型 
如果真 (本地版本号 = 最新版本号)
返回 ()
本地版本数组 = 分割文本 (本地版本号, “.”, )
最新版本数组 = 分割文本 (最新版本号, “.”, )
如果 (取数组成员数 (本地版本数组)取数组成员数 (最新版本数组))
变量循环首 (1, 取数组成员数 (最新版本数组)取数组成员数 (本地版本数组), 1, )
加入成员 (本地版本数组, “0”)
变量循环尾 ()
length = 取数组成员数 (本地版本数组)
变量循环首 (1, 取数组成员数 (本地版本数组)取数组成员数 (最新版本数组), 1, )
加入成员 (本地版本数组, “0”)
变量循环尾 ()
length = 取数组成员数 (最新版本数组)
计次循环首 (length, i)
判断 (到数值 (最新版本数组 [i])到数值 (本地版本数组 [i]))
返回 ()
判断 (到数值 (最新版本数组 [i])到数值 (本地版本数组 [i]))
返回 ()


i = i + 1
计次循环尾 ()
返回 ()


//更新下载等
  
窗口程序集名保 留  保 留备 注
窗口程序集_窗口1   
变量名类 型数组备 注
需要销毁逻辑型  

子程序名返回值类型公开备 注
_更新窗口_创建完毕  
变量名类 型静态数组备 注
当前程序名文本型 
当前版本号文本型 
更新字符串文本型0
更新字符数量整数型 
计次整数型 
需更新版本号文本型 
更新地址文本型 
标题分组文本型0
标题分组 = 分割文本 (_启动窗口.标题, “-”, )
当前程序名 = 标题分组 [1]
当前版本号 = 标题分组 [2]
更新字符串 = 分割文本 (到文本 (HTTP读文件 (“http://www.ymao888.cn/updown/up.txt”)), “-”, )
更新字符数量 = 取数组下标 (更新字符串, )
如果真 (更新字符数量 < 1)
更新字符串 = 分割文本 (到文本 (HTTP读文件 (“http://wlsk888.gz01.bdysite.com/updown/up_bd.txt”)), “-”, )
更新字符数量 = 取数组下标 (更新字符串, )
如果真 (更新字符数量 > 1)
计次循环首 (更新字符数量, 计次)
如果真 (当前程序名 = 更新字符串 [计次])
需更新版本号 = 更新字符串 [计次 + 1]
如果真 (版本比对 (当前版本号, 需更新版本号))
更新地址 = 更新字符串 [计次 + 2]
跳出循环 ()


计次循环尾 ()
版本号.标题 = 当前版本号
如果真 (需更新版本号 = “”)
需更新版本号 = 当前版本号
版本号1.标题 = 需更新版本号
如果 (更新地址 = “”)
更新按钮.禁止 = 真
状态条1.置文本 (0, “当前为最新版本,无需更新”)
需要销毁 = 真
更新按钮.禁止 = 假
状态条1.置文本 (0, “检测到最新版本,已获取更新地址,请点击更新”)
编辑框1.内容 = 更新地址
如果真 (自动更新 = “1”)
_更新按钮_被单击 ()
提示框 (状态条1.取文本 (0), 0, “更新检查”, , 3000)
更新窗口.销毁 ()


子程序名返回值类型公开备 注
_更新按钮_被单击  
更新按钮.禁止 = 真
如果 (编辑框1.内容 ≠ “”)
API_CloseHandle (API_CreateThread (0, 0, 到数值 (&下载线程), 0, 0, 0))
更新按钮.禁止 = 假

子程序名返回值类型公开备 注
下载线程  
变量名类 型静态数组备 注
WinhttpWinhttp 
反馈整数型 
更新文件名文本型 
下载地址文本型 
下载文件名文本型 
下载地址 = 子文本替换 (编辑框1.内容, #换行符, “”, , , )
下载文件名 = 编码_URL编码 (文本_取右边 (下载地址, “/”), )
更新文件名 = 文本_取右边 (下载地址, “/”)“.tmp”
下载地址 = 子文本替换 (下载地址, 文本_取右边 (下载地址, “/”), 下载文件名, , , )
输出调试文本 (下载地址)
输出调试文本 (更新文件名)
Winhttp.Open (“GET”, 下载地址)
Winhttp.SetRequestHeader (“Accept”, “*/*”)
Winhttp.SetRequestHeader (“Referer”, 下载地址)
Winhttp.SetRequestHeader (“User-Agent”, “ Mozilla/5.0 (Windows NT 6.1; WOW64; rv:23.0) Gecko/20100101 Firefox/23.0”)
Winhttp.Send ()
如果 (Winhttp.GoDownBody (取运行目录 (), 更新文件名, 到数值 (&进度显示), 123))
' 准备替换
输出调试文本 (取运行目录 ())
如果真 (自动更新 = “1”)
状态条1.置文本 (0, “程序将自动重启,完成更新”)
写配置项 (配置文件, “Options”, “本地更新”, “0”)
写配置项 (配置文件, “Options”, “自动更新”, “0”)
程序自杀 (更新文件名)
返回 ()
反馈 = 提示框 (“下载完毕,是否退出,并更新启动夜猫雷电群控?”, #是否钮, “下载完毕”, , 5000)
如果 (反馈 = 5 反馈 = 31999)
状态条1.置文本 (0, “程序将自动重启,完成更新”)
写配置项 (配置文件, “Options”, “本地更新”, “0”)
写配置项 (配置文件, “Options”, “自动更新”, “0”)
程序自杀 (更新文件名)
状态条1.置文本 (0, “下载完毕,但没有更新,下次启动将自动更新”)
写配置项 (配置文件, “Options”, “本地更新文件名”, 更新文件名)
写配置项 (配置文件, “Options”, “本地更新”, “1”)

状态条1.置文本 (0, “更新失败,请检查网络或联系作者”)
' Winhttp.ResponseBody ()
更新按钮.禁止 = 假
子程序名返回值类型公开备 注
进度显示  
参数名类 型参考可空数组备 注
dwParam整数型自定义参数
dwSizetotes长整数型文件总大小,参数必须带有 参考属性
dwSize长整数型下载 或 上传 大小
dwTime长整数型当前所用时间
变量名类 型静态数组备 注
lpTimeoues双精度小数型 
判断 (dwParam = 123)
进度条1.位置 = dwSize ÷ dwSizetotes × 100
lpTimeoues (dwTime × dwSizetotes ÷ dwSize - dwTime) ÷ 1000
标签1.标题 = “下载文件剩余用时:”到文本 (四舍五入 (lpTimeoues, 2)) + “ 秒”



子程序名返回值类型公开备 注
_更新窗口_首次激活  
如果真 (需要销毁 = )
提示框 (“无需更新,立刻退出”, 0, “更新检查”, , 3000)
更新窗口.销毁 ()


i支持库列表   支持库注释   
internet互联网支持库
iext扩展界面支持库一




签到天数: 2 天

发表于 2022-5-16 13:51:02 | 显示全部楼层   江苏省苏州市
6666666666666666666
回复 支持 反对

使用道具 举报

结帖率:98% (93/95)
发表于 2019-9-24 16:30:08 | 显示全部楼层   福建省厦门市
不无所能 发表于 2019-9-16 21:11
学习学习学习{:4_255 ...

在吗 求联系方式
回复 支持 反对

使用道具 举报

发表于 2019-9-16 21:11:11 | 显示全部楼层   广东省广州市
学习学习学习
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则 致发广告者

发布主题 收藏帖子 返回列表

sitemap| 易语言源码| 易语言教程| 易语言论坛| 诚聘英才| 易语言模块| 手机版| 广告投放| 精易论坛
拒绝任何人以任何形式在本论坛发表与中华人民共和国法律相抵触的言论,本站内容均为会员发表,并不代表精易立场!
论坛帖子内容仅用于技术交流学习和研究的目的,严禁用于非法目的,否则造成一切后果自负!如帖子内容侵害到你的权益,请联系我们!
防范网络诈骗,远离网络犯罪 违法和不良信息举报电话0663-3422125,QQ: 800073686,邮箱:800073686@b.qq.com
Powered by Discuz! X3.4 揭阳市揭东区精易科技有限公司 ( 粤ICP备12094385号-1) 粤公网安备 44522102000125 增值电信业务经营许可证 粤B2-20192173

快速回复 返回顶部 返回列表