none
.NET Framework なしのインストーラを作りたい RRS feed

  • 質問

  • 昔ながらのVC++でMFCアプリを作ったのですが

    それを出力とする Visual Studio 2010 のセットアッププロジェクトを作ると

    「見つかった依存関係」に、「.NET Framework」 が表示され、起動条件にも含まれています

    .NET Frameworkをインストールせずに、VC++のMFCアプリをインストールすることは出来ますか?

    2012年6月20日 22:24

回答

  • 手元で MFC プロジェクトを新規に作成し、Visual Studio セットアッププロジェクトのアプリケーション フォルダーにプロジェクトの出力を登録しましたが、依存関係として .NET Framework が列挙されることはありませんでした。

    ソリューション内の構成や、プロジェクトの設定など、何か特異点はありますでしょうか。
    新しくプロジェクトを作成して、少しずつ移植していって、どこで依存が検出されるかも試してみるとよいかもしれません。
    (/clr をつけているとプロジェクトがもしあるのであれば、それは .NET Framework に依存していますが、そうではないと認識しています)


    2012年6月20日 22:30
    モデレータ

すべての返信

  • 手元で MFC プロジェクトを新規に作成し、Visual Studio セットアッププロジェクトのアプリケーション フォルダーにプロジェクトの出力を登録しましたが、依存関係として .NET Framework が列挙されることはありませんでした。

    ソリューション内の構成や、プロジェクトの設定など、何か特異点はありますでしょうか。
    新しくプロジェクトを作成して、少しずつ移植していって、どこで依存が検出されるかも試してみるとよいかもしれません。
    (/clr をつけているとプロジェクトがもしあるのであれば、それは .NET Framework に依存していますが、そうではないと認識しています)


    2012年6月20日 22:30
    モデレータ
  • 早速のご確認、ありがとうございます

    古いVisual Studioからプロジェクト変換したせいかもしれません

    ゼロから作り直して確認してみます。ありがとうございました

    2012年6月20日 22:35
  • 私の環境では、

    1.Win32コンソールプロジェクト作成(MFCAppももちろん試しましたが同じ結果でした)

    2.Visual Studio インストーラ、セットアップウィザードで、1.のプライマリ出力を追加

    で、この段階で「見つかった依存関係」に、.NET Framework が追加されます(ビルド前)

    1.は全てデフォルトのままで、プロジェクトの「構成プロパティ」の「全般」

    「共通言語ランタイムのサポート」 を確認しても、「共通言語ランタイム サポートを使用しない」 に

    なっています。1点気になるのは、「共通プロパティ」 に

    「対象フレームワーク:.NETFramework,Version=v4.0」 と表示されていることです

    AzuleanさんのMfcAppではどうなっておられますか?

    2012年6月21日 0:45
  • 上記Win32コンソールアプリのexeを、Dependency Walkerで依存関係調べましたが

    MSVCR100.DLL と KERNEL32.DLL にしか依存していませんでした

    2012年6月21日 0:56
  • Visual Studio 2008 でまったく同じことをしてみたところ

    見つかった依存関係に、.NET Framework は出てきませんでした

    こちらの Visual Studio 2010 の設定に何か問題があるようです

    お手数おかけしました

    2012年6月21日 1:23
  • 1点気になるのは、「共通プロパティ」 に 「対象フレームワーク:.NETFramework,Version=v4.0」 と表示されていることです

    AzuleanさんのMfcAppではどうなっておられますか?

    これは 非 CLR プロジェクトでも同様に表示されるので気にしない方がよいです。

    しかし、原因がよくわかりませんね…。

    2012年6月21日 13:54
    モデレータ
  • ほんとうに図々しいお願いだとわかっているのでスルーして頂いて構わないのですが

    AzuleanさんのVisual Studio 2010環境で出来た、.NET Frameworkに依存しない

    MFC プロジェクトのプロジェクトファイル .vcxproj をどこかにアップして頂けないでしょうか?

    もし可能ならですが、よろしくお願いします。こちらのものと比較したいです

    2012年6月21日 15:50
  • 解決につながるかはわかりませんが、ここに置きました。

    https://skydrive.live.com/redir?resid=9E1932AF4BE9E15D!377

    2012年6月21日 16:16
    モデレータ
  • アップロードありがとうございます

    しかし、こちらで作成したものと比較したところ、GUID以外完全に一致しました

    ひとまず、Visual Studio 2008 で作り直して対応することにします

    何度もお付き合い頂き、ありがとうございました

    2012年6月21日 20:03
  • 数日前から次郎さんと同じ現象が出ました。

    それまで、付いてなかった、Win32 ,X64のMFCプロジェクトにすべてつくようになってしまいました。

    ただ、こちらは二台のPCで Visual Studio 2010 を使用していますが 一台のみに発生します。

    片側のプロジェクトを SVNで同期とっているのですが、一台のみにインストーラの依存関係に

    .NET Framework が張り付いてとれません。

    問題が発生するPC

      Windows 7 64bit Ultimate SP1

      Visual Studio 2008 + 2010 + 2012    + Intel Paralle Studio XE2011 + XE2013

    発生しないPC

      Windows 7 64bit Professional SP1

      Visual Studio 2008 + 2010  + Intel Paralle Studio XE2011 + XE2013

    バイナリまで比較できる Winmerge というソフトでプロジェクトのすべてのファイルを比較しましたが、差異はありませんでした。

    違いは、Windowsのエディションの違いと、Visual Studio 2012 が入っていることです。

    ソフト的には、ほとんどクローンに近いマシン同士なのに何故片方だけに、起こるのか不思議です。 計算時間のかかるソフトを開発していますので どちらか一方計算中のときは片方を使って開発しています。


    hokesI

    2012年12月7日 19:18
  • hokeI です。 10ヶ月近く経っていますが、自己解決しましたので、ご報告いたします。

    結論から言いますと、VS2012が入っているとダメなようです。

    何度もソフトのリリースの新しい順にアンインストール、古い順にインストールして動作を確認しましたところ、上記の結論に至りました。

    またこれとは別件ですが、非常に密接な関係のある問題で、セットアッププロジェクトがVS2012 から削られてしまっていて、弊社ソフトをバージョンアップする際の既存のユーザに対するトラブルのない対応が難しく、経営的な影響を考えると、現在は、VS2012は、使用できないばかりか、インストールもままならないということになってしまいました。

    シームレスな移行ができるよう、切にお願いしたいものです。


    hokesI

    2013年10月20日 21:07
  • フォーラムは要望先ではないので、Connect に書くか、2010 の配置プロジェクトに対する不具合として有償サポートを通じて回避策の調査を依頼するかでしょうか。
    有償サポートの中には直してくれないものの、どうやれば回避できるかを調査してくれるものもあるので、数年単位の将来に向けた投資として活用してはいかがでしょうか。
    その商品のリリース環境をビルドマシンとして別個に構築するのも影響を排除する観点から考えた方がよいかもしれません。

    (以下は現状を踏まえて、私が思うことがらです。将来に向けてどのように考えていくかは各法人によると思いますので、参考として捉えてください)

    セットアッププロジェクトの廃止の流れに関しては、残念ながら今から方向性が変わるとは思っていません。
    2012, 2013 と一応 2 世代出てしまっている現状を踏まえ、Microsoft の考えが変わらない可能性が高いとして、リスクマネージメントの観点からは新たな策(回避)を練っていくしかないと思います。
    2010 のサポートも、基本サポートが 2015/7/14、延長サポートが 2020/7/14 と数年先とはいえ、いずれ切れますし、新しい OS 向けの細かい対応をインストーラに盛り込むことができなくなってくるリスクも考えると、Microsoft のセットアッププロジェクトに見切りをつけなければならないタイミングが予想されるためです。(中期計画として WiX や InstallShield、その他のセットアップソリューションを調査・検討するなど)

    2013年10月20日 22:21
    モデレータ
  • Azulean さん 早速のご返事ありがとうございました。

    ただ、同じ問題に引っかかった方のために、情報提供という形で、日にちが経っているにもかかわらず、書き込んだ次第です。

    VS2012は、近々VS2013が出てくることもあり期待しており、使いたいですので、次期アップデートのリリースビルドのマシンは別に用意することにしました。

    また、参考意見ありがとうございました。弊社の状況を申し上げますと、以下のようになっています。 半分話はそれますが、かなり関連があることですので書きました。

    Wix は魅力的ですが、Windowsだけですし、InstallShieldは、ライセンスがきついこともあり、(かつて使っていた経験もあり・・・)あまり使いたくありません。

    それ以外に、以下の要因がありました。

    実は、次期開発のソフトウェアは、根幹のところで、MFCから離れて Qtを採用する流れになってしまったからです。

    ただ、Visual Studio + VC++ or Intel C++ を使えば、Qtでもデバッグがやりやすいので、使い続けることになります。 また、VS2012以上でないとQt 64bit系に対応してないようなので、いずれ、VS2012に移行せざるを得なくなります。

    ところが、VS2012を使用しても、今回の配布の問題は回避できます。

    なぜなら、コンパイラは複数選択でき、他のIDEでも使用でき、作ったものの、配布などもそちらでできるからです。 Linux,Windowsの両環境でも使えますしね。 リスクはないとはいえ、選択が増えることは、全般的なリスク軽減に繫がります。 最大の理由は、多言語対応が非常に簡単であるということでしたが・・・

    Qtには、LGPLという企業にとっては若干の壁はあります。日本語化されたノウハウも非常に少ないです。習熟するには少し時間がかかりますが、それでも、UIが洗練されて使いやすく、(かつては、色々と問題もありましたが) Ver.5.1あたりからですが、かなり使えるものになってきました。

    こういう選択肢は、弊社が開発してるのが科学技術計算分野の大規模・並列性・高速性を重視するソフトで、ネイティブ系のパフォーマンスは妥協できない(中間言語使用系はNG)、という特殊事情があるからかもしれません。

     


    hokesI





    • 編集済み hokesI 2013年10月22日 16:06
    2013年10月22日 16:00