5

VS2008 インストーラー (およびカスタム Orca アクション) を使用して、.NET 製品のインストーラーを作成しています。

最近、私が使用していたサードパーティ製アセンブリの 1 つが x86 固有のものであることがわかりました (ネイティブ コードが含まれているため)。そのため、x64 のお客様は、アセンブリがプラットフォームに適していないというエラーで起動時にクラッシュしていました。

私はそのような顧客に、このサードパーティ アセンブリの x64 バージョンのコピーを送り、既存の x86 アセンブリにコピーするように伝えました。うまくいきました、甘い!したがって、インストーラーにこれを実行させる必要があります。

これは実際には自明ではないようです:(。理想的には、インストーラー(両方のプラットフォームで実行できるため、x86になります)に、このサードパーティアセンブリのx86バージョンとx64バージョンの両方を含め、適切なものをインストールするだけです。つまり、ユーザーの生活を楽にする単一のインストーラーが必要です。

MSI条件ステートメントなどを使用して、これがうまくいったと思いました。しかし、どうやらいいえ...「x86」または「x64」を指定しない限り、VS2008 セットアップ プロジェクトはコンパイルされません。x86 を指定すると、x64 アセンブリを含めることができないというコンパイル エラーが発生します。x64 を指定した場合、結果は x86 コンピューターでは実行できません。くそ!

誰かが以前にこの問題を抱えていたに違いありません。残念ながら Google は役に立たないので、StackOverflow に頼ります。

4

3 に答える 3

6

1年前にこれを調べたとき、それは不可能だという結論に達しました。Microsoft が提供する MSI ファイルの多くは、x86 と x64 で別々に提供されていることに注意してください。おそらく、可能であれば単一のファイルしか提供しないでしょう。

于 2008-09-14T03:29:06.040 に答える
3

私の理解が正しければ、x86 にインストールする場合は 1 つのファイルをコピーし、x64 プラットフォームにインストールする場合は別のファイル (同じ名前) をコピーする必要があります。

まず、x64 MSI は x86 プラットフォームでは実行されず、x86 MSI は x64 プラットフォームで WOW64 を使用してインストールされるため、2 つの異なるプラットフォームに対して 1 つの MSI を作成することはできません。

一方、2 つの異なるバージョンのファイルを含む 1 つの x86 MSI を作成し、インストール中に適切なファイルを選択的にコピーすることができます。

最も簡単な方法は、組み込みの VS2008 MSI ジェネレーターの代わりに WIX (V3) を使用することです。WIX を使用すると、顧客のマシンに何をどこにインストールするか、さまざまなプラットフォーム用にさまざまなインストーラーを生成する機能、および追加のボーナスとして完全な MSBuild サポートをはるかに細かく制御できます。(詳細については、 http://wix.sourceforge.netを参照してください。)

WIX がまだベータ版であることに疑問を持っている場合、生成された MSI ファイルは完全に問題なく、まだバグに遭遇したことはありません。(そして、私は生計を立てるためのセットアップ プロジェクトを開発しています。)

最後に、x86 インストーラーが x64 プラットフォームで実行されているかどうかを VersionNT64 プロパティで確認できます。そのプロパティが存在する場合は x64 を実行しており、そうでない場合は x86 で実行しています。

お役に立てれば。

于 2008-12-09T20:40:06.177 に答える
1

2 つの機能を使用して 2 つのファイル セットを選択的に含めることで、ある程度の成功を収めました (もちろん、個別のファイル識別子を使用して、別々のコンポーネントに含めます)。

x32 と x64 の両方にインストールするには、インストールを x32 としてマークする必要があります。常に x32 ディレクトリにインストールされ、WOW で実行される 32 ビット アプリケーションとして扱われます。

VersionNT64 プロパティを使用すると、Windows 64 インストールが存在するかどうかを判断し、必要なファイルを条件付きでインストールできます。

この機能が VS2008 インストール プロジェクトでどの程度利用できるかはわかりません。他の商用ツールを使用して、この方法でインストーラーをセットアップしています。もちろん、Orca を使用してそれを行うこともできますが、商用ツールで動作させることは自明ではなく、Orca ははるかに困難です。

于 2008-11-04T21:54:47.667 に答える