How to include an executable in the c# console project

M

Mo

Hi,

Is there a way to include an executable (xxx.exe) file inside a c#
console project so that the resulting project binary have only one
final executable file? My c# console application is calling another
Executable (exe) which I am trying to include in my project so I can
only have one file for the executable. Any ideas?

Mo
 
W

Willy Denoyette [MVP]

Mo said:
Hi,

Is there a way to include an executable (xxx.exe) file inside a c#
console project so that the resulting project binary have only one
final executable file? My c# console application is calling another
Executable (exe) which I am trying to include in my project so I can
only have one file for the executable. Any ideas?

Mo


One .exe cannot *call* another exe, one .exe can only *start* another .exe,
and this requires both .exe to be separate PE files.

Willy.
 
N

Nicholas Paldino [.NET/C# MVP]

Mo,

Not that I know of. You would have to include the other executable
separately.

If the executable is self-contained, and has no dependencies that you
need to ship, then you could include the executable as a resource in your
main executable, then extract and save it to disk and execute it when
needed. It would still require some cross-process communication to get the
results, but you would have one executable you have to ship.
 
A

Arnshea

Hi,

Is there a way to include an executable (xxx.exe) file inside a c#
console project so that the resulting project binary have only one
final executable file? My c# console application is calling another
Executable (exe) which I am trying to include in my project so I can
only have one file for the executable. Any ideas?

Mo

If I'm reading you correctly you may be able to include the 2nd
executable in the 1st project as an embedded resource. The 1st
executable could read the embedded resource, write it out to a file,
then execute it. Something along the lines of:

static void Main(string[] args)
{
string outFile = args[0];

Assembly asm = Assembly.GetExecutingAssembly();
Stream stream =
asm.GetManifestResourceStream("EmbeddedEXETest.EmbeddedEXETest.exe");

byte[] buf = new byte[4096];
FileStream fOut = new FileStream(outFile, FileMode.Create);

int bytesRead = 0;
while ( (bytesRead=stream.Read(buf, 0, buf.Length)) > 0 )
fOut.Write(buf, 0, bytesRead);

stream.Close();
fOut.Close();

Console.WriteLine("Output written to {0}", outFile);
}
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Top