3

Visual Studio 2008を使用してWindowsインストーラを作成して、x86とx64の両方のオペレーティングシステムを対象とする方法はありますか。Windowsインストーラ(VS2008)でx86とx64の両方をターゲットにする

TargetPlatformプロパティでは、私はちょうど:x86x64Itaniumを持っています。そして私は、Any CPUと呼ばれる別の場所があることを知っていますが、私はそれを見つけることができません。

また、2つのセットアップを作成したくありません。

アイデア?

ありがとうございました。

答えて

3

それは行われますが、直接ではなく、Visual Studioにすることができ、一般的なアプローチはこれです:。

  • 32ビットと64ビットの両方のリソースが含まれている一般的なMSIを作成
  • MST transformsを作成ターゲットプラットフォームに基づいてMSIを変更する(1つは32ビット用、もう1つは64ビット用)
  • は、動的にプラットフォームを検出するために、EXEブートストラップを使用し、正しいあなたがOrcaでトランスフォームを作成することができ、あなたのMSI

に変換を適用します。商用のソリューションが必要な場合は、Advanced InstallerまたはInstallShieldを試すことができます。

これはあまりに複雑すぎると思われる場合は、32ビットと64ビットの別々のパッケージを使用するだけです。

+1

+1、良い答え。 – slugster

+0

nice。ありがとうございました... – Sunil

1

私は間違っているかもしれませんが、これはできないと確信しています。 あなたが言及しているAny-CPUは、あなたのアセンブリ用に.Netコンパイラによって使用されています(.Netアセンブリは、デフォルトでアーキテクチャに依存しませんが、x86またはx64として強制的にコンパイルすることができます)。 しかし、windows-Installerはネイティブwin32 exeであるため、 "Any-CPU"として生成することはできません。 したがって、x86とx64用に2つの同一のインストーラを生成する必要があります。

+1

部分的に正しいです - MSIは実行可能ではありません*、実際には 'msiexec.exe 'によって読み込まれ、実行されるソートのデータベースです。 (*「MSI」に「。exe'接尾辞MSIをラップするブートストラップであり、ブートストラップはコンパイルされたコードですが、問題なく64ビットシステムで実行できます)。 – slugster

3

これは実行できますが、VSインストーラでは実行できません。私はInstallShield製品でこれを達成した同僚を持っていますが、それは絶対的なハックであったと言いましょう。そして、最終的に彼は2つの別個のインストーラを作成しました。私もあなたを啓発する必要が

:のx86、x64の、Itaniumの:

TargetPlatformプロパティでは、私はちょうどを持っています。そして、私はどこか任意のCPU

TargetPlatformプロパティは、インストールするアプリケーションのbit化を変更しないと呼ばれる別の1があることを知っている、あなたはそれがアセンブリ自身のターゲットプラットフォームと混ざってきています。 MSIは配送車両で、その中の.Netアセンブリはペイロードです。 TargetPlatform MSIの設定では、.NetアセンブリがJITコンパイルされている方法を管理するのではなく、インストールパスの決定に役立ちます(x86に設定されている場合、デフォルトのインストールパスは%PROGRAMFILES(x86)%になります)。 。対象

関連する問題