如何使用vc_redist引导程序调试问题?

问题描述

我有一个Visual Studio安装程序项目(一个vdproj),该项目不会安装VC可再发行组件。我不知道为什么。

我正在使用Visual Studio 2019的最新更新以及安装程序项目扩展名。这是我的必备设置:

Prerequisite Settings

在安装时,我收到一条错误消息<html> <body> <link href="https://fonts.googleapis.com/css2?family=Roboto:ital@1&amp;display=swap" rel="stylesheet"> <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.7.0/css/font-awesome.min.css"> <link href="https://fonts.googleapis.com/css2?family=Open+Sans&amp;display=swap" rel="stylesheet"> <link href="Stylesheetlol.css" rel="stylesheet"> <!--—Navbar and logo—--> <div class="topnav" id="myTopnav"> <i class="logo"><img id="mylogo" src="https://t4.ftcdn.net/jpg/02/77/45/89/240_F_277458983_6C5chZcmha2MymgJySMsiqIxJvzxgmVd.jpg" style="height:45px;float:right;border-radius: 3px;-webkit-user-drag: none;"></i> <a href="#home" class="active">Home</a> <a href="#news">News</a> <a href="#contact">Contact</a> <a href="#about">About</a> <a href="javascript:void(0);" class="icon" onclick="myFunction()"> <i class="fa fa-bars"></i> </a> </div>。我在C:\ Program Files(x86)\ Microsoft SDKs \ ClickOnce Bootstrapper \ Packages \ vcredist_x64中检查了引导程序,发现在那里找到的URL(https://aka.ms/vs/16/release/14.26.55555/vc_redist.x64.exe重定向到了Microsoft主主页并下载HTML而不是可执行文件。因此,我将URL更改为https://aka.ms/vs/16/release/vc_redist.x64.exe,然后更改为https://aka.ms/vs/16/release/14.27.29016/vc_redist.x64.exe。当您使用Web浏览器访问这两个URL时,这两个URL都会下载VC_redist.x64.exe的副本,但是它们都不修复安装程序。

更改URL后,我看到的唯一区别是,在原始URL下,我在temp安装文件夹中得到了一个名为vcredist_x64 \ vc_redist.x64.exe的文件(但它是无效的,充满了HTML),但有两个新文件vcredist_x64文件夹的URL为空。

您知道我需要做什么才能使它正常工作吗?

解决方法

我找到了解决方案。我需要更改URL 公钥。以下是您将来为解决此类问题所应遵循的步骤:

  1. 找到URL仍可用的版本。当前可从以下位置获取最新版本:https://aka.ms/vs/16/release/vc_redist.x64.exe。该文件的特定版本URL当前为http://aka.ms/vs/16/release/14.27.29016/vc_redist.x64.exe
  2. 记下版本号。如果您还不了解它,只需将鼠标悬停在文件浏览器中的已下载文件上即可。
  3. 找到公钥。我从this问题的答案中学到了如何做到这一点。通过右键单击vc_redist.x64.exe,选择 properties Digital Signatures ,然后双击 sha1 条目,可以找到密钥。 。点击查看证书,然后点击详细信息,然后点击公钥。复制文本框中显示的值。
  4. 从复制的公钥中删除所有空格。 vc_redist.x64.exe的v14.27.29016的公共密钥为: 3082010a02820101009208daf213e09ec32da6e2dfdaef8c19ec2f584f0bf53f20b806f33f91258f36cf27d114def85bd87d4f84f6e7f4b7b9d8940cc78cafa99627f60610fe36076121443cb15c163b7f6d8ef4111e33f6fffbd2bc87e69a446830bd488678ecf64422650cd8443618469f71490626470423939865f3f53b4603a24038ad547694ec14f5308f7695f651b882030d805dbd7b5b7256093153b0a99b6fd0ef73402adeb7a47e7d148668335f104a5c20b2fe0fb455dcce2e6891384dae8a00e76f57e315689a7561715364f2ada631cee9df691d03d9886ecd742e906e74469ac6b8f2e350adbe807e62ca0c8d4ba77d56328813697e6d65ff82653f4f4aebe33822cd0203010001
  5. 以管理员身份在文本编辑器中打开C:\Program Files (x86)\Microsoft SDKs\ClickOnce Bootstrapper\Packages\vcredist_x64\product.xml
  6. 用在步骤4中准备的密钥替换PublicKey的值。
  7. BypassIf元素中,将Value替换为您在步骤2中记下的版本。保存并关闭文件。
  8. 以管理员身份在文本编辑器中打开C:\Program Files (x86)\Microsoft SDKs\ClickOnce Bootstrapper\Packages\vcredist_x64\en\package.xml
  9. 用步骤1中的URL替换VCRedistExe。您可以使用通用URL或特定于版本的URL。它们都有缺点。保存并关闭文件。
  10. 重建安装程序。

您可能需要针对您的环境进行调整。

关于URL的选择,我怀疑它们都不会永远起作用。如果您使用特定于版本的URL,则该版本可能会消失(这就是我们首先要弄乱它的全部原因)。如果您使用与版本无关的网址,那么当新版本发布时,产品密钥可能会不匹配。

很不幸,Microsoft通过删除旧的Redist软件包来破坏现有安装程序,并且没有提供开箱即用的新安装程序所需的更新。