64ビットアプリケーションの配布

このQ&Aのポイント
  • WindowsXP+VisualStudio2008Proを使用してMFCやWIN32SDKプログラムを作成している方へ質問です。64ビットプラットフォームを意識しないで32ビットプラットフォーム向けプログラムを作成してきましたが、今日、Visual Studioで64ビットOS向けのコンパイルができることを知りました。インストーラでプラットフォームを判断して自動的にインストールできる方法や、最近のWindowsの64ビットOSで32ビットアプリケーションが問題なく動作するかどうかなど、皆さんの意見を聞きたいです。
  • 64ビットアプリケーションの配布に関する疑問です。今まで32ビットプラットフォーム向けプログラムを作成してきた方で、今日、Visual Studioで64ビットOS向けのコンパイルができることを知りました。そこで、64ビット版と32ビット版のプログラムを作成した場合、インストーラでプラットフォームを判断し、自動的にインストールする方法はあるのでしょうか?また、最近のWindowsの64ビットOSでは、32ビットアプリケーションも問題なく動くと聞いていますが、一般的なアプリは32ビットでコンパイルしておく方が安全なのでしょうか?皆さんはどのようにしていますか?意見をお聞かせください。
  • 64ビットアプリケーションの配布について質問があります。現在、WindowsXP+VisualStudio2008Proを使用してMFCやWIN32SDKプログラムを作成しています。しかし、今日、Visual Studioで64ビットOS向けのコンパイルができることを知りました。そこで質問なのですが、64ビット版と32ビット版のプログラムを両方作成した場合、インストーラでプラットフォームを判断し、自動的にインストールする方法はあるのでしょうか?それとも、最近のWindowsの64ビットOSでは、32ビットアプリケーションも問題なく動作するため、一般的なアプリは32ビットでコンパイルしておくのが安全なのでしょうか?皆さんの意見をお聞かせください。
回答を見る
  • ベストアンサー

64ビットアプリケーションの配布

WindowsXP+VisualStudio2008Proを使って MFCやWIN32SDKプログラムを作っています。 今まで64ビットのプラットフォームを意識しないで 32ビットプラットフォーム向けプログラムを作成してきたのですが、 今日、Visual Studioで64ビットOS向けのコンパイルができることを知りました。 そこで質問なのですが、34ビット版プログラムと64ビット版プログラム両方 作成した場合、インストーラなとでプラットフォームを判断して自動的に インストールする方法ってあるのですか? それとも、最近のWindowsの64ビットOSは32ビットアプリケーションも問題なく 動くようなので一般的なアプリは32ビットでコンパイルしとくのが安全なのですか? 皆さんはどうしてますか?詳しい方がいましたら教えて下さい。 勘違いしてたらご指摘下さい。どうぞ宜しくお願い致します。

  • ken2r
  • お礼率88% (82/93)

質問者が選んだベストアンサー

  • ベストアンサー
  • jjk65536
  • ベストアンサー率59% (66/111)
回答No.2

> 一般的なアプリは32ビットでコンパイルしとくのが安全なのですか? 64ビットWindows上で32ビットアプリケーションが動作する際は、WOW64という エミュレーション層が間に入ります。 若干のオーバーヘッドが存在するほか、64ビットのOCXコンテナと共存できないなどの 制限があります。 Wikipedia http://ja.wikipedia.org/wiki/WOW64 つまり、64ビット用をあえて別に作って配布するメリットとしては、この WOW64のオーバーヘッドを防げることが挙げられます。 逆にデメリットとして、64ビットへ移植したため発生するバグの修正などが あるかもしれません。 (例:64bitのポインタを32bitのintにキャスト、等) 自動判別についてはインストーラ次第だと思いますが、試しにNSISで調べたところ できるみたいですよ(実装中かも)。 http://public.kitware.com/Bug/view.php?id=9094

ken2r
質問者

お礼

WOW64など勉強になりました。 ご回答有難うございました。

その他の回答 (1)

  • sygh
  • ベストアンサー率76% (42/55)
回答No.1

