如何在未安装Delphi的机器上运行Delphi应用程序

时间:2017-05-03 07:07:57

标签: delphi delphi-2007

我有使用Runtime包构建的Delphi应用程序.exe。我需要将exe和其他bpls / dll存储在单独的(相对路径)文件夹中。 比如,.exe将在一个文件夹中,所有其他运行时包在另一个文件夹中包含dll / bpls。怎么做到这一点? 如果我在另一台没有安装delphi的机器上执行此操作,则会出现所需包的常见错误。

1 个答案:

答案 0 :(得分:2)

在启用运行时软件包的情况下编译EXE时,必须将所有使用过的BPL文件与EXE一起部署。

如果EXE在编译时与BPL静态链接,则它们必须存在,操作系统可以在加载EXE时,在实际运行之前找到它们。您必须将BPL放在与EXE相同的文件夹中,或放在系统的import SimpleSchema from 'simpl-schema'; SimpleSchema.extendOptions(['autoform']); Organizations = new Mongo.Collection('organizations'); Organizations.allow({ insert: function(userId){ return !!userId; }, update: function(userId, doc){ return !!userId; } }); OrganizationSchema = new SimpleSchema ({ organization: { label: "Organization Name", type: String }, members: { type: Array }, "members.$": Object, "members.$.name": String, "members.$.role": String, inOrganization: { type: Boolean, defaultValue: true, autoform: { type: 'hidden' } }, createdAt: { type: Date, label: "CreatedAt", autoform: { type: "hidden" }, autoValue: function() { return new Date(); } } }); Meteor.methods({ deleteOrganizations: function(id) { Organizations.remove(id); } }); SimpleSchema.debug = true; Organizations.attachSchema(OrganizationSchema); 环境变量中包含的文件夹中。

如果EXE没有静态链接到BPL,并且它们在运行时使用RTL的LoadPackage()函数由EXE代码加载,那么最好的选择是在加载时使用绝对路径。如果这不是一个选项,并且您必须使用相对路径,那么您可以使用SetDllDirectory()AddDllDirectory()将BPL文件夹添加到操作系统搜索路径,然后再调用PATH

阅读有关Windows在运行时如何定位DLL的MSDN文档(BPL只是具有内置Delphi RTL支持的DLL):

Dynamic-Link Library Search Order