如何将exe绑定/合并到我的程序中?

时间:2011-04-17 16:57:45

标签: c#

我正在使用System.Diagnostics.Process.Start("my.exe");来调用exe

既然我可以调用我的.exe,我想将它绑定/合并到我的c#应用程序中,以便当我构建我的应用程序时,我可以获得在projectName \ Debug \ builtProgram.exe中构建的exe < / strong>或任何其他方式最终获得一个包含我想要的exe文件的单个exe文件。

例如,考虑我创建一个程序A,我希望它将它包含在另一个程序B中,该程序只包含一个按钮“启动程序A”。让我们说程序B是可移植的 - 只有一个exe文件。 问题是 - 如何创建程序B?

2 个答案:

答案 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));
    }