开发者问题收集

如何使用脚本下载 Chrome 独立可执行文件而不损坏文件?

2020-11-25
14291

几周前,我使用curl制作了一个批处理脚本,用于下载所有我可以找到的Chrome可执行文件,以防万一Chrome被更新弄乱了。

运行后立即脚本,我没有检查可执行文件是否正常运行,因为我认为它们不会有问题。因此,在让脚本堆积了Chrome版本之后,就在几天前,当我尝试安装较旧版本的Chrome时,我感到非常惊讶。脚本下载的文件都没有工作。每次我尝试运行它们时,都会得到“未知安装程序错误”。

”在此处输入图像说明“

这是脚本:

492920670

让我对为什么不起作用的curios,所以我访问了 https://dl.google.com/chrome/install/chromestandalonesetup64.exe 在Chrome中,这使我成为了一个完美工作的Exe。奇怪的是,两者都通过Chrome下载和Curl具有相同的SHA 512 HASH。 当我感到困惑时,我尝试了WGET和PowerShell脚本。 “。

感谢@john Seerden,然后我使用了他的powershell script ,下载了一个google googlechromestaloneenterprise6444444408020"> script .msi工作可执行。 看到这一点,我用 this 帖子,但我不使用Charles,而是使用Chrome Dev工具来获取Chrome Dev工具来获取该工具网络选项卡中的卷曲请求。这也不起作用,同样的错误。

是我可以通过脚本下载完美运行chrome operutables的任何方法,还是有任何方法可以修复损坏的可执行文件? 我宁愿不要求助于无头铬。

2个回答
$Path = $env:TEMP; $Installer = "chrome_installer.exe"; Invoke-WebRequest "http://dl.google.com/chrome/install/375.126/chrome_installer.exe" -OutFile $Path\$Installer; Start-Process -FilePath $Path\$Installer -Args "/silent /install" -Verb RunAs -Wait; Remove-Item $Path\$Installer

该过程完成后,您将在桌面上看到“Google Chrome”图标。点击并运行它

BMW
2022-03-10

