none
Setup Deployment ProjectsのTargetPlatformについて RRS feed

  • 質問

  • 質問1
    Setup Deployment Projects(以下、セットアッププロジェクト)のTargetPlatformの設定(x86,x64,Itanium)はどう機能するか?

    質問2
    コンパイル時のアクティブソリューションプラットフォームの設定とTargetPlatformの設定とはどのような関係か?また、両者をどのように組み合わせる必要があるか?

    質問3
    アクティブソリューションプラットフォームにAnyCPUを設定したマネージコードを32bit版Windowsではx86モード、64bit版Windowsではx64モードで実行したい。要件をみたすsetup.exeを簡単に作成する方法があるか?

    質問4
    VisualStudio2013において、Microsoftとしては、セットアッププロジェクトとInstallsshieldのどちらを推奨してますか?

     VisualStudio2013にセットアッププロジェクトを追加インストールしました。そして、AnyCPUでコンパイルした1つの実行ファイルが、64bit版Windowsではx64モード、32bit版Windowsではx86モードでそれぞれ実行することが確認できている。
     さて、この実行ファイルをセットアッププロジェクトで配布する場合、TargetPlatformの設定をどう設定する必要があるかが分かりません。

    Visual Studio Installer Projects
    https://visualstudiogallery.msdn.microsoft.com/9abe329c-9bba-44a1-be59-0fbf6151054d

    設定画面(参考資料)


    C#開発者

    2015年1月15日 6:27

すべての返信

  • 質問1

    作成した msi でインストール可能なプラットフォームを指定します。詳しくは、Windows Installer on 64-bit Operating Systems をご参照ください。いろいろ書かれているので(英語ですけど)、そのあたりを踏まえてどうするかを検討する必要があると思います。

    質問2/質問3

    アクティブソリューションと、プラットフォームはただのタグ(組み合わせ管理用の集合名)でしかありません。

    その中の組み合わせをどうするかは、そのソリューションの設計に依存します。そのソリューションを使う人の中で意思統一ができていれば、Debug という名前でリリース版を作っても誰も咎めません。

    質問4

    いずれの製品も Visual Studioに含まれているものではありませんので、どれかを推奨とはしていないと思います。というか、.NET であれば ClickOnce という選択肢もありますし、WiX(VS自身のインストーラがこれで作成されている)という製品(オープンソース)もあります。

    >さて、この実行ファイルをセットアッププロジェクトで配布する場合

    質問の本文はここですか?質問5とはなっていないようですけど?

    いろいろな選択肢があるので一概にどれがいいとは言えません。一度最初に挙げたリンクを見て、製品としてどうするのがいいかを考えてみるのがよいと思います。


    とっちゃん@わんくま同盟, Microsoft MVP for Visual C++ (Oct 2005-) http://blogs.wankuma.com/tocchann/

    2015年1月15日 9:16
  • ご回答ありがとうございます。

    1. 前記の質問4について

    ご指摘のとおり質問5の表題が抜けていました。

    • > 質問4
    • > VisualStudio2013において、Microsoftとしては、セットアッププロジェクトとInstallsshieldのどちらを推奨してますか?
    • > 質問5
    • > VisualStudio2013にセットアッププロジェクトを追加インストールしました。そして、AnyCPUでコンパイルした1つの実行ファイルが、64bit版Windowsではx64モード、32bit版Windowsではx86モードでそれぞれ実行することが確認できている。
       さて、この実行ファイルをセットアッププロジェクトで配布する場合、TargetPlatformの設定をどう設定する必要があるかが分かりません。

    とするべきでした。訂正させていただきます。

    2.前記の質問2と質問3への回答についての再確認

    下の画面で表示されている赤丸①と②の「AnyCPU」はただのタグ名であって、それ以上の(例えばコンパイルの最適化オプション等の)特別な意味を持たないという理解が正しいのでしょうか?


    C#開発者

    2015年1月21日 23:31
  • 先に。。。ダイアログの右肩にある?ボタンを押すと、該当ダイアログのオンラインリファレンスを表示できますので、一度そちらも参照してみてください。

    一応。。。

    ① は、各プロジェクトの構成(②に当たる個所)の組み合わせに名前を付けたものになります。

    ② は、各プロジェクトの設定(プロジェクトのプロパティ)に名前を付けたものになります。

    最終的に上記2か所(それぞれの構成の部分も含めれば4か所)の名称に対する個々の設定は、該当名称で設定されているプロジェクトの個々の設定に依存します。

    名称が Any CPU になっているから、本当に Any CPU で出力するようになっている保証はなく、実際の出力設定がどうなっているかはプロジェクトのプロパティのビルドタブにある、プラットフォームターゲットを見ないとわかりません。

    また、プロジェクトによっては、AnyCPUがないものもあります(セットアップ系のプロジェクトがこれに当たる)。

    プロジェクトによっては、32bit 版の表記が x86 ではなく、Win32 となっているものもあります。そのあたりはプロジェクトの種類によってまちまちとなっています。

    質問5は、前に分けて回答していますので特に変わることはありません。


    とっちゃん@わんくま同盟, Microsoft MVP for Visual C++ (Oct 2005-) http://blogs.wankuma.com/tocchann/

    2015年1月22日 2:42