2017-08-28 1 views
0

アイテムプロパティの[ビルドアクション]フィールドに埋め込みリソースとしてマークされた実行可能ファイルがクラスライブラリにあります。ファイルをディスクに書き込むときに、何の例外は発生しませんが、実行可能ファイルを実行しようとすると、このエラーが生成されます。ディスクへの書き込み後に実行ファイルが破損しています

「サポートされていない16ビットアプリケーションを

プログラムや機能」\ ?? \パス\へ\ exeファイル64ビット版のWindowsとの互換性がないため起動できないか、または実行できません。私はアイテムが前に破壊されていないことを確認した Example error

同じエラー、(Google画像検索/ MSDNから)別のexeファイルを(非互換性が間違って綴られている、それはエラーボックスに間違って綴られている意図的なものです) DLLに埋め込まれ、多くの答えがherehereでディスクに書き込まれましたが、そのうちのどれも動作していませんでした。それらはすべて同じエラーを生成します。ディスクへの実行ファイルを作成するための

コード:

public static bool RunExe(string path, string arguments) 
{ 
    try 
    { 
     var psi = new ProcessStartInfo(path, arguments); 
     psi.CreateNoWindow = true; 
     psi.UseShellExecute = true; 
     psi.RedirectStandardOutput = false; 

     var process = Process.Start(psi); 

     process.WaitForExit(); 

     process.Close(); 
    } 
    catch 
    { 
     return false; 
    } 
    return true; 
} 

その他の情報重要であるかもしれない:

  • 実行ファイルがクラスにある実行可能ファイルを実行するための

    public static void WriteEmbeddedToDisk(string embeddedFilename, System.Type assemblyType, string diskFilepath) 
    { 
        using (var input = Assembly.GetAssembly(assemblyType).GetManifestResourceStream(embeddedFilename)) 
        using (var output = File.Create(diskFilepath)) 
        { 
         input.CopyTo(output); 
        } 
    } 
    

    コード図書館A

  • WriteEmbeddedToDisk()RunExe()はクラスライブラリBの同じクラスにあります。
  • 同じプロセスで別の実行可能ファイルをディスクに書き込むときに同じエラーが発生しました。この実行可能ファイルは、クラスライブラリAにもあります。
+0

試しましたか?プラットフォームターゲットをビルド設定またはアセンブリの任意のCPUに設定しましたか? –

+0

@TobiasTheelはい、現在あります。 – user6710080

答えて

1

ディスクに書き込まれるファイルは、Windowsインストーラ(.msi)です。私はMSIファイルに.exe拡張子を付けることができなかったことに気がつかなかったので、拡張子を.msiに変更することでこの問題が解決されました。

関連する問題