【问题标题】:How to rename exe file如何重命名exe文件
【发布时间】:2010-09-26 12:53:45
【问题描述】:

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

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

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

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

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

【问题讨论】:

  • 您如何尝试重命名文件以产生此错误消息?您使用什么工具/命令?输出看起来一点也不熟悉。
  • 这是一个 Windows 消息框,当我尝试运行可执行文件时出现错误。我正在使用 Windows 资源管理器重命名,没什么特别的。
  • 那么,您确实设法重命名了文件,但是当您尝试运行重命名的可执行文件时出现错误?从您之前的描述中根本不清楚。听起来您的程序正在查看自己的文件名并试图从中派生一些东西。

标签: delphi linker rename


【解决方案1】:

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

【讨论】:

    【解决方案2】:

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

    【讨论】:

      【解决方案3】:

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

      【讨论】:

        【解决方案4】:

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

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

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

        【讨论】:

        • 这是我的错误。 bbb.exe - 无法找到组件 此应用程序无法启动,因为未找到 bbb.exe。重新安装应用程序可能会解决此问题。无论如何,在编译后重命名程序似乎不是一个非常优雅的解决方案。
        • 如果bbb.exe确实存在磁盘上,那么问题不在于重命名,而在于代码错误地找不到文件。
        • 我同意,重命名没有问题。问题在于运行重命名的可执行文件。
        • 也许您应该尝试找出程序中的哪些内容知道构建步骤中的名称?我想可以很容易地更改代码以随时适应程序具有的任何文件名
        【解决方案5】:

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

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

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

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

        【讨论】:

          【解决方案6】:

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

          【讨论】:

            猜你喜欢
            • 2016-03-11
            • 1970-01-01
            • 2023-03-14
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2020-03-23
            • 1970-01-01
            相关资源
            最近更新 更多