Google Chrome 更新器

五月 12, 2015 | 38 评论 | C#, 原创软件

锵锵锵!时隔一年,Chrome更新器终于又更新啦!
Chrome更新器,顾名思义,就是更新Chrome的工具,为什么Chrome需要工具来更新呢?难道谷歌自己就不能更新吗?这个嘛,呵呵

可能有些用过耍下(shuax)的ChromeUpdater的朋友会纳闷了,人家有一个更新器了你怎么又去写一个?我又该如何选择?那么我们在这里先来聊聊两者的异同:

  • 本文中的更新器(以下简称CU#)是用C#写的,而耍下的ChromeUpdater(以下简称CU)是用C++写的,两者对系统运行环境的依赖不同。
  • CU#的核心功能是”静默更新”,而CU的核心是便携(因为其内置了对应版本的GreenChrome)。
  • CU#可以集成迅雷下载插件,从而达到脱离代理进行更新的目的。
  • CU#的静默更新功能依赖GreenChrome (下文简称GC),所以也集成了对GC的更新及下载功能;虽然CU不依赖GC,但CU内嵌GC,在解压时也可以选择释放。

简要更新日志:

  • v.9:首个版本
  • v1.0:将解压过程改为异步,取消了文本框的限制,在没有输入目录的情况下也可以获取。
  • v1.1:修复在没有填写目录的情况下点获取会闪退的问题。
  • ————————————————————————
  • v2.0:步子迈太大扯到蛋了,其实  1.1  和  2.0  是2个完全不同的程序。
  • v2.1:
    ·字体调大,增加缓存清理功能;
    ·之前有朋友批评我说,“解压的时候弹个7z出来,吓死个仙人板板,感觉跟中毒了一样”,对此经过我慎密地分析以及结合了人体工程学和广义相对论得出的结论是,的确没啥意思,所以我将整个解压过程隐藏掉了。
  • v2.2:
    ·群友反馈说是在没有预先检测到安装目录的时候点击查询,会出现一片空白,根据我多年的临床经验,这是个bug,但是已经修复。
    ·耍下表示有时候chrome的环境目录不是chrome.exe所在的目录,在唤醒时如果用相对路径的话可能会说找不到对应的文件,所以在关闭唤醒路径里加上%app%;
    ·从这个版本开始更新器自己检查到自己的更新的时候会更新自己(在非静默模式下);
    ·我发现有时候chrome会需要重启(比如修改了flags里面的某些项),但是如果恰好碰到了更新,chrome一关闭就会唤醒CU#来解压新版,这时候旧版chrome启动,就会导致解压失败。所以在被chrome的关闭事件唤醒的时候,CU#会等待5秒,如果5秒之后发现浏览器又启动了,就会放弃解压,反之则会开始解压。
  • v2.2.2:
    ·有朋友反映说是自动识别的时候会把“2个180浏览器”识别成chrome,我去询问了一下安装了该浏览器的老司机,他表示其进程名中带有chrome…难怪会误判,好吧,那就把判断条件收紧一点。
    ·前几天我入手了个高分屏的电脑,发现运行程序的时候主窗体居然莫名其妙跑到其他地方去了,仔细一看,原来是程序居中的时候,是以屏幕分辨率来居中的,而不是以显示分辨率来的(高分屏的话系统是需要缩放的,要不然字会小得跟蚂蚁一样),所以重新搞一搞,让程序能一直乖乖躺在屏幕中间。(顺便把任务栏图标也换了)
  • v2.2.2.1:
    ·耍下一声令下,winmm.dll要改名成wtsapi32.dll了,这边也要跟进
    ·耍下的更新器唤醒参数后面加了pe架构(例如Dev x64),而CU#是通过exe来直接判断架构的(例如Dev),所以在GreenChrome里设置了更新的版本以后(例如从Canary换到Dev),可能会导致CU#唤醒失败,所以这里进行检查,忽略掉参数里的架构。
  • v2.2.3.1:
    ·完善版本号的判断,之前会在有些情况下误判。
    ·修正在有些系统下被GC关闭事件唤醒会报错的问题。
    ·修正在有些情况下无法静默更新GC的问题。
  • v2.2.4.1:
    ·耍下表示:Chrome又双叒没法注入了,所以要换入口,dll名从wtsapi32要变成version,于是我跟他商量了一下,我这边不再默认配置dll的名字了,名字从他那里读取。
    ·之前在删chrome_old.exe的时候,会忘了删相应版本号的文件夹,现在更正,一并删除。
  • v2.2.5.0:
    ·加入强插DLL选项,通过内嵌https://www.shuax.com/archives/setdll.html中的工具实现,如果勾选了“GC强插”,那么每次更新了Chrome都会将GC强插进Chrome。
    ·接入了耍下的超合金量子核心奥氏体302质子静电回旋加速节点,下载速度可以有实质性飞跃。
  • v2.2.5.5:<=当前版本
    ·群里有人报告说在CU#的上一层文件夹看到个文件夹+installer的文件夹,这是在自更新的时候路径相加的误判导致的,虽然这是个小bug不影响功能使用,但是影响了美观,故修复。
    ·在国内搞了个缓存反代服务器,启动速度跟获取速度应该会变快。

一些善意的建议:

  • 老子一更新或者解压程序就会崩溃,这是咋回事?
    贫道掐指一算,大概有2方面原因:1、系统UAC开启了,但Chrome又被安装到了C盘的非用户目录下,所以没有权限操作;2、某写比较厉害的“杀毒软件”检测到了“高危操作”所以将其拦截了。
  • 突然间,启动chrome的时候,会弹出一个警告,说“Windows 找不到文件 ‘OOXX XXOO\ChromeUpdaterOOXX XXOO.exe’ 请确认文件名是否正确”
    出现这种情况,一般是因为你之前在CU#里勾选了“随GC启动”,然后在不经意间移动了CU#的位置或者把CU#的名字改了,GC根据配置文件来运行程序,结果发现找不到,故报错。这个时候找到chrome目录下的”GreenChrome.ini”文件,打开它,然后删除“[关闭时运行]”和“[检查更新]”两个节点里错误的路径并保存,再重新在CU#里勾选一次“随GC启动”即可。
  • 如果你没有帆樯的话,还是建议同时把迅雷模块和更新器放在一起,迅雷下载模块在第一次运行的时候系统可能会弹出窗口询问是否允许迅雷访问网络,想知道为什么会弹窗的话,可以去咨询一下迅雷的客服。
  • 请一定注意,一定注意,注意!如果你比较喜欢DIY文件夹结构(例如把版本号文件夹内的东西移出来放到chrome.exe那一层),请不要使用本工具,本工具只能更新默认文件夹结构。

关于开源:

本着好玩的东西要一起玩的精神,我已经将程序核心的库开源(https://github.com/TkYu/ChromeUpdater),并且附上了一个以MVVM作为架构的简要示例程序。

这个库里包含了几乎所有的更新器的逻辑,从网络连接的检查,到更新的获取,以及调用7z、rar解压等。

有人可能要问了,我下载来的代码编译以后画风怎么跟你发布的不一样呢?

这个有2方面原因,
第一,程序所用到的UI库并没有开源,在GitHub上发实有欠妥。
第二,我已经用开源UI库实现了更新器该有的“查询”、“下载”、“解压”三大核心功能,抛砖引玉的目的已经达到。

开源版和非开源版比起来,在我看来只是加了些特技而已很油,很亮,Duang,说了那么一堆,我只想表达希望看我代码的人是能看得懂代码的人,仅此而已。

CU#功能简介:

下载好CU#之后双击运行,程序会检查网络连接,如果没有网络连接就会退出。

在完成网络检查之后,就会看到程序的主界面,如果你的系统已经安装有Chrome并将其设置为默认的html打开工具,那么程序将自动把路径填写上去,当然,如果你没有将Chrome设置为默认,将CU#复制到Chrome的所在目录中运行,也可以自动识别。如果你没有安装过chrome,可以通过右边的“浏览”按钮来选择或者新建一个目录。

选择你想安装或下载的Chrome版本及架构,点击查询,就会出现文章开头那张图的内容,点击相应的链接可以复制这个链接,这就是最基本的查询功能了。

如果你填写了一个正确的路径,那么在上方你会看到2个按钮:下载并解压(那坨蓝色的云)和仅下载(那坨白色的云),如果没有路径或者路径错误,将会只看到后者。

下载的安装文件会被放置在CU#所在目录的installer文件夹下,如果你点击了下载并解压的话,在下载完成以后会自动将文件解压到你所选择的目录中,如果你没有勾选“保留安装包”,那么在解压完成以后安装包会自动删除。如果勾选了“保留上版本”,那么会将你的老版本的chrome.exe更名为old_chrome.exe。

值得注意的是,为了避免解压chrome的时候遇到chrome正在运行而导致解压失败,请在解压之前关闭你的chrome;到这里,也就算是最基本的更新了。

在解压完成之后你会看到类似这样的界面:

see gc

如果你之前没有见过GC,可以先去GC的主页先了解一下它的功能,再考虑是否使用。

在下载完成GC以后就可以在右边勾选“静默更新”及“随GC启动”了。如果只勾选了后者,那么在检查到更新的时候你会收到如下提示信息:

YouHaveUpdate

点击Yes(是)会启动CU#,点No(否)那么将不再提示这个版本的更新。

下面再来简要说说CU#的静默更新实现原理:

在被GC唤醒之后,CU#会隐藏运行,如果没有更新会直接退出,如果有更新则会在后台静默地下载更新安装包,下载完成之后退出。在你的chrome关闭的时候,GC会再次运行CU#,这个时候CU#如果发现刚刚下载的安装包,就会自动解压并更新。整个过程完全静默。

下载:

下载地址:

本体
迅雷模块
百毒盘

请注意: 

  • 需要.NET Framework 4.5运行环境(Win8及以后的系统自带) 在这里可以下载到;
  • 如需要迅雷下载,请下载迅雷模块并将download文件夹和xldl.dll解压到CU#的所在文件夹;
  • 本程序自动加载当前的http代理配置,不用进行设置;
  • 最近gvt1.com这个域名貌似解封了,所以大部分情况下可以不用“帆樯”就能下载。

这个工具也会被和谐吗?

由于ip经常失效,域名又被巫妖王的黑水给污染了,之前有朋友搭建反带也很有可能会被和谐。本着以人为本共创和谐社会的原则,我决定去看水壶传。地址被和谐的可能性应该就没那么大了。

最近估计 嘿嘿嘿 的心情不错,4个Chrome的下载地址有3个貌似都解封了,但是不排除会被再封。至于查询嘛,咱们的   耍下大大表示他准备了一个https的查询节点,不虚!

这个界面看起来好霸气,从哪来的?

这个界面库是阿疯(ONEO)前阵子捣鼓出来的UI库,他将其命名为“二傻子”(我也不知道他为什么会取这个名字) 我正在考虑将CU#改名叫“污妖王”

仅获取下载地址的核心程序说明:

本程序已停止维护,下载地址请前往 https://api.shuax.com/tools/getchrome 获取

鉴于很多人说集成迅雷或者做UI会让程序变得很大,而且考虑到其实大家基本上都装了迅雷,所以我就做了这么个东西,仅获取地址,不加任何其他功能。(只需要.net 2.0的框架。)

GoogleUpdateFetchOnly

最后:

各位如果有好的建议可以提出,但是可能不会马上就作修改。

2.0版本其实也没什么大的里程碑式的功能,代码量也不算大,但是依然酝酿了1个多月,一来是因为博主刚换工作没多久,工作肯定是第一位,二来是平时下班回来都比较晚,研究这个的时间比较少。

如果大家有什么好的建议或者意见可以提出来,也可以前往 耍下的交流群(14724233) 交流,耍下也会在群里解答大家关于Chrome及GreenChrome的问题。

在这里也要感谢耍下以及他群里的各位朋友提出的宝贵建议;

当然也感谢所有支持我的人。



分享到:

38 Comments

  1. Posted by Cloud on

    工具还不错,界面也好看,但提几点意见:
    1、是否能够弄个代理开关,毕竟有些机友们电脑已经有了代理,可以自行决定是否开关,
    如作者你的代理失效的话,还能有另外的渠道查询,否则就是变成不可用的查询器了。
    2、打开更新器,已经获取目录的情况下,是否能够显示当前安装的版本?
    3、能否在界面上加一些使用小tips操作提示,比如我刚用的时候就不知道双击可以直接复制地址。
    4、能否出多版本,主模块版本(不包含解压和迅雷模块),和全模块版本(包含解压和迅雷模块),方便机友们选择下载?

      • 谢谢支持,部分提议会考虑加入下个版本。至于第二点,我刚刚去找了台电脑试了一下,只要填入了正确的路径并且chrome.exe是可读取状态,版本号就会显示在下方状态条上。

      • Posted by Google on

        非常感谢,耍下的失效了!追溯的这里,同意楼上的建议~

        • Posted by LookBack on

          能否告知x64位版本 查询方法,不是说您的程序使用方法。

          • Posted by 内向的洋葱 on

            英文字体很赞,载入动画很赞!

            • Pingback: Google Chrome 更新器 3.4,亲测可用

            • Posted by sdjk on

              那个脚本程序挺好用的!另外反馈两个bug:
              1,在中文输入法下输入编号“1”会无法获取下载地址
              2,怎么设置代理地址,文件名中不能输入“:”?

              • Posted by yihua_h on

                提个小小的建议,就是程序的字号太小了,看得很吃力,

                  • 你好,感谢反馈,2.1版本字体已经稍微调大,你可以看看是否还是小。

                  • Posted by 444444444 on

                    能开源吗????想学习学习,只会c# vb

                      • 文章已经更新,你可以看看。

                      • Posted by 随便 on

                        我已经关闭了uac,为什么还是提示“提示:程序无权对目录:C:\Program Files (x86)\Google\Chrome\Application 进行操作,故无法进行一键更新!”

                          • 从 windows 8开始 用户帐户的权限就缩紧了,即使你的用户在管理员组,很多操作依然需要审批。如果想彻底关闭审批,那么就要启用administrator用户,而且不能去开启管理员批准模式,只有这样才不会影响到普通程序对于系统级文件夹的访问,当然,如果这么做的话metro应用就相当于废了。个人建议还是放在其他盘符吧。

                          • Posted by 熊 on

                            不支持XP吗?一打开就报错。

                              • 这个程序是运行在.Net Framework 4.5下的,xp无法安装4.5的.net框架,换言之就是xp不能运行。xp用户可以使用文中的Shuax写的ChromeUpdater,那个可以在xp下运行。

                              • Posted by llleif on

                                我电脑装了360极速和chrome,自动检测到的是360的,卸载了360后。。。更新器直接打开就闪退了,是检测不到网络吗?

                                  • 好像是会检测到360极速,貌似是因为它的进程名里也带了chrome的缘故,我刚刚已经更新了一下,让它强匹配。

                                  • Posted by Bangerz on

                                    请问chomerupdaterMVVM已停止工作是什么问题????????

                                      • 这种问题一般很难定位,要么可能是系统没有安装相应的运行库,要么就是在运行的时候发生了非托管的错误,可以尝试一下在win7以后的系统上安装相应的运行库,然后再试试。

                                          • Posted by Bangerz on

                                            谢谢,用以前的版本能用。。就这个最新的版本不能用

                                        • Posted by ting on

                                          希望能增加一个设置默认chrome路径
                                          因为我目前有多个版本,我想把其它一个设置为默认的.但是每次打开cu#时,提示我的默认chrome是另外一个版本.我想用最新的做默认版本.但是发现无法获取.
                                          cu#能获取默认路径.肯定也有办法设置为默认版本的吧?

                                            • Posted by ting on

                                              不过我发现用注册表方式就可以注册成功,目标是把这个设置为默认打开.
                                              Windows Registry Editor Version 5.00

                                              [HKEY_USERS\S-1-5-21-1189282969-889249992-3764713107-500\Software\Classes\ChromeHTML\shell\open\command]
                                              @=”\”C:\\Program Files (x86)\\Google Chrome\\51.0.2704.103\\chrome.exe\” — \”%1\””

                                              如果能在软件中这样注入就更方便了,免得我又要另外弄一个reg文件.

                                                • 聪明,默认就是从这里读取的

                                              • Posted by BRO.BIRD on

                                                狂闪更新,闪退又重启,是什么鬼……完全用不了啊

                                                  • 感谢反馈,是我忘了把exe的版本跟着改上去导致的,下次一定注意 🙂

                                                  • Posted by magsom on

                                                    今天运行ChromeUpdaterSharp发现会无限反复自动更新自己……死循环了……希望能不要强制自动更新

                                                      • 哈哈,抱歉我的错,服务器版本号提上去了但是exe的版本号没跟着更新,我已经把版本号先退回来了。

                                                      • Posted by BRO.BIRD on

                                                        还是要膜拜一下大佬~!

                                                        • Posted by zif68 on

                                                          以前可以自动更新。现在不行了
                                                          还有自己动手用 ChromeUpdater这个下载安装更新新版本。

                                                            • 怎么个不行法,提示错误还是?

                                                            • Posted by 时空断裂 on

                                                              为什么不能选择随gc启动呢?

                                                                • 选择的那个目录下要有gc的dll才行哦,没有的话可以在更新器里面下载一个

                                                                • Posted by libragilmer on

                                                                  1、你好,程序界面“观摩学习”里面的“安装版下载(需翻腔)”,默认下载下来的 “ChromeStandaloneSetup64.exe” 会自动把自己设置为默认浏览器。
                                                                  在Chrome离线完整安装包的官方下载页面,手动点击下载时,可以选择勾选是否设置为默认浏览器。
                                                                  通过分析,是否勾选设置为默认浏览器,下载得到的 “ChromeStandaloneSetup64.exe” 并不同。分析下载链接发现,二者的下载链接不同,是否勾选默认浏览器,得到的下载链接的区别在于链接中有 “defaultbrowser” 这样的字符。
                                                                  建议,把设置默认浏览器的下载地址和不设置默认浏览器的下载地址都收录到“观摩学习”里面。
                                                                  Chrome离线完整安装包的官方下载页面:https://www.google.com/intl/zh-CN/chrome/browser/desktop/index.html?standalone=1
                                                                  2、建议出一个集成 迅雷模块 和 解压模块 的完整包下载。

                                                                    • 看了一下,现在在有些平台下访问下载页,设为默认浏览器的选项会被直接隐藏,并且defaultbrowser会被默认加上去,我目前还没找到一个比较确定的规律。

                                                                    • Posted by dianso on

                                                                      很实用的工具,赞!

                                                                      • Pingback: So 推荐一个Chrome更新工具无需梯子 - 小败部落格


                                                                      发表评论

                                                                      电子邮件地址不会被公开。 必填项已用*标注

                                                                      注意: 评论者允许使用'@user空格'的方式将自己的评论通知另外评论者。例如, ABC是本文的评论者之一,则使用'@ABC '(不包括单引号)将会自动将您的评论发送给ABC。使用'@all ',将会将评论发送给之前所有其它评论者。请务必注意user必须和评论者名相匹配(大小写一致)。

                                                                      无觅相关文章插件,快速提升流量