日期:2014-05-18  浏览次数:20905 次

如何让.exe生成.exe程序
比如我现在用C#写了一个程序编译后生成1.exe现在想实现一个功能,就是当我点这个1.exe程序的时候,让1.exe生成一个名叫2.exe的程序
1.exe和2.exe程序没有任何关系,
比如1.exe的功能只是MessageBox.Show("Hello");
而2.exe要实现可能是别的System.IO.File.Exists(filePath);
请问这个1.exe要如何写

------解决方案--------------------
占个楼 等待有高手回答

个人觉得 应该只能定制EXE,而不能制定1.EXE意料之外的功能的2.EXE生成.
定制的意思就是说.2.EXE已经存在一个模板程序.1.exe只是定制他的引用功能什么的.
------解决方案--------------------
.net framework提供了对编译器的访问的api
在没有装第三方编译器的情况下你可以直接调用
它编译C# VB.net JS.net的代码生成exe.另外
如果你熟悉编译原理和.net il的话,完全可以在
.net的生成动态程序集的库的帮助下弄出自己的一
个编译器生成自己的exe.
当然,最简单的方法就是把2.exe捆绑到1.exe的后
面.然后1.exe在需要的时候读自己的文件把2.exe
释放到硬盘上.
------解决方案--------------------
是不是可以在1.exe的代码里读写有关2.exe的代码,然后调用外部csc.exe程序来编译成2.exe?
------解决方案--------------------
通常做法是先做好1.exe和2.exe,这里2.exe要求比较高,需要能通过不同的参数等信息实现各种不同的功能。然后把2.exe改名比如2.dat。
用1.exe编译2.exe的过程就是把2.dat改名成2.exe,并把编译相关的参数加到2.exe后面(用2进制写进去,这样并不会破坏2.exe)然后2.exe执行时先去读自己最后的参数信息,然后实现不同功能,不知道说明白没。这类软件很多,比如做课件的,叫什么忘了。
------解决方案--------------------
最容易的做法是捆绑,调用编译器API编译生成自己的exe要求太高了些
------解决方案--------------------
利用安装生成软件(列入InstallShield)来打包,然后指定运行1.exe
------解决方案--------------------
用新线程的方法 具体的自己查下就知道
------解决方案--------------------
探讨
当然,最简单的方法就是把2.exe捆绑到1.exe的后
面.然后1.exe在需要的时候读自己的文件把2.exe
释放到硬盘上.

------解决方案--------------------
很简单的,.NET已经封装了.NET语言编译器,楼主可以直接调用
也就是说1.exe运行的时候,执行一段脚本就可以生成新的exe
------解决方案--------------------
也就是这样调用的:
C# code
//源代码字符串(最好从文件中读取)
string source = "using System;" +
                "using System.Windows.Forms;" +
                "namespace App2" +
                "{" +
                "    public class MainForm : Form" +
                "    {" +
                "          static void Main(string[] args)" +
                "          {" +
                "               " +
                "          }" +
                "    }" +
                "}";

//初始化C#编译器
Microsoft.CSharp.CSharpCodeProvider CScodeProvider = new Microsoft.CSharp.CSharpCodeProvider();
System.CodeDom.Compiler.ICodeCompiler icodeCompiler = CScodeProvider.CreateCompiler();

//设置C#编译器编译参数
System.CodeDom.Compiler.CompilerParameters compilerParameters = new System.CodeDom.Compiler.CompilerParameters();
compilerParameters.GenerateInMemory = false;  //生成文件
compilerParameters.GenerateExecutable = true;  //生成可执行文件
compilerParameters.ReferencedAssemblies.Add("System.dll");  //添加程序集引用
compilerParameters.ReferencedAssemblies.Add("System.Windows.Forms.dll");
compilerParameters.ReferencedAssemblies.Add("System.Drawing.dll");
compilerParameters.OutputAssembly = Application.StartupPath + "\\2.exe";  //指定输出文件

//开始使用这个参数,对脚本代码进行编译
System.CodeDom.Compiler.CompilerResults compilerResults = icodeCompiler.CompileAssemblyFromSource(compilerParameters, source);

//如果编译出错,那么出错信息就在compilerResults变量内

------解决方案--------------------
1.exe的功能输出"Hello 1_exe" 
2.exe的功能是输出:"ello 2_exe"

在调用1.exe时要调用2.exe,楼主是不是这个意思、
我的源代码如下:
 1.exe的 
using System;