C# と VB.NET の質問掲示板

わんくま同盟

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

ツリー一括表示

VS2008のセットアッププロジェクトでC++ランタイム配布 /フィアト (17/09/08(Fri) 09:35) #85064
Re[1]: VS2008のセットアッププロジェクトでC++ランタイム配布 /とっちゃん (17/09/08(Fri) 10:58) #85067
  └ Re[2]: VS2008のセットアッププロジェクトでC++ランタイム配布 /フィアト (17/09/08(Fri) 14:34) #85069
    └ Re[3]: VS2008のセットアッププロジェクトでC++ランタイム配布 /とっちゃん (17/09/08(Fri) 17:42) #85071
      └ Re: VS2008のセットアッププロジェクトでC++ランタ /フィアト (17/09/11(Mon) 15:59) #85099
        └ Re[5]: Re: VS2008のセットアッププロジェクトでC++ランタ /とっちゃん (17/09/11(Mon) 16:58) #85104
          └ Re[6]: Re: VS2008のセットアッププロジェクトでC++ランタ /フィアト (17/09/11(Mon) 17:28) #85108 解決済み


親記事 / ▼[ 85067 ]
■85064 / 親階層)  VS2008のセットアッププロジェクトでC++ランタイム配布
□投稿者/ フィアト (1回)-(2017/09/08(Fri) 09:35:38)

分類:[.NET 全般] 

Visual Studio 2008 (Standard Edition)のセットアッププロジェクトを使用して
インストーラを作成しているのですが、
必須コンポーネントにVisual C++ ランタイム ライブラリ(x86)を選択すると、
ビルド後に、exeとmsiの他、vcredist_x86というフォルダが作成されていました。
(中身はvcredist_x86.exe)
「必須コンポーネントのインストール場所を指定してください」で
「必須コンポーネントをコンポーネントの開発元の Web サイトからダウンロードする」を選択しているのですが、
その場合でも、vcredist_x86フォルダも含めて配布が必要なのでしょうか?

ちなみに、別の機会にダウンロードしたVisual Studio 2013 (Community)では、
必須コンポーネントにVisual C++ 2013 ランタイム ライブラリ(x86)を選択しても、
vcredist_x86フォルダやvcredist_x86.exeの類は生成されませんでした。
[ □ Tree ] 返信 編集キー/

▲[ 85064 ] / ▼[ 85069 ]
■85067 / 1階層)  Re[1]: VS2008のセットアッププロジェクトでC++ランタイム配布
□投稿者/ とっちゃん (455回)-(2017/09/08(Fri) 10:58:09)
No85064 (フィアト さん) に返信
> Visual Studio 2008 (Standard Edition)のセットアッププロジェクトを使用して
> インストーラを作成しているのですが、
> 必須コンポーネントにVisual C++ ランタイム ライブラリ(x86)を選択すると、
> ビルド後に、exeとmsiの他、vcredist_x86というフォルダが作成されていました。
> (中身はvcredist_x86.exe)
> 「必須コンポーネントのインストール場所を指定してください」で
> 「必須コンポーネントをコンポーネントの開発元の Web サイトからダウンロードする」を選択しているのですが、
> その場合でも、vcredist_x86フォルダも含めて配布が必要なのでしょうか?
>
VS2008をインストールしている環境がないのでVS2010のセットアッププロジェクトで試してみました。
「必須コンポーネントをコンポーネントの開発元の Web サイトからダウンロードする」
を選んでいれば、VC++ランタイムなどはコピーされません。

ですが、設定した直後は、
「アプリケーションと同じ場所から必須コンポーネントをダウンロードする」
になっていました(その前は開発元から)。

なので、何かの拍子に設定が変わってしまったなどがあるのかもしれません。
Debug/Release などでも状況が変わることがあるのでそれらも含めて再確認してみてください。

もし、設定によらずコピーされるということであれば、setup.exe + msi(cabも) を
テスト環境にコピーして、VC++ランタイムをインストールしていない環境で正しく
動作するかを確認してみてください。

もう10年位前の話で記憶がかなりあいまいですが、VS2005か2008あたりまでは
設定によらずコピーしていたような記憶があります。


> ちなみに、別の機会にダウンロードしたVisual Studio 2013 (Community)では、
> 必須コンポーネントにVisual C++ 2013 ランタイム ライブラリ(x86)を選択しても、
> vcredist_x86フォルダやvcredist_x86.exeの類は生成されませんでした。

vcredist_x86.exe などが、パッケージフォルダに配置されていないため
「アプリと同じ場所から。。。」が選択できなくなっています。
(選択するとモジュールがないとビルドエラーになる)。

[ 親 85064 / □ Tree ] 返信 編集キー/

▲[ 85067 ] / ▼[ 85071 ]
■85069 / 2階層)  Re[2]: VS2008のセットアッププロジェクトでC++ランタイム配布
□投稿者/ フィアト (2回)-(2017/09/08(Fri) 14:34:47)
とっちゃん様、ご回答ありがとうございます。
Debug/Releaseと色々とやってもvcredist_x86フォルダが作成されてしまうため、
Visual C++ 2008 ランタイムをアンインストールした環境を用意し、
vcredist_x86フォルダがない状態でsetup.exeを実行してみます。
(ちょっと今は時間がないので、後でやってみます。)
[ 親 85064 / □ Tree ] 返信 編集キー/