我使用 WinMerge 比较了这两个独立的 Chrome exes,版本分别为 86.0.4240.111 - 64 位和 87.0.4280.66 - 64 位,ChromeStandaloneSetup64_28-10-2020_14.24.03_valid_Copy_old_version.exe(从 https://dl.google.com/chrome/install/ChromeStandaloneSetup64.exe 下载 - exe 损坏,即 exe 中缺少下载 URL 标签)和 ChromeStandaloneSetup64_valid_Copy_latest_version.exe(从 https://www.google.com/chrome/?standalone=1&platform=win64 - 有效的 exe,又名包含下载 URL 标签的 exe)。

为了进行比较,这里有一个带标签的下载 URL:

https://dl.google.com/tag/s/appguid%3D%7B8A69D345-D564-463C-AFF1-A69D9E530F96%7D%26iid%3D%7B04A7785F-B8A2-B4AA-7A45-17861EB0DE70%7D%26lang%3Dro%26browser%3D4%26usagestats%3D1%26appname%3DGoogle%2520Chrome%26needsadmin%3Dprefers%26ap%3Dx64-stable-statsdef_1%26installdataindex%3Ddefaultbrowser/chrome/install/ChromeStandaloneSetup64.exe

以下是未标记的下载网址:

https://dl.google.com/chrome/install/ChromeStandaloneSetup64.exe

在 WinMerge 中,我在 ChromeStandaloneSetup64_valid_Copy_latest_version.exe(右侧文件)中搜索“&lang=ro&browser”,然后转到“编辑”>“选择行差异”(F4),再转到“合并”>“复制到左侧”。接下来,我转到“文件”>“另存为”>“将左侧另存为...

在此处输入图片描述

然后我在全新的 Windows 7 虚拟机 (VM) 中运行生成的 exe(修补后的 exe,版本为 86.0.4240.111 64 位),这次它安装正确。为了测试目的,我关闭了网络,然后,当转到 Chrome 中的 3 点菜单 > 帮助 > 关于 Chrome 时,确实,Chrome 是旧版本。之后,我打开网络,它已更新到最新版本 87.0.4280.66 64 位,运行没有问题。

尽管 ChromeStandaloneSetup64_valid_Copy_latest_version.exe(有效 exe)带有区域标识符备用数据流 (ADS),但与损坏的 exe 不同,损坏的 exe 产生的 exe 缺少 ADS,它在 VM 中运行良好。关于 ADS,我下载了两次相同的有效 Chrome exe(87.0.4280.66 64 位),我注意到 ADS 具有完全相同的值。

在此处输入图片说明

我还做了额外的测试,我注意到如果生成的 exe 缺少 appguid 和 iid 字段,它将无法安装。

我做的另一件事是弄乱了相应字段中的值,因此我使 appguid 和 iid 字段看起来像这样:

appguid={00000000-0000-0000-0000-0000-00000000000}&iid={00000000-0000-0000-0000-0000000000000

,结果是使可执行文件无法安装,出现错误代码:0x80070057。

完成 exe 编辑后,我开始处理 URL。

至于这个给定的 URL,来自 https://www.google.com/chrome/?standalone=1&platform=win64 (有效 exe):

https://dl.google.com/tag/s/appguid%3D%7B8A69D345-D564-463C-AFF1-A69D9E530F96%7D%26iid%3D%7B04A7785F-B8A2-B4AA-7A45-17861EB0DE70%7D%26lang%3Dro%26browser%3D4%26usagestats%3D1%26appname%3DGoogle%2520Chrome%26needsadmin%3Dprefers%26ap%3Dx64-stable-statsdef_1%26installdataindex%3Ddefaultbrowser/chrome/install/ChromeStandaloneSetup64.exe

我精简了 appguid 和 iid,得到:

https://dl.google.com/tag/s/lang%3Dro%26browser%3D4%26usagestats%3D1%26appname%3DGoogle%2520Chrome%26needsadmin%3Dprefers%26ap%3Dx64-stable-statsdef_1%26installdataindex%3Ddefaultbrowser/chrome/install/ChromeStandaloneSetup64.exe

,这导致 exe 损坏,出现与上面相同的错误代码,错误代码:0x80070057。

接下来我要做的是去 https://codebeautify.org/generate-random-data-from-regexp 并生成一个随机的 appguid 和 iid(使用十六进制值,因为我注意到它在那些字段中使用)使用以下模式:

[0-9A-F]{8}-[0-9A-F]{4}-[0-9A-F]{4}-[0-9A-F]{4}-[0-9A-F]{12

,然后使用两个不同的数字:

038C42B4-AF87-AD38-990A-4384A7E29E04 - 用于 appguid

EC7C4A9D-76CB-FBA7-D1C2-70EB689DA8F4 - 用于 iid

,我得到了这个链接:

https://dl.google.com/tag/s/appguid%3D%7B038C42B4-AF87-AD38-990A-4384A7E29E04%7D%26iid%3D%7BEC7C4A9D-76CB-FBA7-D1C2-70EB689DA8F4%7D%26lang%3Dro%26browser%3D4%26usagestats%3D1%26appname%3DGoogle%2520Chrome%26needsadmin%3Dprefers%26ap%3Dx64-stable-statsdef_1%26installdataindex%3Ddefaultbrowser/chrome/install/ChromeStandaloneSetup64.exe

,在安装过程中,出现“无法连接到互联网。如果您使用防火墙,请将 GoogleUpdate.exe 列入白名单”错误。

在此处输入图片描述

因此,由于 appguid 和 iid 来自更高版本的 Chrome(appguid 和 iid 取自 87.0.4280.66 并插入到 86.0.4240.111),我假设,只有当 exe 本身包含的 appguid 和 iid 通过安装过程中的计算产生与 exe 中存储的值或安装过程中计算的值匹配的结果时,安装才会成功完成。我之所以这么说,是因为当我安装由损坏的 exe 生成的有效独立 Chrome exe 时,网络已关闭,并且该系统上没有安装 Chrome。或者这两个值可能以某种方式与操作系统相关联。

总之,我想我最终会使用这些 appguid 和 iid 修改批处理文件中的 URL,除非我决定仔细查看即将发布的 Chrome 版本的 URL,以更好地了解所有这些是如何工作的。

这些:

8A69D345-D564-463C-AFF1-A69D9E530F96 - 用于 appguid

04A7785F-B8A2-B4AA-7A45-17861EB0DE70 - 用于 iid

rd51
2020-11-27