3

私は両方の16\32\64ビットシステムで実行されるはずの小さなユーティリティを書いています。私の古いユーティリティは、16ビットバージョンを32ビットに圧縮し、/stubVisual Studio 2008(/ STUB -MS-DOSスタブファイル名)でスイッチを適用することにより、32ビットと16ビットの両方で実行されていました。

64ビットの実行可能ファイルで同じことを行う方法を探しています。ターゲットの64ビットシステムはWinPE64ビットであり、WOW64がインストールされていません。

出来ますか?

4

3 に答える 3

3

Windows実行可能ファイルのDOSスタブはMZセクションを使用しますが、32ビットと64ビットの実行可能ファイルはどちらもPEセクションを使用します。これにより、DOSスタブがいずれかのWindows実行可能ファイル内に存在できるようになりますが、32ビットと64ビットの実行可能ファイルを結合しようとすると衝突が発生します。

于 2010-01-31T10:37:27.923 に答える
2

32ビットと64ビットのutilを別のexeのリソースにパックする必要があります。これを、ランチャー32ビットと呼びましょう。次に、ランチャーは、起動元のシステムを検出し、そのリソースから適切なバイナリを抽出して起動する必要があります。

于 2010-01-31T10:45:26.643 に答える
0

Windows 32ビットはwowexec.exeによって16ビットアプリケーションを実行し、Win64はwow64によって32ビットアプリケーションを実行します。したがって、wow64がないと、プログラムでWindows上にユニバーサルランチャーを作成することはできません。(注:Mac OSXはとにかく単一のバイナリで複数のアーキテクチャをサポートしています)

私が理解できる最善のアプローチは、単一のMSIインストーラーパッケージを作成し、それに両方の32/64exeを配置することです。

于 2010-02-01T01:20:23.400 に答える