Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/68.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Visual studio 安装程序检测到vcredist_x64\vc_redist.x64.exe自最初发布以来已被更改_Visual Studio - Fatal编程技术网

Visual studio 安装程序检测到vcredist_x64\vc_redist.x64.exe自最初发布以来已被更改

Visual studio 安装程序检测到vcredist_x64\vc_redist.x64.exe自最初发布以来已被更改,visual-studio,Visual Studio,我一直在尝试为exe文件制作一个安装程序,但我似乎无法让它工作。无论何时运行setup.exe,都会显示错误消息 安装程序检测到C:\Users[name]\AppData\Local\Temp\VSD4F7F.tmp\vcredist\u x64\vc\u redist.x64.exe自最初发布以来已被更改 我试图让它从与我的电脑相同的位置下载,但这也不能像它在构建解决方案时那样工作,因为它出错了,说找不到文件。我把正确的文件放在Packages文件夹中,但它仍然不起作用 作为参考,我正在使用

我一直在尝试为exe文件制作一个安装程序,但我似乎无法让它工作。无论何时运行setup.exe,都会显示错误消息

安装程序检测到C:\Users[name]\AppData\Local\Temp\VSD4F7F.tmp\vcredist\u x64\vc\u redist.x64.exe自最初发布以来已被更改

我试图让它从与我的电脑相同的位置下载,但这也不能像它在构建解决方案时那样工作,因为它出错了,说找不到文件。我把正确的文件放在Packages文件夹中,但它仍然不起作用


作为参考,我正在使用64位PC进行开发,exe是为64位设计的,而我正在测试的干净PC是64位的。我也在使用Windows 10和Visual Studio 2019。

我也有同样的问题,我找到了一种解决方法:

似乎当安装程序创建引导程序(setup.exe)时,它会嵌入来自C:\Program Files(x86)\Microsoft SDK\ClickOnce bootstrapper\Packages\vcredist\U x64\product.xml的信息。更准确地说,它似乎在设置中嵌入了vc++可再发行版本的公钥

当用户运行安装程序时,bootstrapper从Microsoft的web(在我的例子中)下载vcredist并检查数字签名。如果下载文件的公钥与安装程序中嵌入的公钥不匹配,则会出现错误

现在,我设法通过手动编辑C:\Program Files(x86)\Microsoft SDK\ClickOnce Bootstrapper\Packages\vcredist\u x64\product.xml将下载的vcredist公钥放入xml文件并重建安装程序项目来修复它(某种程度上)

但是,如果Microsoft再次更改vcredist上的签名,我的安装程序将再次开始抛出错误

它快把我逼疯了。我正在考虑: a) 从我的安装程序中删除先决条件并指示用户安装vcredist 他们自己 或 b) 在我自己的网站上托管vcredist(并选中“从与我的应用程序相同的位置下载必备软件”)


这两种解决方案都有明显的缺点,但每次Microsoft发布“新”时都会更新安装程序“vcredist也不是一个选项

这应该会出错,Microsoft不再维护引导程序包。您可能正在使用的最后一个版本尝试部署VS2015版本,但得到的是已更改的VS2019版本。除此之外,考虑一下你根本不应该使用这个包裹。它面向最终用户,仅适用于ClickOnce部署。只需将运行时DLL与安装程序一起复制,最好是复制到与.exe相同的目录。通常只有vcruntime140.dll和msvcp140.dll,调试>窗口>模块以确保。