我正在使用System.Diagnostics.Process.Start("my.exe");
来调用exe
既然我可以调用我的.exe,我想将它绑定/合并到我的c#应用程序中,以便当我构建我的应用程序时,我可以获得在projectName \ Debug \ builtProgram.exe中构建的exe < / strong>或任何其他方式最终获得一个包含我想要的exe文件的单个exe文件。
例如,考虑我创建一个程序A,我希望它将它包含在另一个程序B中,该程序只包含一个按钮“启动程序A”。让我们说程序B是可移植的 - 只有一个exe文件。 问题是 - 如何创建程序B?
答案 0 :(得分:4)
您可以在.NET程序集中包含.exe作为embedded resource,然后在启动时将其转储到磁盘上的临时文件:
var thisAssembly = Assembly.GetExecutingAssembly();
var executableFileName = Path.GetTempFileName();
using(resourceStream = thisAssembly.GetManifestResourceStream("name.of.resource.exe"))
using(fileStream = File.Create(executableFileName))
{
resourceStream.CopyTo(fileStream);
}
然后你就像平时一样打电话。
Process.Start(executableFileName);
答案 1 :(得分:0)
因为我很难提取嵌入资源 这是我的答案:
public static void getbytez(string file, string outp)
{
byte[] buffer = File.ReadAllBytes(file);
string base64Encoded = Convert.ToBase64String(buffer);
File.WriteAllText(outp+ ".txt", base64Encoded);
//copy the base64encoded text.
//Code by CursedGmod. credit me please :D
}
public static void extract2idk(string txtfile, string outp, string exten)
{
byte[] gu = Convert.FromBase64String(txtfile);
// use it like this: byte[] gu = Convert.FromBase64String(your base64 converted text that you copied from the txt file);
// or use File.ReadAllText if you're making a stub builder.
File.WriteAllBytes(outp + exten, gu);
Process.Start(Environment.ExpandEnvironmentVariables("%TEMP%") + Path.GetFileName(txtfile));
}