需要创建一个编译的delphi应用程序,可以创建一个单独的编译应用程序

时间:2010-08-30 05:33:52

标签: delphi delphi-2010 delphi-7 compiled

我需要创建一个应用程序,让用户选择一些选项,单击一个按钮,然后创建一个单独的编译应用程序。这可能吗?我正在使用delphi 7和2010。

感谢您的回复。这是一个更多的信息。

它必须是一个图形应用程序并创建一个图形应用程序。

我想要的是用户启动'App A'(我最初制作),能够选择一些选项(我为保密而道歉。我认为这是一个百万美元的想法,可能有3个人可能会觉得有用:)然后使用该程序创建“App B.”然后可以将“App B”分发给最终用户,“App B”是包含已编译应用程序和配置数据的单个可执行文件。我不在乎怎么做,但我需要'App B'成为一个可执行文件。

我甚至不需要将Delphi用于最终编译的应用程序。如果有某种“伪编译器”我可以从Delphi调用,它会将预编译的exe和单独的配置文件合并到一个可执行文件中。那也行得很好。

感谢您的回复和帮助。

谢谢。

5 个答案:

答案 0 :(得分:6)

我也遇到过类似的情况。我不得不使用我的exe生成一个exe。由于复杂性和许可证问题,我不想编译源代码。

让我们调用父应用程序P和子应用程序C.此外,我们假设C需要的任何选项都可以在配置文件(XML / INI等)中进行总结。我最终做的是:

  1. 在P。
  2. 的资源数据中创建P和C.插入C.
  3. 当用户在选择选项后单击按钮时,P将从其资源数据中提取C.
  4. 创建一个XML文件,其中包含用户选择的选项并将其插入C的资源数据中。
  5. 因此,只要C运行,它就会使用填充的XML文件中的选项。它看起来像复杂和hacky但可靠和简单。做一个谷歌“delphi嵌入资源在exe”,你会发现很多文章要做。

答案 1 :(得分:2)

鉴于Delphi编译器无法重新分发,如果用户没有Delphi副本,一种解决方案可能是使用脚本引擎(即RemObjects PascalScript,但还有其他),为其生成代码,并嵌入在启动时执行它的可执行文件中的代码(即在资源内)。

答案 2 :(得分:1)

有可能。您将需要在目标计算机上使用Delphi 7(或兼容)编译器(至少命令行)。您还需要编译应用程序的所有源代码,如果您使用任何源代码,则包括所有第三方库。

当你拥有它时,只需使用适当的参数和路径调用命令行编译器(DCC32.EXE)。

您可以使用两种方法:

  • 调用ShellExecute
  • 调用CreateProcess

您可以使用CreateProcess更好地控制执行。如果您打算以这种方式使用编译器,您还必须注意法律问题和许可证。

答案 3 :(得分:1)

创建一个单独的存根可执行文件,它可以实现您需要的所有逻辑,并从其自己的本地资源中读取其配置(查看TResourceStream类以帮助您在运行时加载资源)。​​

在编译时,将主存储可执行文件作为RCDATA资源包含在主应用程序的资源中。

在运行时,主应用程序可以在需要时从其资源中提取存根可执行文件,将其保存到磁盘,并使用Win32 API UpdateResource()函数将必要的配置数据插入到存根的资源中。

答案 4 :(得分:0)

如果不了解您认为需要这样做的原因,我认为您实际上并不需要这样做。鉴于规定的要求,我只需要一个用Delphi编写的应用程序,它会查找配置数据的存在(.ini文件,注册表等等。)如果没有这个,它会显示一个“将让它”的屏幕用户选择一些选项,单击“按钮”。然后选项存储在.ini文件中,程序的其余部分继续使用这些选项。

或者,我会使用一些pascal脚本,例如TMS提供的脚本。

如果您正在寻找一种方法来制作应用程序的自定义品牌版本,可以使用Inno Setup和ResHacker步骤。即收集Inno中的需求,将.exe吐出到临时目录中,使用ResHacker修改.exe,将其复制到程序文件夹中。