我一直在尝试为一个exe文件做一个安装程序,但是我似乎不能让它工作。无论何时运行setup.exe,它都会出错并显示以下消息
安装程序检测到C:\Usersname\AppData\Local\Temp\VSD4F7F.tmp\vcredist_x64\vc_redist.x64.exe在最初发布后已更改
我试图让它从与我的PC相同的位置下载,但这也不起作用,因为当它构建解决方案时,它错误地说找不到文件。我将正确的文件放在Packages文件夹中,但它仍然不起作用。
作为参考,我使用64位PC进行开发,exe是为64位设计的,而我正在测试的clean PC是64位。我也在使用Windows 10和Visual Studio 2019。
发布于 2020-10-06 15:17:47
我也有同样的问题,我找到了一种解决方法:
似乎安装程序在创建引导程序( Bootstrapper\Packages\vcredist_x64\product.xml. )时会嵌入C:\Program Files (x86)\Microsoft \ClickOnce bootstrapper中的信息更准确地说,它似乎在设置中嵌入了vc++可再发行文件的公钥。
当用户运行安装程序时,引导程序从微软的网站(在我的例子中是https://aka.ms/vs/16/release/vc_redist.x64.exe)下载vcredist并检查数字签名。如果下载文件的公钥与安装程序中嵌入的公钥不匹配,则会出现错误。
现在,我设法(某种程度上)通过手动编辑C:\Program Files (x86)\Microsoft \ClickOnce vcredist将下载的vcredist公钥放入Bootstrapper\Packages\vcredist_x64\product.xml文件并重新构建安装程序项目来修复它。
但是,如果Microsoft再次更改vcredist上的签名,我的设置将再次开始抛出错误。
它快把我逼疯了。我正在考虑: a)从我的安装程序中删除先决条件,并指示用户自己安装vcredist,或者b)在我自己的网站上托管vcredist (并选中“从与我的应用程序相同的位置下载先决条件”)
这两种解决方案都有很大的缺点,然而,每次微软发布“新的”vcredist都不能更新安装程序。
https://stackoverflow.com/questions/64171845
复制相似问题