我正在尝试使用 JclAppInstances 控制我的应用程序实例。它工作正常,直到我不在项目设置中更改我的文件版本。如何使 JclAppInstances 独立于应用程序文件版本,因此即使版本不同也不会让用户启动应用程序的多个副本?
问问题
264 次
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++来生成Shift)G,但它实际上可以是您选择的任何字符串,只要它唯一地标识您的应用程序即可。
于 2012-11-12T16:37:59.033 回答