同一应用程序的两个不同版本

4

我有一个用Delphi 2010编写的软件,需要两个不同部门使用,它们共享相同的数据和UI,除了一些变化,比如隐藏/添加按钮、窗体和网格列。因此,需要有两个版本的同一应用程序。

无法在应用程序启动时提示用户选择部门,必须使用单独的EXE文件。

在Delphi 2010或XE3中,最佳方法(概念)是什么?是否可以使用不同的exe名称进行编译?


4
启动时提醒和完全不同的可执行文件之间有其他选项。为什么不使用配置或设置文件呢? - J...
1
如果软件有登录功能,可以通过为应用程序设置用户权限轻松解决。或者如上所述,使用配置文件或设置文件。或者从中创建2个不同的项目。但这意味着更改时必须进行两次操作。 - Teun Pronk
请告诉我更多关于如何使用配置或设置文件与不同编译的EXE一起使用。 - zac
能否将同一个应用程序保存到两个Delphi项目文件*.dproj中,并共享这些文件以编译两个EXE,然后从文件中读取设置? - zac
4
配置文件将成为单个EXE解决方案。在启动时读取该文件并显示适当版本的表单。这就是我会做的方式。 - David Heffernan
配置是几乎你所使用过的所有程序都提供的内容。Windows 本身就有很多配置选项,Delphi 也是如此。我很惊讶 Welliam 以前没有听说过配置文件或注册表键……也许一本大的 Delphi 书会帮助你找到方向,Welliam! - Warren P
4个回答

9
我可以想到以下几种解决方案:
  • 提供INI文件作为发布应用程序的一部分(或在客户端计算机上创建注册表键)以指定/确定应用程序服务的部门。然后通过 TIniFileTRegistry 读取值。例如,一个包含以下内容的INI文件(MyApp.ini):

    [Options]
    Department=Sales

  • 创建一个快捷方式并使用参数,例如"MyApp.exe /sales""MyApp.exe /support"ParamStr(1)将告诉您它是 /sales 还是 /support 部门)。

  • 使用两个单独的项目文件,并在每个项目选项中定义您的条件编译指令,例如SALESSUPPORT,然后在代码中使用{$IFDEF SALES}...{$ENDIF} - 使用这些选项,完全重建所有项目单位非常重要。(我有一个预构建脚本,在编译之前删除项目*.dcu文件)。


9
听起来像是一个维护的噩梦,所以请考虑其他解决方案,例如评论中建议的登录或设置文件。如果您确实想要创建单独的exe文件,那么可以使用编译器定义,并根据定义包含/排除代码的部分。
添加一个新配置:

enter image description here

将定义添加到配置中:

enter image description here

在您的代码中使用定义:

{$IFNDEF ADVANCED}
   // Remove Event Handler
   Button1.OnClick := nil;
   // Hide Button
   Button1.Visible := False;
{$ENDIF}

将尝试使用设置文件,如果没有,我将使用$IFDEF...非常感谢。 - zac

0

您需要在应用程序中加入权限系统,该系统可以定制给不同的团体和配置文件,并且您可以为所有使用该应用程序的终端用户分配角色或特定权限。您可以自行开发该系统,也可以依赖第三方产品,例如TMS安全系统

enter image description here


0

可能的一件事是制作第一个项目。 创建您的应用程序。

然后在同一个文件夹中创建第二个项目,并将第一个项目的所有单元添加到该项目中。

现在,在您的第二个项目中,如果只需要进行小的更改,例如从第一个项目中派生一个新类,然后在其中进行更改。

这样,您就拥有了2个具有共享代码库的可执行文件。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接