none
WindowsにデフォルトでインストールされているRuntimeについて RRS feed

  • 質問

  • タイトルの通りなのですが、WindowsにデフォルトでインストールされているVSのランタイムを知りたいのですが、どこかわかる所はないでしょうか。

    例えば、Windows7 Pro 32bitにはVS2008、VS2010のランタイムはデフォルトでインストールされているかどうかがわかるような資料です。

    「WindowsにはVSのランタイムはデフォルトでは全く入っていない」のならそれでもいいのですが、それがわかる資料が知りたいです。

    ウェブで調べても「はいってなかったらダウンロードしてインストールすれば良い」と言う回答ばかりで困っています。

    2015年2月26日 7:04

回答

  • Windows に含むかどうかを公に書いた資料は、私も見覚えがありません。
    昔から「Visual C++ のライブラリを再配布する必要がある」という MSDN の記載がある以上、「Windows に含まれているかどうか」は重要な問題ではないと考えているため、疑問視したことはありませんね。
    (私も「入っていない」と意見を持ちますが、これの根拠は経験談や推論から導いたことなので、公に示せる根拠があるわけではありません)

    どうしても必要であれば、Microsoft の有償サポートを頼ることでしょうか。

    逆にお聞きしてみたいのは「なぜ、その資料を求めるのか?」です。
    「インストーラーの作成要否や配布するバイナリ構成を検討・判断するため」であれば、インストーラーの作成・ランタイムの配布を前提に考えていただいた方が良いでしょう。

    (参考)
    Side by Side の話は 2005 と 2008 だけです。2010 からはなくなっています。
    また、発行者ポリシーでリダイレクトされるので、そのポリシーを拒否していない限り、より新しいマイナーバージョンがインストールされていれば、完全一致の必要はありません。

    2015年2月26日 13:41
    モデレータ

