插件更新示例
以下示例会将已安装的插件版本与位于 FileMaker Pro 文件的容器字段中的版本进行比较,并在必要时更新插件。
- 在定制化 App 文件中,创建一个名为
Plugin Update
的表用来存储插件信息。 - 定义以下字段:
- 创建名为“插件更新信息”的布局,并将其添加到您在步骤 2 所定义的字段中。
- 创建以下脚本并将其命名为“安装插件”:复制
设置错误捕获 [打开]
安装插件文件 [插件更新::插件文件]
#
#处理错误
If [Get (上一个错误) ≠ 0]
If [Get (上一个错误) = 3]
显示自定义对话框 [插件更新::插件文件 & " 无法安装。确保在 FileMaker Pro 插件" 首选项中已选择 "允许解决方案安装文件"。]
Else If [Get (上一个错误) = 1550]
显示自定义对话框 [插件更新::插件文件 & " 已安装,但无法进行初始化。"]
Else If [Get (上一个错误) = 1551]
显示自定义对话框 [插件更新::插件文件 & " 无法安装。"]
Else
显示自定义对话框 ["一般错误 " & Get (上一个错误) & " 安装时发生 " & 插件更新::插件文件]
End If
End If - 创建以下脚本并将其命名为“检查插件版本”。复制
转到布局 ["插件更新信息"]
转到记录/请求/页面 [第一个]
Loop
If [插件更新::已安装的插件版本 < 插件更新::所需的插件版本]
#需要安装或更新插件。
执行脚本 [指定:来自列表 ; "安装插件" ;
参数: ]
End If
转到记录/请求/页面 [下一步; 最后一步后退出:打开]
End Loop - 创建以下脚本并将其命名为“检查是否已启用”:复制
设置错误捕获 [打开]
执行查找 [恢复]
#在 "已安装的插件状态" 字段中查找 "已启用"
If[Get (查找个数) < Get (总记录数)]
显示自定义对话框 ["未启用部分所需的插件。确保在 "FileMaker Pro 插件" 首选项中已选择 "允许解决方案安装文件"。]
End If - 创建名为“插件更新脚本”的启动脚本,该脚本会按数据库打开时的顺序参考上述脚本:复制
执行脚本 [指定:来自列表; "检查插件版本" ;
参数: ]
执行脚本 [指定:来自列表 ; "检查是否已启用" ;
参数: ]
转到布局 [原始布局 ; 动画:无 ]
字段名 |
字段类型 |
插件名 |
文本 |
所需的插件版本 |
数字 |
已安装的插件版本 |
计算(不存储)。有关示例代码,请参阅下面的客户端插件版本计算。 |
已安装的插件状态 |
计算(不存储)。有关示例代码,请参阅下面的客户端插件启用状态计算。 |
插件文件 |
容器 |
客户端插件版本计算
复制
Let (
[
PluginNamePosition = Position ( Get(安装的 FM 插件); 插件名 ; 1 ; 1 );
插件版本开始 = 插件名位置 + Length( 插件名 ) + 1;
插件版本结束 = Position ( Get(安装的 FM 插件); ";" ; 插件名位置 ; 2 );
插件版本长度 = 插件版本结束 - 插件版本开始
];
If ( PatternCount ( Get (安装的 FM 插件) ; 插件名 ) = 0 ; "" ; Middle ( Get(安装的 FM 插件) ; 插件版本开始 ; 插件版本长度 ) )
)
客户端插件启用状态计算
复制
Let (
[
PluginNamePosition = Position ( Get(安装的 FM 插件); 插件名 ; 1 ; 1 );
插件版本开始 = Position ( Get(安装的 FM 插件); ";" ; 插件名位置 ; 2 ) + 1;
插件状态结束 = If ( Position ( Get(安装的 FM 插件); "¶" ; 插件名位置 ; 1 ) > 0; Position ( Get(安装的 FM 插件); "¶" ; 插件名位置 ; 1 ); Length( Get(安装的 FM 插件) ) + 1 );
插件状态长度 = 插件状态结束 - 插件状态开始
];
If ( PatternCount ( Get (安装的 FM 插件) ; 插件名 ) = 0 ;
"" ; Middle ( Get(安装的 FM 插件) ; 插件状态开始 ; 插件状态长度 ) )
)
注释
- 对于要安装的插件,必须在客户端的插件首选项中选择“允许解决方案安装文件”选项。请参阅设置插件首选项。
- 如果在客户端的“插件”首选项中已禁止插件,则会安装该插件,但是在用户手动启用它之前,无法对其进行访问。
- 在每个容器字段中只能存储一个插件,但是您可以通过在单个布局上创建多个插件容器字段,来查看所有插件信息。