繁体   English   中英

如何将VC ++ 2015可再发行的软件包与ClickOnce(.NET)应用程序捆绑在一起?

[英]How can I bundle the VC++ 2015 redistributable with my ClickOnce (.NET) application?

我有一个通过Microsoft ClickOnce部署的.NET Framework 4.5上运行的C#应用​​程序。 我还利用了Microsoft DSD的一个小工具DComPerm.exe,这是一个我必须单独编译的C ++应用程序。 我的主应用程序使用Process.Start()访问此可执行文件。

当我第一次尝试在客户端计算机上运行此程序时,我收到一条错误消息,指出在应用程序尝试调用DComPerm.exe时缺少VCRUNTIME140.dll。

VCRUNTIME140.dll丢失

这是有道理的...由于该程序是用C ++编译的,因此需要Visual C ++ 2015 Redistributable软件包,该软件包尚未安装在客户端计算机上。 我想让它尽可能轻松,所以我希望可以将VC ++ 2015 Redist与ClickOnce应用程序捆绑在一起。 在项目属性>“发布”选项卡下,有一个“先决条件”按钮,它使我可以指定应用程序应捆绑可再发行软件包。

“发布”选项卡上的先决条件

从理论上讲,这听起来不错,但是却行不通。 现在,当我尝试在客户端计算机上安装ClickOnce应用程序时,它不起作用。 安装失败,将我指向一个日志文件,其中包含以下相关信息:

“ Visual C ++“ 14”运行时库(x86)” RunCheck结果:需要安装

接受安装组件“ Visual C ++“ 14”运行时库(x86)”。

将文件复制到临时目录“ C:\\ Users \\ Owner \\ AppData \\ Local \\ Temp \\ VSD3872.tmp \\”

将文件下载到“ C:\\ Users \\ Owner \\ AppData \\ Local \\ Temp \\ VSD3872.tmp \\”

(8/4/2016 12:57:48 PM)从' http://go.microsoft.com/fwlink/?LinkID=800028&clcid=0x409 '将'vcredist_x86 \\ vcredist_x86.exe'下载到'C:\\ Users \\ Owner \\ AppData \\ Local \\ Temp \\ VSD3872.tmp \\'

下载完成于2016/8/4下午12:57:49

下载失败,出现HRESULT = -2146697208

该消息清楚地说明了问题所在:它试图用来下载redist软件包的链接已消失。 只是...我不确定如何告诉它找到正确的链接。 我很惊讶它无法自动找到它,因为这似乎是Visual Studio的错误。 某些搜索发现,正确的链接其实就是这一个 ,但是这不是什么ClickOnce是解决。 我还看到,通过选中此框,这是对csproj文件的相应XML更新:

<BootstrapperPackage Include="Microsoft.Visual.C++.14.0.x86">
  <Visible>False</Visible>
  <ProductName>Visual C++ "14" Runtime Libraries %28x86%29</ProductName>
  <Install>true</Install>
</BootstrapperPackage>

我可以使用一些XML标记来明确指定位置吗? 还是我该如何解决? 如何在不中断应用程序的情况下捆绑可再分发文件?

我几乎有完全相同的问题。 您询问如何指定ClickOnce解析的下载位置。 为此,请打开

C:\Program Files (x86)\Microsoft Visual Studio 14.0\SDK\Bootstrapper\Packages\vcredist_x86\en\package.xml

并使用Name="https://go.microsoft.com/fwlink/..."将属性编辑为正确的URL。 顺便说一句,感谢您找到正确的下载链接,直到看到这篇文章,我才能够找到它。

完成此操作后,将VC ++ Redis正确安装在客户端计算机上。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM