搜索
热搜: 活动 交友 discuz
查看: 1458|回复: 9
收起左侧

对比版本处的代码疑问

[复制链接]
  • TA的每日心情
    擦汗
    2016-7-22 16:13
  • 签到天数: 15 天

    [LV.4]偶尔看看III

    发表于 2015-10-24 16:33:16 | 显示全部楼层 |阅读模式
    自动更新源码中 ExtensionMethod.CompareVersion 方法注释标明是 比较文件的版本和指定的版本。如果文件版本低于指定版本则返回true可实现是 version != ConvertVersionInfo(fv).ToString();
    这地方有问题。测试  1.2.0.0 对比 1.3.0.0  和 1.2.0.0 对比 1.1.0.0 都返回 true



    点评

    这个函数实际调用的位置是生成要更新的文件列表。在这里,使用的思路是确保和服务器端版本相同,始终以服务器端文件的版本为最新版本  发表于 2015-10-26 14:47
  • TA的每日心情
    奋斗
    2019-1-5 01:55
  • 签到天数: 138 天

    [LV.7]常住居民III

    发表于 2015-10-26 14:44:54 | 显示全部楼层
    zhl3422 发表于 2015-10-24 16:41
    每次生成更新包 还是觉得太麻烦了 要选路径、输版本号、对文件更新种类进行分类 等重复操作
    目前正在按木鱼 ...

    打包工具已经有保存为项目文件的功能了,使用项目文件绑定版本号和更新说明等,可以实现命令行直接生成升级包。
  • TA的每日心情
    擦汗
    2016-7-22 16:13
  • 签到天数: 15 天

    [LV.4]偶尔看看III

     楼主| 发表于 2015-10-24 16:41:56 | 显示全部楼层
    本帖最后由 zhl3422 于 2015-10-24 16:43 编辑

    每次生成更新包 还是觉得太麻烦了 要选路径、输版本号、对文件更新种类进行分类 等重复操作
    目前正在按木鱼大大的代码简写,想做一个没有压缩包的升级程序
    期望功能是 将最新程序或文件复制到指定网站的目录下,同目录下有个 exe 文件,
    还有一个 ini 文件,运行 exe 直接根据 ini 生成 update.xml
    生成过程中 计算  hash .
    ini 文件格式大致是
    [PowerShell] 纯文本查看 复制代码
    ; 总是更新
    [Always]
    文件1.exe
    文件2.exe
    ; 对比版本
    [VersionCompare]
    文件3.exe
    文件4.exe
    ; 存在即跳过
    [SkipIfExists]
    Excel.dll
    TabStrip.dll
    AutocompleteMenu.dll
    ; 忽略更新
    [Ignore]
    update.xml
    update.exe


    本地调用不变。



    点评

    打包工具已经有保存为项目文件的功能了,使用项目文件绑定版本号和更新说明等,可以实现命令行直接生成升级包。  详情 回复 发表于 2015-10-26 14:44
  • TA的每日心情
    擦汗
    2016-7-22 16:13
  • 签到天数: 15 天

    [LV.4]偶尔看看III

     楼主| 发表于 2015-10-26 08:54:32 | 显示全部楼层
    在 XMLSerializeHelper 类中有一个注释好像是错的
    XmlDeserializeFromString  我的理解是 反序列化文本为对象
    木鱼大大 我的看法对不?

    点评

    注释确实写错了。  发表于 2015-10-26 14:45
  • TA的每日心情
    擦汗
    2016-7-22 16:13
  • 签到天数: 15 天

    [LV.4]偶尔看看III

     楼主| 发表于 2015-10-26 09:10:18 | 显示全部楼层
    本帖最后由 zhl3422 于 2015-10-26 09:12 编辑

    我更改了此处代码逻辑为:对比 hash 不一致的情况下,对比版本号
    当本地文件版本号 <= 服务器版本时 更新
    [C#] 纯文本查看 复制代码
    // 检查 Hash 不一致时对比版本
    var isNewer = ExtensionMethod.GetFileHash(localPath) != pkg.FileHash;
    if (isNewer)
    {
        // 如果 本地版本 <= 服务器版本 更新
        isNewer = ExtensionMethod.CompareVersion(localPath, pkg.Version);
    }



    点评

    如果Hash不同,则版本号肯定不同,不用对比了。这里的思路是要始终保证和服务器上文件一致。  发表于 2015-10-26 14:45
  • TA的每日心情
    擦汗
    2016-7-22 16:13
  • 签到天数: 15 天

    [LV.4]偶尔看看III

     楼主| 发表于 2015-10-27 09:07:53 | 显示全部楼层
    嗯嗯 昨天测试过,用 zip 好处一是节省流量 二是防止网站对各种文件类型的阻拦
    还有第三 得说我改不动这个更新。。才发现我实力好弱。
    您需要登录后才可以回帖 登录 | 入住

    本版积分规则

    申请友链| Archiver| 手机版| 鱼·后花园

    GMT+8, 2024-4-20 17:30 , Processed in 0.027928 second(s), 22 queries , Redis On.

    Powered by Discuz! X3.4

    © 2005-2024 鱼·后花园

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