Plug-in update example
The following example compares the version of an installed
plug-in to the version located in a container field in the FileMaker Pro file and updates the plug-in, if necessary.
1. In the solution file, create a table named Plugin Update to store plug-in information.
2. Define the following fields:
Field name | Field type |
Plugin Name | text |
Required Plugin Version | number |
Installed Plugin Version | |
Installed Plugin State | |
Plugin File | container |
3. Create a layout named Plugin Update Information and add to it the fields you defined in step 2.
4. Create the following script and name it Install Plug-in:
Set Error Capture [On]
Install Plug-In File [Plugin Update::Plug-in File]
#
#Deal with errors
If [Get(LastError) ≠ 0]
If [Get(LastError) = 3]
Show Custom Dialog [Plugin Update::Plugin File & " could not be installed. Ensure Allow Solutions to Install Files is selected in the FileMaker Pro Plug-in preferences."]
Else If [Get(LastError) = 1550]
Show Custom Dialog [Plugin Update::Plugin File & " was installed but could not be initialized."]
Else If [Get(LastError) = 1551]
Show Custom Dialog [Plugin Update::Plugin File & " could not be installed."]
Else
Show Custom Dialog ["A general error " & Get(LastError) & " occured when installing " & Plugin Update::Plugin File]
End If
End If
5. Create the following script and name it Check Plug-in Versions.
Go to Layout ["Plugin Update Information"]
Go to Record/Request/page [First]
Loop
If [Plugin Update::Installed Plugin Version < Plugin Update::Required Plugin Version]
#Plug-in needs to be either installed or updated.
Perform script ["Install plug-in"]
End If
Go to Record/Request/page [Next; Exit after last: On]
End Loop
6. Create the following script and name it Check If Enabled:
Set Error Capture [On]
Perform Find [Restore]
#Find for "Enabled" in the Installed Plugin State field
If[Get(FoundCount) ≠ 0]
Show Custom Dialog ["Some required plug-ins are not enabled. Ensure Allow Solutions to Install Files is selected in the FileMaker Pro Plug-in preferences."]
End If
7. Create a start-up script named Plugin Update Script that references the above scripts in order when the database opens:
Perform Script ["Check Plug-in Versions"]
Perform Script ["Check If Enabled"]
Go to Layout [original layout]
Client plug-in version calculation
Let (
[
PluginNamePosition = Position ( Get(InstalledFMPlugins); Plugin Name ; 1 ; 1 );
PluginVersionStart = PluginNamePosition + Length( Plugin Name ) + 1;
PluginVersionEnd = Position ( Get(InstalledFMPlugins); ";" ; PluginNamePosition ; 2 );
PluginVersionLength = PluginVersionEnd - PluginVersionStart
];
If ( PatternCount ( Get (InstalledFMPlugins) ; Plugin Name ) = 0 ; "" ; Middle ( Get(InstalledFMPlugins) ; PluginVersionStart ; PluginVersionLength ) )
)
Client plug-in enabled state calculation
Let (
[
PluginNamePosition = Position ( Get(InstalledFMPlugins); Plugin Name ; 1 ; 1 );
PluginStateStart = Position ( Get(InstalledFMPlugins); ";" ; PluginNamePosition ; 2 ) + 1;
PluginStateEnd = If ( Position ( Get(InstalledFMPlugins); "¶" ; PluginNamePosition ; 1 ) > 0; Position ( Get(InstalledFMPlugins); "¶" ; PluginNamePosition ; 1 ); Length( Get(InstalledFMPlugins) ) + 1 );
PluginStateLength = PluginStateEnd - PluginStateStart
];
If ( PatternCount ( Get (InstalledFMPlugins) ; Plugin Name ) = 0 ;
"" ; Middle ( Get(InstalledFMPlugins) ; PluginStateStart ; PluginStateLength ) )
)
Related topics