生成包含嵌入设置的.exe文件

时间:2012-07-04 14:57:28

标签: c# .net winforms win32-process

我有一个执行某些任务的窗口应用程序,其中一个是打开一些文件,我们都知道.net为应用程序提供exe文件,可以用作点击开始。 我正在调用此应用程序应用程序。

现在我想生成一个窗口应用程序(简单的exe),让我们称之为application2,它将打开一个带有一些选项的表单(比如应用程序1要打开的文件的名称)和一个生成按钮。 / p>

单击generate按钮时,它应该为application1生成exe文件,并从application2传递数据。

请建议我该怎么做。

修改 我需要生成exe,它将在不同的系统上可用,它将定期执行某些任务。并且不同计算机的间隔colud是不同的。 所以我被要求生成哪个将接受时间间隔并将生成该间隔的exe

3 个答案:

答案 0 :(得分:0)

我认为您正在寻找的是application1能够接收命令行参数和application2以允许您选择文件并运行application1并传入这些参数。

我不认为它希望生成.exe的

答案 1 :(得分:0)

有很多方法可以考虑这样做:

  1. 使用带有设置文件名称的reg键读入,然后将您从app2写入的设置存储到文件中的app1中,以便app 1可以运行它

  2. 使用带有文件名或命令行参数的参数调用app1,并更新自己的应用程序设置文件。

  3. 将设置放在数据库中,因此任何地方的app1副本都可以找到它,假设所有用户都能看到数据库服务器

  4. 如果app1始终在运行,而app2则可以进行一些进程间通信,但这可能是4中更复杂的

  5. 不是重新编译exe,而是使用配置文件。

    如果失败了,编译.net只是那个,你可以有一个生成.cs文件的exe(或者更新一个,重新运行整个编译并输出一个exe文件......在命令行编译时使用google)但是我不会是我的选择。

答案 2 :(得分:0)

另一种方式,虽然不那么容易,但是

  • 编写应用程序1,尝试通过反射从不存在的类(例如SettingsOverride)中读取设置;如果没有找到,请回到自己的硬编码设置
  • 应用程序2使用CodeDOM或类似内容创建一个新程序集,为SettingsOverride类提供新保存的设置
  • 应用程序2使用ILMerge从应用程序1和设置程序集构建新的.exe;应用程序1中的反射代码现在应该选择新设置。

使用嵌入式资源也可能这样做,但我不确定如何。最后你可以在你的.exe中放一个字符串常量,比如400 X个字符,然后应用程序2可以扫描文件以找到它(如Unicode / UTF-16文本)并用包含新字符串的字符串替换它设置 - 但如果您需要重新计算校验和或类似项,我不是100%。