すべての返信

  • いずれも含まれていないことになっていますので、その前提で設計してください。VC6のランタイムは含まれているはずですが…そこまで古いコンパイラは質問の対象に含まれていませんよね?
    2015年2月26日 7:20
  • いずれも含まれていないことになっていますので、その前提で設計してください。VC6のランタイムは含まれているはずですが…そこまで古いコンパイラは質問の対象に含まれていませんよね?

    佐祐理様、素早いご回答ありがとうございます。

    ただ、私の質問の仕方が悪かったのか、質問の意図が正確には伝わっていないと思います。

    私は、Windowsの各バージョンにどのruntimeが含まれているかどうかも知りたかったのですが、もっと、知りたかったのは、「何が入っているかと言う事がわかる資料の場所」です。

    言い換えると『いずれも含まれていないことになっています』と言う事の根拠がMSのサイトのどこかにないですか?と言う事を知りたかったのです。

    佐祐理様はどのような方法で『いずれも含まれていない』と言う事を知ったのでしょうか。

    それが知りたいのです。

    ちなみにVC6のランタイムは対象外です。

    2015年2月26日 7:57
  • 難しいですね…含まれていないことが明言されているドキュメントはないと思います。

    近い話題なら見かけています。CRT ライブラリの機能のページにはVC7以降ずっと

    msvcrt.dll と msvcr110.dll の相違点
    msvcrt.dll は "known DLL"、つまり、Windows が所有および構築するシステム コンポーネントになりました。 msvcrt.dll は、システム レベルのコンポーネントだけで使用されることを前提としています。

    という記述があります。書かれてはいませんが「msvcrXX.dllはWindowsには含まれていない」と深読みできるのかもしれません。これに対して.NET Frameworkの場合、.NET Framework システム要件のページにWindowsに含まれているバージョンが記載されていたりします。

    2015年2月26日 8:32
  • .Net Frameworkのランタイムについては↓に
    https://msdn.microsoft.com/ja-jp/library/bb822049(v=vs.110).aspx

    ただしランタイムについてはSide By Sideで実行するために、各アプリケーションと一緒に再配布するのが普通です。マニフェストで規定したマイナーバージョンのランタイムが入っているか否かは分かりませんから。


    甕星

    2015年2月26日 8:44
  • 探してみましたが明記されているものが見つからなかったので
    推測してみたのですが、ひょっとすると自明なのかもしれません。

    1.Windowsが起動できる最小の構成にはMFCも.Netライブラリも含まれない。
     (Windows Embededの説明にあったはずですが、今検索したところヒットしません・・・)

    2.CランタイムのMSVCRT.dllは佐祐理さんが紹介しているページに
     "known DLL"であると明記されていますので、Windowsのシステムのセットに含まれますが、
     Windowsのシステムを構成するコンポーネント専用のようです。
     (自分には使ってくれるな的な説明に読めます)

    3.MSVCR120.dll等の開発ツールに付随して提供されているライブラリは、MSVCRT.dllに上位互換なので、
     アプリケーションはこっち(MSVCR120等.dll)を使うように説明されています。
     これらは、原理上アプリケーションの頒布側の必要性によるので、
     インストールされているアプリケーションに依存して不定です。

    以上から、MSVCRT.dll以外はインストールされていないことが前提と推測できます。

    2015年2月26日 9:48
  • Windows に含むかどうかを公に書いた資料は、私も見覚えがありません。
    昔から「Visual C++ のライブラリを再配布する必要がある」という MSDN の記載がある以上、「Windows に含まれているかどうか」は重要な問題ではないと考えているため、疑問視したことはありませんね。
    (私も「入っていない」と意見を持ちますが、これの根拠は経験談や推論から導いたことなので、公に示せる根拠があるわけではありません)

    どうしても必要であれば、Microsoft の有償サポートを頼ることでしょうか。

    逆にお聞きしてみたいのは「なぜ、その資料を求めるのか?」です。
    「インストーラーの作成要否や配布するバイナリ構成を検討・判断するため」であれば、インストーラーの作成・ランタイムの配布を前提に考えていただいた方が良いでしょう。

    (参考)
    Side by Side の話は 2005 と 2008 だけです。2010 からはなくなっています。
    また、発行者ポリシーでリダイレクトされるので、そのポリシーを拒否していない限り、より新しいマイナーバージョンがインストールされていれば、完全一致の必要はありません。

    2015年2月26日 13:41
    モデレータ
  • 逆にお聞きしてみたいのは「なぜ、その資料を求めるのか?」です。

    「インストーラーの作成要否や配布するバイナリ構成を検討・判断するため」であれば、インストーラーの作成・ランタイムの配布を前提に考えていただいた方が良いでしょう。

      気にしているのは、「インストール作業者への作業指示がどうなるか」です。

      現在作成中のプログラムはOSインストール直後にインストールする事になっています。そのため、インストール直後のWindowsにはVSのランタイムは確実に入っていないとわかっているのであれば、たとえ再配布可能パッケージを使うにせよ、インストール作業者は特に何かの判断をする必要はなく、確実に同一の手順でインストールできると思います。

      入っていない事が確実ではないとすると、ランタイムパッケージのインストールの段階でどのような作業を行う必要があるかは確定できない事になり、場合によってはインストール作業者がなんらかの調査と判断を行う必要がある場合がでてきてしまうかもしれません。インストール作業者はできるだけ機械的に作業を進められるようにしたいと思っています。

      このため、その場合は、インストーラを作成する事を検討したいと思っています。

      以上のような判断をする材料として今回の質問をさせていただいたわけです。

      質問の背景はご理解いただけたでしょうか。

      Windows流のやりかたには慣れていないせいもあり、常識外れな質問をしているような気もしてきました。いろいろとアドバイスありがとうございました、大変参考になりました。

    2015年2月27日 4:42
  • インストール作業者はできるだけ機械的に作業を進められるようにしたいと思っています。

    私なら、この時点で「インストーラーを作成し、作業者には ”インストーラーでインストールすること” を指示する」を選びます。
    ランタイムが入っている・入っていないによる制御もインストーラーの中に含まれていますので、初期の Windows の状態に左右されず、安定した手順が実現できるためです。

    Windows にランタイムが入っている・入っていないなどは、今後の情勢で変化があり得ることですから、そういった不安定なものに依存せず、なるべく安定的に実現できる手段を選ぶという感じです。

    2015年2月27日 14:36
    モデレータ
  • Visual C++に関して、開発環境をインストールした時点でランタイムがインストールされています。

    アプリケーションユーザーが開発者でなければランタイム自体が入っていない事が想定されます。

    ユーザーの環境にランタイムがなければ結局はダウンロードし、インストールするしかありません。

    質問者がおっしゃっているWindowsにデフォルトで入っているランタイムの類はユーザーの環境にもよります。

    もし、質問者がそれを知りたいのであれば各Windowsのファイル検索などで"msvcr*.dll"などとしてください。

    以上

    2021年3月18日 13:33