2016-03-24 44 views
2

this issueと似ています。Windows 10のIExpress.exeがWindows XPと互換性のないEXEを生成しています

私は、ブートストラップEXEと.NETアプリケーションMSIを自己解凍インストーラファイルにパッケージ化するために、IExpress(Windowsに付属)を長年使っています。私は最近のIExpressを使用して、私のコードについては何も変更せずにWindows 8.1からのWindows 10に

を移動(私のアプリは32ビットであるので、私は%windir%/SysWOW64にiexpress.exeのバージョンを使用しました)

Windows 10でWindows XPで実行されないEXEが発生します(「[FileName] .exeは有効なWin32アプリケーションではありません」)

Windows 8.1,8または7でIExpressを使用すると、正常に動作します。

誰でも光を放つか、解決策を提供できますか?

(Iは、Windows 10にWindows 8(ファイルバージョン11.0.9600.17416)からiexpress.exeをコピーし、代わりにそれを使用してみましたが、同じことが起こる。)

+0

Windows 10のボックス(Windows 10の%windir%\ SysWOW64からビルド)で問題を再現できません。再現するexeや何か助けてもらえますか? –

答えて

3

はいXPは本当に何度行われている別のリマインダーと。私はIExpressのは、生成したEXEファイルにdumpbin.exe /headersを実行すると、私は次を参照してください。

OPTIONAL HEADER VALUES 
     .... 
     10.00 operating system version 
     10.00 image version 
     6.00 subsystem version 
     .... 

サブシステムのバージョン番号は、最初のショーストッパーで、6.00は、ビスタのバージョン番号です。これは修復可能ですが、Editbin.exeを/ SUBSYSTEMオプションで変更するには、XPは5.01

オペレーティングシステムとイメージのバージョンは大きな問題で、Editbin.exeで修正できません。 XPがその価値にどのくらいの注意を払っているのか、実際には10.00を得ることはまったく新しいことではない。私はもうXPを搭載したマシンを持っていないので、試してみてください。

IExpress.exeの古いバージョンをコピーするだけでは不十分です。それは実際に仕事を得るためにc:\ windows \ syswow64 \ makecab.exeを使用します。私はそれがEXEヘッダの内容の実際のソースであるといういくつかの簡単な証拠を見る。盲目的にそのEXEをwindowsディレクトリにコピーするだけでは危険です。それを別々にしてください。

そうでなければ、自分自身のマシンまたはVMのいずれかで、XPのブート可能なコピーを保管しておいてください。 XPに特有の顧客の問題をトラブルシューティングするには、それが必要です。 XPを顧客に前向きにサポートしなければならないという面倒を払ってください。彼らは賢明で必要なことをより迅速に行う傾向があります。それでお手伝いできません。

+0

情報をありがとう - 私はdumpbin.exeについて知りませんでした。強制的にサブシステムのバージョンを変更することは不幸にも機能しません。代わりに、「プロシージャエントリポイント_except_handler4_commonをダイナミックリンクライブラリmsvcrt.dllに配置できませんでした」というメッセージが表示されます。そのエラーを軽減しようとするとさらに問題が発生します。私はWindows 8で私のビルドのiexpress.exeのステップを続けなければならないと思うし、私のアプリケーションの将来のバージョンに対するXPサポートの終了について考えている(私はXPサポートが私を抱いているので.NET 4.0に戻る)。 – Ross

関連する問題