0

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

我正在使用带有安装程序项目扩展的 Visual Studio 2019 的最新更新。这是我的先决条件设置:

先决条件设置

在安装时,我收到一条错误消息vc_redist.x64.exe has changed since it was initially published。我在 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 都会下载 VC_redist.x64.exe 的副本,但它们都不能修复安装程序。

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

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

4

1 回答 1

0

我找到了解决方案。我需要更改 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. 找到公钥。我从这个问题的答案中学会了如何做到这一点。您可以通过右键单击 vc_redist.x64.exe 找到密钥,选择propertiesDigital 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. 将 的值替换为PublicKey您在步骤 4 中准备的键。
  7. BypassIf元素中,将 替换为Value您在步骤 2 中记下的版本。保存并关闭文件。
  8. C:\Program Files (x86)\Microsoft SDKs\ClickOnce Bootstrapper\Packages\vcredist_x64\en\package.xml以管理员身份在文本编辑器中打开。
  9. 替换VCRedistExe为步骤 1 中的 URL。您可以使用通用 URL 或特定于版本的 URL。他们都有缺点。保存并关闭文件。
  10. 重建您的安装程序。

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

关于 URL 的选择,我怀疑两者都不会永远有效。如果您使用特定于版本的 URL,则该版本可能会消失(这就是我们首先需要解决这个问题的全部原因)。如果您使用与版本无关的 URL,那么当新版本出现时,产品密钥可能会不匹配。

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

于 2020-08-17T20:03:13.387 回答