0

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

4

1 回答 1

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++来生成ShiftG,但它实际上可以是您选择的任何字符串,只要它唯一地标识您的应用程序即可。

于 2012-11-12T16:37:59.033 回答