ソフトウェアの有償・無償を問わず、32bitと64bitのインストーラ(exe/msi)は別々に提供されることが多いので、自動的にプラットフォームを判定する方法はあまり一般的でないように思います。 64bit専用インストーラは32bit OS上で起動できないように、64bitアプリケーション(あるいはmsi)として作成しておくのがよいのではないでしょうか。 Visual Studio付属のセットアップ プロジェクトでは、ターゲット プラットフォームをプロパティによって指定できるようになっています。 http://msdn.microsoft.com/ja-jp/library/cd7a85k9(v=VS.100).aspx 今は32bitから64bitへの過渡期で、まだまだ32bitが主流なのは確かですが、早めに64bit移行して動作保証しておいたほうがいいかもしれません。 ドライバーが絡むソフトやインライン アセンブラが使われているソフトは64bit移行につまずくことが多いようです。

ken2r
質問者

お礼

ご回答有難うございました。

関連するQ&A

  • .Netアプリケーション配布について

    .Net初心者で、Javaの経験しかないものです。 .Netのアプリケーション配布について質問があります。 Visual Studio 2008を利用し、C#の簡単なアプリケーションを作成して います。 Windowsフォームアプリケーションを作成し、「配布」を行い他のWindowsXPやVista環境で利用できるようインストーラ的なものを作ろうといろいろ試しているところです。 ただ、Visual Studio 2008の「配布」という機能を利用し、他のコンピュータで利用すると、プログラムをなにも記述していないフォームを表示するようなアプリでも以下のようなメッセージが出て、実行できません。 「このアプリケーションをインストールまたは実行できません。このアプリケーションでは、まずグローバルアセンブリキャッシュ(GAC)にアセンブリWindowsBaseバージョン3.0.0.0をインストールする必要があります。」 これは、.Netフレームワーク(ランタイム)をインストールすることで実行することができることは確認できましたが、一般のソフトウェアではこのようなメッセージが出ることはありません。 Visual Studioで開発するということは.Netフレームワーク上の環境下であることが前提であり、利用者もその環境にしなければならないというのはわかりますが、一般ユーザが何百メガもある.Netフレームワークをインストールしなければ実行できないというのは大変利便性の低いものであり、受け入れられないものだと思います。 最終的にはインストーラを実行するだけで動作するようにしたいですが、これにはどのような手順で開発を行えばよいでしょうか。 基本的なことで申し訳ないですが、助言をよろしくお願いします。

  • Windows7(64bit)でのプログラム実行

    Visual Studio 2010で作成したプログラム(32bit版)はWindows7(64bit)のOSで 自動識別してくれて問題なく動作するでしょうか。 それとも実行に先立ち、何か予め設定がいるでしょうか。

  • コンソールアプリケーションからWindowsプログラムへの道順

    私は現在Visual C++ .NET 2003のスタンダードを使用して、Win32コンソールアプリケーションでプログラムを作成しています。まだまだ経験が浅いのでエラーの連続ですが、ポインタの使用や構造体の使用、クラスの使用や低水準ファイル入出力を利用して、テキストファイルの読み込み・整形・書き込みをするプログラムを作成しています。 そろそろSDKやMFCなどを学びたいと考えているのですが、書籍などでSDKを覚えてからMFCを学んだほうが良いみたいなことが書かれていました。でも、別の書籍ではいきなりMFCでも問題ないみたいなことも書いてありました。現在コンソールアプリケーションを作る私がSDKやMFCを学ぶために道順が良く分からなくなっています。 そこで現在Windowsプログラミングをされている方にお聞きしたいことがあります。質問は次のとおりです。 1、MFCを学ぶなら先にSDKを覚えてからのほうが良いですか? 2、Visual C++ .NET 2003を使用してSDKまたはMFCを学ぶのに、お勧めの書籍があったら教えてください。 3、絶版になっていない書籍を探すとVisual C++ .NET 2005を使用しているものが目立つように思えるのですが、私の所有しているバージョンを2005にしてから書籍を考えたほうが良いと思いますか? お時間がありましたら皆さんのご経験をお聞かせください。よろしくお願いいたします。

  • MSILのような中間言語について

    調べたところ、http://www.atmarkit.co.jp/icd/root/63/57773363.html で、「マイクロソフトは、MSILを生成できるプログラム開発環境として、.NET Framework SDK(コマンドライン・ベースのプログラム開発環境を提供するソフトウェア・セット)やVisual Studio.NET(グラフィカル・インターフェイスを備えたプログラム開発環境)を開発し、いずれも2000年末から開発者向けのベータ版ダウンロード・サービスを開始した。」とあるのですが、同じC言語で作っていてもBorlandでコンパイルしたものと、VisualStudioのC++でコンパイルしたものでは実行のされ方が異なっているのでしょうか? また、こういったプログラムのコンパイルや実行に関して、OSはどの様に関わっているのでしょうか? よろしくお願いします。

  • 64ビット開発環境構築について

    64bitアプリケーションの開発環境構築で悩んでます。 現在の環境は、Microsoft Visual Studio 6.0、 Visual C++ 6.0です。 Milrosoft Pratform SDK SP1もインストールしました。 で、どのようにすると、64bitアプリケーションを作成できるのでしょうか? Visual Studio 2003.NETや2005の手法は見つけるのですが、Studio 6.0 また、Visual C++ 6.0での方法が見つかりません。 どなたか、やられたことのある方、もしくは参考のサイトをご存知の方は教えてください。 よろしくお願いします。

  • 64ビットPCとオークションにありますが、デュアルコアではなさそうなのですが、使えないアプリケーションなどはありますか?

    http://page9.auctions.yahoo.co.jp/jp/auction/k27918558 ↑64ビットPentium4630とありますが、HTテクノロジーだから64ビットになるということでデュアルコアでないですよね?? 私は、プログラム開発用に購入したいとおもっているんですが、現在64ビットに対応していないアプリケーションがたくさんあるとおもうので、32ビット出ないと困るのです。例えば、MicroSoftの開発環境のホームページでは「Visual Studio 2005 は、Intel Itanium (IA64) プロセッサをサポートしていません。 」とかいてあります。 また、このオークションのPCを買うことによって、使えないアプリケーション(例えば、現在のバージョンのOffice)とかはあるのでしょうか? 詳しい方よろしくお願いします。

  • アップデート版インストーラ作成方法

    現在配信しているアプリケーションのアップデート版の インストーラを作成したいのですが作成方法をググってみましたが うまくいきません。 Microsoft Visual Studio2005でアプリケーションのインストーラを作成したので Microsoft Visual Studio2005でアップデート版を作成したいです。 すでにアプリケーションがインストールされている場合は旧バージョンを削除(上書きでも可)して データのみ有効にしてアプリケーションがインストールされていない場合は 通常のインストール作業になるようにインストーラーを作成したいです。 データはアプリケーションを使用したユーザーのみ作成され新しいフォルダーが生成されるように 作られているので上書きでも問題ないと思っております。 以上、ご教示お願いします。

  • visual Studio 2008で.exeファイルが他PCで実行できません

    C/C++初心者のものです。 私は 家のvista と visual Studio 2008 Express Editionを使って、DirectX9のプログラムを作っています。 ベータ版でもそうだったのですが、部活用にある .xp + visual Studio 2005  .vista + visual Studio 2005  のパソコンでは 「アプリケーション構成が間違っています」 というようなことを言われ(正確には覚えていません。済みません…。) そして部活用のvisual Studio 2005でコンパイルしなおすと家のパソコンで 「d3dx9_36.dllが見つからなかったため、このアプリケーションを開始できませんでした。…」 と出てきます。 これはOSの問題もあるのでしょうか? 製品版の購入もこれでは拒んでしまいます。 このエラーの理由は何ですか? どうすれば解決できますか? 教えてください。お願いします。

  • mpeg2->wmv変換

    いつもお世話になっております。 visual studio 2010 mfc プロジェクトで mpeg2ファイルをwmvファイルに変換するプログラムを作成しようとおもい、 調べてみたのですが、 windows media player sdk windows media encoder sdk というものがあるような記載があるのですが、 どうやって行えばよいのかがわかりませんでした。 上記SDK以外でもよいので mpeg2ファイルをwmvファイルに変換するプログラムのサンプル、API、dll、オープンソースなど ご存知の方、ご教授よろしくお願いいたします。 OS windows 7 visual studio 2010 professional edition

  • Visual Studio のコンパイラがアプリケーションエラー

    Visual Studio 2005 Professional Edition(Visual Basic 2005)を使っています。 プログラム作成中にコンパイラ(エラー一覧に、文法エラー等を表示するやつです)がアプリケーションエラーで当然のように頻繁に落ちます。 ※エラー内容「問題が発生したため、Microsoft Visual Basic Compilerを終了します。ご不便をおかけ・・・」「・・Visual Basicコンパイラを回復できません。システムエラー・・・」 コンパイラが落ちないように、 この自動コンパイル(自動コードチェック)をしないようにVisual Studioを設定する方法をご存知の方、教えて頂けませんでしょうか。 ※いろいろ調べてみたのですがわかりませんでした。

専門家に質問してみよう