3

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

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

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

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

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

感谢您的回复和帮助。

谢谢你。

4

5 回答 5

6

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

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

  1. 创建P和C。在P的资源数据中插入C。
  2. 当用户在选择选项后单击按钮时,P 将从其资源数据中提取 C。
  3. 创建了一个包含用户选择的选项的 XML 文件,并将其插入到 C 的资源数据中。

因此,只要 C 运行,它将使用填充在其中的 XML 文件中给出的选项。它看起来既复杂又笨拙,但可靠且简单。在“delphi embedding resource in exe”上google一下,你会发现上面有很多文章要做。

于 2010-08-30T06:12:17.763 回答
2

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

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

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

于 2010-08-31T06:48:25.203 回答
2

有可能的。您需要在目标机器上安装一个 Delphi 7(或兼容的)编译器(至少是命令行)。您还需要已编译应用程序的所有源代码,其中包括所有第三方库(如果您使用的话)。

完成所有设置后,只需使用正确的参数和路径调用命令行编译器 (DCC32.EXE)。

您可以为此使用两种方法:

  • 调用 ShellExecute
  • 调用 CreateProcess

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

于 2010-08-30T05:52:08.970 回答
2

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

于 2010-08-30T08:30:42.910 回答
0

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

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

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

于 2010-08-30T11:57:58.637 回答