2

假设我有一个通用的垂直市场应用程序,我想将它打包为两个单独的程序 aaa.exe 和 bbb.exe。有没有办法使用 Delphi 链接器创建一个与 DPR 名称不同的 EXE/DLL 文件?

我不能只重命名文件,因为我收到此错误

    bbb.exe - 无法定位组件
      此应用程序无法启动,因为 aaa.exe 无法找到。
      重新安装应用程序可能会解决此问题。
 

现在一般来说,我可以重命名一个可执行文件,但不能重命名这个。感谢您的评论指出我在这方面的愚蠢。有一个问题,显然不是一个正常的问题,甚至不一定与Delphi有关。

我正在使用 Delphi 7(如果在 2007/2009 年可能会很棒,因为我需要更多的升级素材)

4

6 回答 6

15

Delphi 2007 和 Delphi 2009 都使用 MSbuild。您可以使用 MSbuild 中的构建后事件来做几乎任何您想做的事情。例如,您可以使用复制任务将 EXE 复制到一个新的文件名中。

于 2008-12-11T21:36:56.403 回答
5

除了 Craig 的出色回答(投票赞成)之外,如果您不幸陷入 D7,Craig 所说的仍然适用,您只需要自己完成繁重的工作,即为自己创建一个构建脚本来构建您的应用程序,而不仅仅是从 IDE 编译,使用 dos 脚本或(甚至更好的)powershell,它需要一些前期工作,但从长远来看会给你更多的灵活性。

于 2008-12-11T21:44:17.603 回答
4

您可以自己使用像 FinalBuilder 甚至 MSBuild 这样的构建管理器。不过,我仍然建议升级到 Delphi 2009。2009 年还有许多其他精彩的补充。

于 2008-12-11T22:44:24.317 回答
3

为什么编译后不能重命名文件?我没有得到整个 unix 参考。我可以重命名我在我的机器上找到的每个可执行文件,嗯......几乎每个人,只要他们当前没有执行。

为什么你不能?你没有告诉我们什么?

只需在资源管理器中右键单击文件,选择重命名,然后给它一个新名称。这对你不起作用吗?如果没有,请告诉我们原因,因为有些事情你没有告诉我们你的情况。

于 2008-12-11T23:57:33.310 回答
2

不,您不能让编译器创建一个名称与项目名称不同的文件。

您可以将您的项目放在“项目组”中。将批处理项目附加到组中,并在该批处理项目中输入命令以重命名或复制文件。当你选择“Compile All”或“Build All”时,你的主项目将被处理,如果它编译成功,下一个项目也将被处理,运行批处理文件。

或者,由于您只是说要将其打包为两个程序,因此只需将安装程序配置为在安装期间使用不同的名称编写两个副本,而不是在构建环境中生成两个副本,然后分发文件的两个副本。

我不明白您关于编译后无法重命名文件的评论。完全允许重命名 EXE 文件,只要它当时不使用。

于 2008-12-11T23:12:08.503 回答
0

或者,您可以让程序在运行时检查它自己的 exe 名称。如果它不是 aaa.exe 或 bbb.exe,则让它将自身复制到这两个名称中并终止(或启动它们!)

于 2008-12-11T22:46:09.930 回答