Visual Studio 2017 で Visual C++ “14” ランタイム ライブラリをインストーラーに含めた場合に発生する問題について

こんにちは、Visual Studio サポート チームです。 今回は Microsoft Visual Studio 2017 に含まれる Visual C++ “14” ランタイム ライブラリを必須コンポーネントに含めてインストーラーを作成する場合に発生する可能性がある問題と対処方法をご案内いたします。 <2017 年 7 月 4 日追記> Product.xml に指定する Product 属性の内容につきましては、Visual Studio 2017 RTMに対する値でのご案内となっております。 ダウンロード ページから入手していただける最新の Visual C++ 2017 Redistributable のバージョンに対する Product 属性の値につきましては、現在正しい値を確認中です。 確認の結果が得られ次第この記事にてご案内いたしますので、大変恐れ入りますが今しばらくお待ちください。 <2017 年 7 月11 日修正> Visual C++ “14” ランタイム ライブラリのインストーラーの入手先に関する記述を修正しました。   現象 a) [アプリケーションと同じ場所から必須コンポーネントをダウンロードする] を指定して Visual C++…


Visual Studio 2012 以降のバージョンにおけるセットアップ プロジェクトについて

こんにちは、Visual Studio サポート チームです。 今回は Visual Studio 2012 以降のバージョンにおけるセットアップ プロジェクトの扱いと、セットアップ プロジェクトの作成にご利用いただける拡張機能についてご案内します。   Visual Studio を使用して Windows インストーラー形式のインストーラー パッケージを開発する方法として、Visual Studio 2010 以前のバージョンではセットアップ プロジェクトが用意されていましたが、Visual Studio 2012 以降ではセットアップ プロジェクトは提供されておらず、多くのお客様では InstallShield などのサードパーティ製品をご利用いただいています。 しかしながら、従来のようにセットアップ プロジェクトを開発されたいというお客様からのご要望も多いことから、Visual Studio 2013 以降を対象として、Visual Studio 2010 以前のセットアップ プロジェクトと同等の機能を提供する Visual Studio 拡張機能が以下のとおり公開されています。   Microsoft Visual Studio 2013 Installer Projects https://marketplace.visualstudio.com/items?itemName=UnniRavindranathan-MSFT.MicrosoftVisualStudio2013InstallerProjects Microsoft Visual Studio 2015 Installer Projects https://marketplace.visualstudio.com/items?itemName=VisualStudioProductTeam.MicrosoftVisualStudio2015InstallerProjects…


Visual C++ 2010 の setlocale 関数の問題について

こんにちは、Visual Studio サポート チームです。 今回は、Visual C++ 2010 で確認されている setlocale 関数の問題と対処方法についてご案内します。なお、本問題は Visual C++ 2012 以降のバージョンでは修正されています。   現象 Visual C++ 2010 の setlocale 関数において、以下のような現象が発生する場合があります。   a) 引数に不正なロケール (例 : “Japanese_Japan.9326389”) を指定しても、NULL ポインターが返却されない b) 上記 a) の問題が発生した状態から、正しいロケールを指定して setlocale 関数を実行しても、処理に失敗して NULL ポインターが返却される   原因 本現象は Visual C++ 2010 の setlocale 関数の不具合に起因して発生しています。製品の不具合でご迷惑をおかけしておりますこと深くお詫び申し上げます。本不具合は Visual C++ 2012 以降のバージョンの製品では修正されています。   対処策 a) の問題については、正しいロケールを指定するようアプリケーションを修正してください。ロケールの詳細については以下のドキュメントをご参照ください。…


Visual C++ の同時実行ランタイムを利用するアプリケーションがハングアップする問題について

こんにちは、Visual Studio サポート チームです。 今回は、Visual C++ で提供されている同時実行ランタイム (ConcRT : Concurrency Runtime) で確認されている問題と対処方法についてご案内します。この問題は Visual C++ 2010、2012、2013 で発生する可能性がありますが、Visual C++ 2015 以降では発生しません。   現象 ConcRT を使用するアプリケーションで、EnterCriticalSection 関数など、Win32 の同期オブジェクトを直接使用する処理を行うと、スレッド間でデッドロックが発生して、プログラムがハングアップする場合があります。   原因 Visual C++ 2013 以前の ConcRT では、Win32 の同期オブジェクトを直接利用しない形で内部の同期処理を実現していました。 この関係で、アプリケーション側のコードで Win32 の同期オブジェクトを直接使用すると、ConcRT 内の同期処理と アプリケーションで実装した同期処理の間でデッドロックが発生する場合があります。   対処方法 Visual C++ 2015 以降の ConcRT では同期処理の実装が見直され、Win32 の同期オブジェクトを直接的に利用する方法で統一されているため、この問題は発生しません。このため、可能であれば Visual C++ 2015 以降のバージョンへのバージョン アップをご検討ください。 バージョン アップを行うことが難しい場合は、Win32…