Microsoft のベスト プラクティスでは、セキュリティ上の理由から VC++ ランタイムに動的にリンクすることが定められています。アプリケーションが自動的に修正プログラムを取得し、アプリケーションを個別に更新する必要がないようにするとよいでしょう。
しかし、ここ数年、私はEvolveクライアントのインストーラーを作成してきました。クライアントのインストールに関する最大の問題は、vcredist のインストールの失敗が原因でした。最大のエラー コードは次のとおりです。
1612: この製品のインストール ソースは利用できません。ソースが存在し、アクセスできることを確認してください。
1638: この製品の別のバージョンが既にインストールされています。このバージョンのインストールは続行できません。この製品の既存のバージョンを構成または削除するには、コントロール パネルの [プログラムの追加と削除] を使用します。
また、一部のサードパーティ製アプリケーションが 64 ビット バージョンの Windows の System32 に 32 ビット バージョンの msvcr100.dll を手動でインストールし、これに依存するシステム上のすべてのアプリケーションが明らかに失敗するというケースにも遭遇しました。
さて、私の質問は次のとおりです。開発者が土地の利益のためにマイクロソフトのガイドラインに従いたい場合、製品を確実にインストールできない場合、どうすれば成功できるのでしょうか? 私は今、岐路に立たされており、今後の選択肢は 2 つしかありません。
すべてのバイナリをランタイムに静的にリンクし、バイナリ サイズとそれに関連するセキュリティへの影響を考慮します。
VC++ ランタイム DLL を手動で配布し、アプリケーションのフォルダーにダンプしますが、それが許可されているかどうかさえわかりません。
他のみんなはそこで何をしているの?