▲[ 85069 ] / ▼[ 85099 ]
■85071 / 3階層)  Re[3]: VS2008のセットアッププロジェクトでC++ランタイム配布
□投稿者/ とっちゃん (456回)-(2017/09/08(Fri) 17:42:42)
No85069 (フィアト さん) に返信
> Debug/Releaseと色々とやってもvcredist_x86フォルダが作成されてしまうため、
> Visual C++ 2008 ランタイムをアンインストールした環境を用意し、
> vcredist_x86フォルダがない状態でsetup.exeを実行してみます。
> (ちょっと今は時間がないので、後でやってみます。)

ふむ。。。だとすると動かしてみないと条件絞れないですね。

インストーラのテストは素のOSを用意していないと面倒な場合があるので
仮想マシンなどにOSをインストールしただけ(WindowsUpdateは適用する)の
環境を用意しておくと何かと都合がいいですよ。

それと、ふと思ったのですが、VC2008のランタイムは今でもMSから配布してるのかな?
すでにサポート終了して数年(5年くらいまえに終了してた気がします)たっているので
公開していないかもしれません。

その場合、開発元からのオプションは選択できませんのでご注意を。

[ 親 85064 / □ Tree ] 返信 編集キー/

▲[ 85071 ] / ▼[ 85104 ]
■85099 / 4階層)  Re: VS2008のセットアッププロジェクトでC++ランタ
□投稿者/ フィアト (3回)-(2017/09/11(Mon) 15:59:56)
2017/09/11(Mon) 16:12:39 編集(投稿者)

今日、Visual C++ 2008 ランタイムをアンインストールしたPCで
vcredist_x86フォルダなしでsetup.exeを実行したら、
vcredist_x86.exeパッケージファイルがないと怒られました。
おそらく、vcredist_x86フォルダの配布は必要なのだと思いました。

そこで別の疑問が発生しました。
試しに、このPCでsetup.msiを実行し、
必須コンポーネント以外のものをインストールしましたが、
この時にインストールされたC++で作成したexeは動作しました。
(厳密には、このexeはVBアプリよりProcess.Startで起動します。)

私はC++の知識はあまりないのですが、
VC++で作成したexeは、ものによってはランタイムなしでも動く場合があるのでしょうか?
(VC++ランタイムの上位互換ってないですよね?
なお、このPCにはVS等の開発環境は入っていません。)
[ 親 85064 / □ Tree ] 返信 編集キー/

▲[ 85099 ] / ▼[ 85108 ]
■85104 / 5階層)  Re[5]: Re: VS2008のセットアッププロジェクトでC++ランタ
□投稿者/ とっちゃん (457回)-(2017/09/11(Mon) 16:58:11)
No85099 (フィアト さん) に返信
> 2017/09/11(Mon) 16:12:39 編集(投稿者)
>
> 今日、Visual C++ 2008 ランタイムをアンインストールしたPCで
> vcredist_x86フォルダなしでsetup.exeを実行したら、
> vcredist_x86.exeパッケージファイルがないと怒られました。
> おそらく、vcredist_x86フォルダの配布は必要なのだと思いました。
>
「開発元から。。。」の設定が有効にならないのか、それとも設定ミスがあるのか。。。
理由はわかりませんが設定できていないようですね。



> そこで別の疑問が発生しました。
> 試しに、このPCでsetup.msiを実行し、
> 必須コンポーネント以外のものをインストールしましたが、
> この時にインストールされたC++で作成したexeは動作しました。
> (厳密には、このexeはVBアプリよりProcess.Startで起動します。)
>
> 私はC++の知識はあまりないのですが、
> VC++で作成したexeは、ものによってはランタイムなしでも動く場合があるのでしょうか?
> (VC++ランタイムの上位互換ってないですよね?
> なお、このPCにはVS等の開発環境は入っていません。)

C++ のプロジェクトはコンパイルオプションの設定によって
別途C++ランタイムがなくても動かせるように作ることができます。

プロジェクトの構成によっては選択できない場合(DLLなどの利用状況に依存する)もありますので
詳しくは、社内のC++担当の人に聞いてみてください。


また、最新の開発環境ではない場合、すでに別のアプリがランタイムを必要としているために
インストールしていることもあります。

VC++ 2008 はそろそろ利用しているアプリケーションがなくなりつつあるような状況ですが
今でも使っているアプリは存在します。

ですので、すでにインストール済みという場合もあります。

また、アプリによっては、マージモジュールというインストーラのライブラリのようなものを使うことで
別途ランタイムインストーラでインストールせずに特定アプリのモジュール構成の一部として
ランタイムをインストールしているという場合もあります。

VC++2008のランタイムは、特定バージョン以上のOS添付ということはないと思いますが
誰かがどこかのタイミングでインストール済みということは十分あり得ます。

[ 親 85064 / □ Tree ] 返信 編集キー/

▲[ 85104 ] / 返信無し
■85108 / 6階層)  Re[6]: Re: VS2008のセットアッププロジェクトでC++ランタ
□投稿者/ フィアト (4回)-(2017/09/11(Mon) 17:28:03)
とっちゃん様、ご回答ありがとうございます。
なるほど、そういうことなのですね。

ちなみに、C++のexeはC++初心者の私が作成したものです。
もしかしたらランタイム不要なレベルかも知れません。

とりあえず、本件解決とします。

解決済み
[ 親 85064 / □ Tree ] 返信 編集キー/


管理者用

- Child Tree -