Visual C++ 2015 以降のバージョンの再頒布可能パッケージにおけるインストールの前提条件

こんにちは、Visual Studio サポート チームです。 今回は、最近多くのお客様からお問い合わせをいただいている Visual C++ 再頒布可能パッケージのインストールに必要な前提条件についてご案内します。   以前のブログ記事でもご案内していますが、Visual C++ 2015 以降のバージョンの C ランタイム (CRT) は、汎用 C ランタイム (UCRT : Universal C Runtime) とそれ以外のランタイムで構成されています。Visual C++ 2015 再頒布可能パッケージをインストールすると、これらのランタイムがすべてインストールされます。 ここで、UCRT は Windows 10 以降の OS は既定でインストールされているものになりますが、Windows 10 より前の OS にインストールするためには、対象の環境に前提となる KB が適用されている必要があります。 このため、例えば、新規にセットアップしたばかりの Windows 8.1 に Visual C++ 2015 再頒布可能パッケージをインストールしようとすると、UCRT の前提条件となる KB が適用されていないために、インストール エラーとなることが想定されます。 Visual C++…


ClickOnce アプリケーションのインストールや更新の後に発生する場合があるアプリケーション起動時のエラーについて

こんにちは、Visual Studio サポート チームです。 今回は、ClickOnce アプリケーションのインストールや更新後に発生する場合がある、アプリケーション起動時のエラーとその対処方法についてご案内します。 当ブログの下記の記事でも ClickOnce アプリケーションの起動時のエラーについて取り扱っていますが、今回は、この他によくお問い合わせをいただく既知の問題についてご案内しています。 ClickOnce 起動時のエラーについて https://blogs.msdn.microsoft.com/jpvsblog/2011/08/05/clickonce/   現象 ClickOnce アプリケーションをインストールした場合や更新した場合に、以下のようなエラー ダイアログが表示され、アプリケーションの起動に失敗する場合があります。 “詳細” ボタンを押下すると、エラーの状況に応じて以下のようなエラーの詳細が記録されている場合があります。 ※ 当記事の原因に該当する場合、多くのケースではスタック トレース上に ComponentStore.ActivateApplication が現れますが、スタック トレースの内容など詳細は .NET Framework のバージョンにより異なる可能性がございます。また、代表的なエラー メッセージを挙げており、すべてのパターンを網羅するものではございませんので予めご了承ください。 必要なレジストリ キーが見つからなかった場合 この操作中に次のエラーが検出されました。 * [2018/02/19 14:35:33] System.ArgumentException – 値が有効な範囲にありません。 – ソース:System.Deployment – スタック トレース: 場所 System.Deployment.Application.NativeMethods.CorLaunchApplication 場所 System.Deployment.Application.ComponentStore.ActivateApplication 場所 System.Deployment.Application.SubscriptionStore.ActivateApplication 場所 System.Deployment.Application.ApplicationActivator.Activate 場所 System.Deployment.Application.ApplicationActivator.PerformDeploymentActivation 場所 System.Deployment.Application.ApplicationActivator.ActivateDeploymentWorker…


OLE パッケージ オブジェクトを含むドキュメントを開くと GDI オブジェクトが増加する

こんにちは、Visual Studio サポート チームです。 今回は、OLE パッケージ オブジェクトをプログラムから利用した場合に発生する問題についてご案内します。   現象 アプリケーションから OLE パッケージ オブジェクト (*1) を含むドキュメントを開いて閉じる操作を繰り返すと、アプリケーションの GDI オブジェクトの使用量が増加します。 増加量は僅かであるため、ほとんどのアプリケーションではこの問題が影響することはありませんが、パッケージ オブジェクトを含むドキュメントを、開いて閉じる動作を繰り返すようなアプリケーションでは、GDI オブジェクトの総量がプロセスごとに割り当てられた上限 (既定で 10,000) に達し、それ以降の GDI オブジェクトの生成に失敗して描画処理に問題が生じる場合があります。   (*1) パッケージ オブジェクトは、他のファイルやプログラムなどを OLE オブジェクトとしてドキュメントに挿入できるようにするためのオブジェクトです。   パッケージ オブジェクトの挿入 原因 本現象は、OLE パッケージ オブジェクトを管理する Windows OS のパッケージ管理コンポーネント (packager.dll) の不具合に起因するものです。 本コンポーネントでは、パッケージ オブジェクトごとにタイトルを表示するためのフォント オブジェクトを生成しますが、ドキュメントを閉じてもこのフォント オブジェクトが解放されないため、ドキュメントを開いて閉じる操作を繰り返すとフォント オブジェクト (GDI オブジェクト) が増加し続ける結果となります。   対応状況 マイクロソフトでは米国本社の開発部門でも本不具合を確認していますが、現時点では修正プログラムなどは提供されておらず、提供の予定はありません。 パッケージ…