【发布时间】:2012-08-05 16:08:06
【问题描述】:
请问可以请教一下吗?
Development machine – Windows 7 64bit
IDE – Delphi 7 pro (with 7.1 update)
Target machine for install – Windows XP (SP3) – NB this is the Win 7 Virtual Machine
我已经构建了一个小型应用程序,只不过是一个测试应用程序。一个网格,一个连接到 MS accdb 文件的 TADOConnection 和一些 TADOTables。使用 Inno Setup 我还构建了一个安装程序。我保证,这是一个非常简单的应用程序。
当我在 XP 虚拟机上安装“应用程序”时,一切都按计划进行,即没有错误消息并且安装程序完成。但是,应用程序不会启动。在同一个 XP VM 上,我安装了 D7,但奇怪的是,如果 IDE 正在运行,我的应用程序将毫无问题地启动。如果我关闭 IDE,我的应用程序将无法重新启动。
我得到的只是一两秒的沙漏,仅此而已……没有错误消息,没有可怕的 MS 对话框询问我是否要向他们发送有关此可怕应用程序的信息,实际上我没有得到任何反馈。
NB - 无论是从 IDE 运行,还是在 IDE 外部运行,在 Win 7 机器上,应用程序都运行良好。
我显然错过了一些非常明显的东西,但我迷路了。我什至尝试过……。
program Project1;
uses
Dialogs,
Forms,
Unit1 in 'Unit1.pas' {Form1};
{$R *.res}
begin
Application.Initialize;
ShowMessage('Starting');
Application.CreateForm(TForm1, Form1);
Application.Run;
end.
但我没有看到 ShowMessage 对话框。
我已经阅读了许多“Hello World”教程。从慷慨的 SO 贡献者那里收集了大量知识(谢谢)。但是必须有另一个教程教我如何“准备”我的应用程序以包含在安装程序中。我想如果我取消选中项目选项中的“使用运行时包构建”,然后执行项目 > 项目构建,我可以构建一个文件,其中包含在 IDE 之外运行应用程序所需的一切。
请问谁能指点我拼图的最后一块?
顺便说一句,有没有办法在 IDE 之外调试可执行文件?也许 Delphi 中的某些开关会在应用程序启动时生成一个日志文件……或尝试这样做。
感谢您的宝贵时间?
问候, 约翰。
编辑 - 我之前提到该文件将在我的 W7 机器上的 IDE 之外运行。我弄错了……除非 D7 也启动并运行,否则它不会运行。此外,我制作了包含此文件的原始文件夹的副本,并开始弄乱项目选项开关。突然,新文件的大小是原来的两倍,并且运行正常。问题...我无法复制我在原始文件/项目上所做的任何更改,以确定我所做的是原因/修复。
编辑 2 - 好的 - 问题肯定与不同的文件大小有关。我在 XP 卷上创建了一个文件夹,并从 Win 7 Delphi 安装中的输出目录中删除了我所有 BPL 的副本。将我的 exe(不会在 IDE 之外运行的文件)以及我的 accdb 文件放在其中。双击并...嘿 Presto - 它运行。网格显示了我的示例数据……很漂亮。
事情是这样的...项目>选项>包>使用运行时包构建未选中。这应该为我构建一个大的 exe 文件 - (是正确的)但它构建了一个需要 BPL 的相对较小的 exe !!!!
将进行更多测试...
【问题讨论】:
-
我还应该提到我也在 XP 卷上安装了 AccessRuntimeEngine。约翰。
-
您是否使用任何试用版组件。它们有时被设计为仅在 IDE 中运行。
-
@David Heffernan。谢谢你的想法,大卫。我实际上已经想到了这一点,因为我有一个 EurekaLog 试用版。我没有从 IDE 中卸载它,但我已经从项目中禁用了它。我想我需要退后一步,构建另一个示例应用程序,一次添加一个组件,并每次测试安装文件。我有一种可怕的感觉,这将是一件很容易解决的事情。 PS 除了 EurekaLog,Win 7 IDE 今天是全新安装的。
-
这与您的安装程序无关,尤其是在您不使用运行时软件包的情况下。 Delphi 应用程序确实是独立的;除了少数例外,它们可以通过简单的
xcopy“安装”。很难说可能出了什么问题。您可能正在使用第三方组件,该组件使某些 API 调用在 XP 上不受支持,或者在内存中做了一些 XP 无法捕获的奇怪事情。至于调试它,如果您在开发机器和您尝试运行的 VM 之间有 TCP/IP,则可以使用远程调试。请参阅remote debugging的文档。开始工作有点困难。 -
@Johnny:对你第一次提出的问题表示赞同,因为它的质量。显然,您已经在这里潜伏了一段时间,并且了解何时以及如何提出问题。欢迎来到 SO!
标签: delphi