Visual Studio 2008 を使用して Windows インストーラーを作成し、x86 と x64 の両方のオペレーティング システムを対象とする方法はありますか。
TargetPlatform プロパティにはx86
、 , x64
, Itanium
. そして、どこかに別の名前が付けられていることは知ってAny CPU
いますが、見つかりません。
また、セットアップを 2 つ作成したくありません。
何か案は ?
ありがとう。
Visual Studio 2008 を使用して Windows インストーラーを作成し、x86 と x64 の両方のオペレーティング システムを対象とする方法はありますか。
TargetPlatform プロパティにはx86
、 , x64
, Itanium
. そして、どこかに別の名前が付けられていることは知ってAny CPU
いますが、見つかりません。
また、セットアップを 2 つ作成したくありません。
何か案は ?
ありがとう。
これは可能ですが、VisualStudioで直接行うことはできません。一般的なアプローチは次のとおりです。
Orcaを使用して変換を作成できます。商用ソリューションが必要な場合は、AdvancedInstallerまたはInstallShieldを試すことができます。
これが複雑すぎると思われる場合は、32ビットパッケージと64ビットパッケージを別々に使用できます。
実行できますが、VSインストーラーでは実行できません。InstallShield製品でこれを達成した同僚がいますが、これは絶対的なハックであり、最終的には、ターゲットのビット数ごとに1つずつ、2つの異なるインストーラーを作成するというはるかに優れた結果になりました。
私もあなたを啓発する必要があります:
TargetPlatformプロパティには、x86、x64、Itaniumがあります。そして私はどこかにAnyCPUと呼ばれる別のものがあることを知っています
このTargetPlatform
プロパティは、インストールするアプリケーションのビット数を変更しません。アセンブリ自体のターゲットプラットフォームと混同されます。MSIは配信手段であり、その中の.Netアセンブリはペイロードです。TargetPlatform
MSIの設定は、.NetアセンブリのJITコンパイル方法を制御しません。代わりに、インストールパスの決定に使用されます(x86に設定されている場合、デフォルトのインストールパスはである必要が%PROGRAMFILES(x86)%
あり、さまざまなレジストリハイブが対象になります。
私は間違っているかもしれませんが、これはできないと確信しています。あなたが言及した Any-CPU は、アセンブリの .Net コンパイラによって使用されます (.Net アセンブリは、デフォルトではアーキテクチャに依存しませんが、x86 または x64 として強制的にコンパイルすることができます)。ただし、windows-Installer はネイティブの win32 exe であるため、「Any-CPU」として生成することはできません。そのため、x86 用と x64 用の 2 つの同一のインストーラーを生成する必要があります。