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

我是想把界面弄的像这样

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

    [LV.4]偶尔看看III

    发表于 2014-11-9 15:52:42 | 显示全部楼层 |阅读模式






    之前看到 LOL 多玩盒子 的升级,如上图
    呵呵 目前才发现我离木鱼大大实力差距太大,就算有了源码参照,也只改了那个弹出窗。


    本帖子中包含更多资源

    您需要 登录 才可以下载或查看,没有帐号?入住

    x
  • TA的每日心情
    奋斗
    2019-1-5 01:55
  • 签到天数: 138 天

    [LV.7]常住居民III

    发表于 2014-11-9 20:12:51 | 显示全部楼层
    没有必要弄这么复杂吧。。
    一个升级还要做那么多选择作甚。。

    点评

    [attachimg]1789[/attachimg] Update.cs 里有一个代码是 [mw_shl_code=csharp,true]if (context.MustUpdate || context.MustUpdate) { Instance_UpdatesFound(s, e); unscribeAllEvents(client, false, tru  详情 回复 发表于 2014-11-14 14:43
  • TA的每日心情
    擦汗
    2016-7-22 16:13
  • 签到天数: 15 天

    [LV.4]偶尔看看III

     楼主| 发表于 2014-11-14 14:43:00 | 显示全部楼层
    木魚 发表于 2014-11-9 20:12
    没有必要弄这么复杂吧。。
    一个升级还要做那么多选择作甚。。


    Update.cs 里有一个代码是
    [C#] 纯文本查看 复制代码
    if (context.MustUpdate || context.MustUpdate)
    {
        Instance_UpdatesFound(s, e);
        unscribeAllEvents(client, false, true);
    }

    怎么左右条件一样啊?

    本帖子中包含更多资源

    您需要 登录 才可以下载或查看,没有帐号?入住

    x
  • TA的每日心情
    擦汗
    2016-7-22 16:13
  • 签到天数: 15 天

    [LV.4]偶尔看看III

     楼主| 发表于 2014-11-14 14:47:06 | 显示全部楼层
    唉,公司限Q,所以只能以回复形式发贴了
    [C#] 纯文本查看 复制代码
    /// <summary>
    /// 提供一个多个更新源的自动更新入口
    /// </summary>
    /// <param name="owner">在指定窗体上弹出更新提示</param>
    /// <param name="Url">可以是一个或多个更新服务端链接</param>
    /// <returns>返回是否开始检查操作</returns>
    public static bool CheckUpdateSimple(IWin32Window owner, params string[] Url)
    {
        if (Url != null)
        {
            if (Url.Length == 1)
            {
                if (_instance == null)
                    _instance = CreateUpdaterInstance(null, null, new UpdateServerInfo[] { new UpdateServerInfo(Url[0]) });
                else if (!string.IsNullOrEmpty(Url[0]))
                {
                    _instance.Context.UpdateDownloadUrl = Url[0];
                    _instance.Context.UpdateInfoFileName = "update_c.xml";
                }
            }
            else
            {
                List<UpdateServerInfo> servers = new List<UpdateServerInfo>();
                foreach (string item in Url)
                {
                    UpdateServerInfo server = new UpdateServerInfo(item);
                    servers.Add(new UpdateServerInfo(item));
                }
                _instance = new MultiServerUpdater(servers.ToArray());
            }
        }
    
        _instance.Context.EnableEmbedDialog = true;
        _instance.ownerForm = owner;
        return Instance.BeginCheckUpdateInProcess();
    }


    我把那个客户端的自动更新的入口改成这个了,并且是唯一入口。
    木鱼大大,这样可以吗?
  • TA的每日心情
    擦汗
    2016-7-22 16:13
  • 签到天数: 15 天

    [LV.4]偶尔看看III

     楼主| 发表于 2014-11-14 14:53:38 | 显示全部楼层
    这个主要是最近一次发布更新时,那个IIS 犯毛病了,一直读不到我的更新文件
    哪怕我把文件夹改名了,还是能访问旧网页。
    所以研究了下木鱼大大提供的服务端多更新源的入口
    因为还是想一句话调用更新

    上面的代码在更新时就会是这样:
    [C#] 纯文本查看 复制代码
    CheckUpdateSimple(this, "更新源1", "更新源2");

    只是固定了那个更新信息文件名称必须为 update_c.xml
  • TA的每日心情
    擦汗
    2016-7-22 16:13
  • 签到天数: 15 天

    [LV.4]偶尔看看III

     楼主| 发表于 2014-11-14 15:22:01 | 显示全部楼层
    动态调用 DLL
    [C#] 纯文本查看 复制代码
    // 自动更新
    SplashScreen.SplashScreen.SetStatus("正在检测更新...");
    string updatePath = Application.StartupPath + "\\SimpleUpdater.dll";
    if (File.Exists(updatePath))
    {
        Type type = Assembly.LoadFile(updatePath).GetType(string.Format("{0}.{1}", "FSLib.App.SimpleUpdater", "Updater"));
        MethodInfo md = type.GetMethod("CheckUpdateSimple", new Type[] { typeof(IWin32Window), typeof(string[]) });
        md.Invoke(null, new object[] { this, new string[] { "更新源1", "更新源2" } });
    }

  • TA的每日心情
    奋斗
    2019-1-5 01:55
  • 签到天数: 138 天

    [LV.7]常住居民III

    发表于 2014-11-18 23:18:20 | 显示全部楼层
    两个mustupdate应该是有笔误。。你说的后面我会在瞄瞄

    那个ownerForm可以不用。当发生跨线程的时候,显示更新的线程本身会自动维护一个消息循环。如果检测更新时捕捉到了上下文,会自动同步。

    点评

    那个 ownerForm 我发现还是有用的,你可以在这样的环境里测试: 点开程序A后界面没出现之前,点击别的窗口,程序A界面出现时弹出窗口,加了 ownerForm 和没加 ownerForm 表现不一样的。没加的话弹出窗口会出现在桌面  详情 回复 发表于 2015-8-28 22:22
  • TA的每日心情
    擦汗
    2016-7-22 16:13
  • 签到天数: 15 天

    [LV.4]偶尔看看III

     楼主| 发表于 2014-11-19 20:29:02 | 显示全部楼层
    额,这个算是我的习惯吧,从 MessageBox.Show(IWin32Window owner...) 开始,我就在每次提示时指定这个 owner ,确保提示框总在窗体前面

    木鱼大大写的代码很实用,对我帮助很大,非常感谢木鱼大大的无私分享,12306 也用木鱼大大的助手买过好几次票,省心省力。
  • TA的每日心情
    开心
    2015-2-13 16:09
  • 签到天数: 2 天

    [LV.1]初来乍到

    发表于 2015-2-13 16:11:51 | 显示全部楼层
    有功能就行了,搞那么复杂,浪费精力,那是美工干的活,不是程序员
  • TA的每日心情
    擦汗
    2016-7-22 16:13
  • 签到天数: 15 天

    [LV.4]偶尔看看III

     楼主| 发表于 2015-8-28 22:22:17 | 显示全部楼层
    木魚 发表于 2014-11-18 23:18
    两个mustupdate应该是有笔误。。你说的后面我会在瞄瞄

    那个ownerForm可以不用。当发生跨线程的时候,显示 ...

    那个 ownerForm 我发现还是有用的,你可以在这样的环境里测试: 点开程序A后界面没出现之前,点击别的窗口,程序A界面出现时弹出窗口,加了 ownerForm 和没加 ownerForm 表现不一样的。没加的话弹出窗口会出现在桌面左上角 (0,0) 坐标处,加的话会按设定的,比如居中于父窗体来显示。
    您需要登录后才可以回帖 登录 | 入住

    本版积分规则

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

    GMT+8, 2024-11-23 04:33 , Processed in 0.024643 second(s), 16 queries , Redis On.

    Powered by Discuz! X3.4

    © 2005-2024 鱼·后花园

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