Microsoft ClickOnce 経由でデプロイされた .NET Framework 4.5 で実行されている C# アプリケーションがあります。また、Microsoft SDK の DComPerm.exe という小さなユーティリティも利用しています。これは、個別にコンパイルする必要のある C++ アプリケーションです。私の主なアプリケーションはProcess.Start()
、この実行可能ファイルにアクセスするために使用します。
これをクライアント マシンで初めて実行しようとしたとき、アプリケーションが DComPerm.exe を呼び出そうとしたときに VCRUNTIME140.dll が見つからないというエラー メッセージが表示されました。
これは理にかなっています...そのプログラムはC++でコンパイルされているため、クライアントマシンにインストールされていないVisual C++ 2015再頒布可能パッケージが必要です。これをできるだけ簡単にしたいので、VC++ 2015 Redist を ClickOnce アプリケーションにバンドルできることを望んでいました。プロジェクト プロパティ > [発行] タブの下に、[前提条件] のボタンがあり、アプリケーションが再頒布可能パッケージをバンドルする必要があることを指定できます。
理論的には素晴らしいように思えますが、うまくいきません。ClickOnce アプリケーションをクライアント マシンにインストールしようとしても、うまくいきません。インストールが失敗し、次の関連情報を含むログ ファイルが表示されます。
「Visual C++ "14" ランタイム ライブラリ (x86)」RunCheck 結果: インストールが必要
コンポーネント「Visual C++ "14" Runtime Libraries (x86)」のインストールが承認されました。
ファイルを一時ディレクトリ「C:\Users\Owner\AppData\Local\Temp\VSD3872.tmp\」にコピーしています
ファイルを「C:\Users\Owner\AppData\Local\Temp\VSD3872.tmp\」にダウンロードしています
(8/4/2016 12:57:48 PM) 「vcredist_x86\vcredist_x86.exe」を「http://go.microsoft.com/fwlink/?LinkID=800028&clcid=0x409」から「C:\Users\Owner」にダウンロードしています\AppData\Local\Temp\VSD3872.tmp\'
2016 年 8 月 4 日 12:57:49 PM にダウンロードが完了しました
HRESULT=-2146697208 でダウンロードに失敗しました
そして、そのメッセージは、問題が何であるかを明確に示しています。再配布パッケージをダウンロードするために使用しようとしているリンクが機能していません。ただ...正しいリンクを見つけるように指示する方法がわかりません。Visual Studio のバグのように思われるため、自動的に見つけられないことに非常に驚いています。いくつかの検索により、正しいリンクは実際にはthis oneであることが明らかになりましたが、それは 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 タグはありますか? または、他にどうすればこれを修正できますか? アプリケーションを壊さずに再配布可能ファイルをバンドルするにはどうすればよいですか?