如何使JclAppInstances独立于app文件版本?

时间:2012-11-12 13:30:53

标签: delphi jedi

我正在尝试使用JclAppInstances控制我的应用实例。它工作正常,直到我不在项目设置中更改我的文件版本。 如何使JclAppInstances独立于app文件版本,所以 即使版本不同,它也不允许用户启动应用程序的多个副本?

1 个答案:

答案 0 :(得分:4)

据我所知,您所谈论的课程并不关心应用程序版本。它基于应用程序路径,但只有在您没有自己指定唯一的应用程序ID时才会这样做。

TJclAppInstances.InitData方法使用此代码初始化内部应用程序ID:

if ExplicitUniqueAppId <> '' then
  FUniqueAppID := JclAIPrefix + ExplicitUniqueAppId
else
  FUniqueAppID := AnsiUpperCase(JclAIPrefix + ParamStr(0));

ExplicitUniqueAppId是一个空的全局变量。如果未将其设置为其他任何内容,则可以看到代码使用ParamStr(0)来设置应用程序ID。 ParamStr(0)返回应用程序的完整路径和文件名。如果您安装了多个版本的程序,那么它们必须位于不同的位置,这就是您的程序似乎关注应用程序版本的原因。事实上,只是他们在不同的地方;具体版本无关紧要。

要将ExplicitUniqueAppId设置为非空值,您需要调用JclAppInstances 的单参数版本。它希望该参数是特定于应用程序的GUID(可以通过在IDE中按 Ctrl + Shift + G 生成),但是它可以是您选择的任何字符串,只要它唯一标识您的应用程序。