In the SDK documentation, under Getting Started, it says:
Version Strategy
The version of the MIP SDK and the version of the an installed XProtect VMS at a customer site will often be out of sync, but it will work fine when:
-
The plug-in and the standalone applications always refer to one or more of the files that starts with “VideoOS.Platform”
-
When you install a new plug-in on an older version of XProtect VMS, please replace the VideoOS.Platform.dll with the newest from the MIP SDK.
I have 2 versions of the SC: 2017R2 and 2016 (vanilla). I have copied the VideoOS,Platform.dll from the 2017 R2 SDK into the plugin dir (as indicated by the picture in the help) on the 2016 machine.
I am developing with the MIP SDK 2017 R2
On the 2016 machine my plugin crashes with a MissingMethodException
VideoOS.Platform.Util.AnalyticsOverlayBuilder.BuildShapeOverlay
How can I deal with this? Is the VideOS.platform.dll in the right place?
Thanks
I believe you are on the right track. The VideoOS.Platform.dll to replace with a newer VideoOS.Platform.dll is in the Smart Client install folder, same place as the Client.exe
In a default installation of a 64 bit Smart Client it is [C:\Program](file:C:/Program) Files\Milestone\XProtect Smart Client
(In a default installation of a 32 bit Smart Client (in a 64 bit Windows OS) it is [C:\Program](file:C:/Program) Files (x86)\Milestone\XProtect Smart Client)
In a non-default installation path I would locate the Client.exe and replace the VideoOS.Platform.dll in the same folder.
Note for plug-ins in other environments:
The Event Server uses the VideoOS.Platform.dll in [C:\Program](file:C:/Program) Files\Milestone\XProtect Event Server (or where ever VideoOS.Event.Server.exe runs from).
The Management Client uses the VideoOS.Platform.dll in [C:\Program](file:C:/Program) Files\Milestone\XProtect Management Client (or whereever VideoOS.Administration.exe runs from).
The Management Application uses the VideoOS.Platform.dll in [C:\Program](file:C:/Program) Files (x86)\Milestone\Milestone Surveillance (or whereever ManagementApplication.exe runs from).
@Bo Ellegård Andersen (Milestone Systems) Thanks for the response.
This works (in a sense - it doesn’t crash anyway).
However it also presents a problem.
Presumably the installation script for a plugin must therefore also install the VideoOS.Platform.dll into the SmartClient application dir. But if there are plugins installed from multiple vendors who have all used different versions of the MIP SDK, how can you be sure that the version of VideoOS.Platform.dll in the application dir is the latest of all installed plugins?
My assumption is that it would be at the version of whatever MIP SDK was used by the developer of the most recently installed plugin.
The same is true if installing a plugin developed with an old version of the MIP SDK against a newer version of the SC. VIdeoOS.Platform.dll will be replaced with an older version.
Also - one tip for the MIP SDK documentation - it’s a little confusing at the moment, as it does not explicitly state that the VideoOS.Platform.dll has to go in the SC app dir, and the snapshot of the plugin directory structure suggests that it should be installed locally alongside the plugin, not in the main app dir:
![Capture]()
Thanks!
Ben
We have actually discussed something like this recently in the Milestone MIP SDK team. Our feeling is that partners and customers do not want to bother with replacing the VideoOS.Platform.dll but prefer instead to simply upgrade the Smart Client. It is not because it is easier but you get the clear benefit that you have the newest and best Smart Client if you upgrade instead.
Now if you do replace the VideoOS.Platform.dll you should do so if the existing dll is older, not if it is newer.
I agree that an illustration showing a VideoOS.Platform.dll where it does not belong is confusing and I will update the illustration in the MIP Documentation. Thank you for putting this to my attention.
@Bo Ellegård Andersen (Milestone Systems) Thanks for the clarification.
To summarise:
The recommended approach is to not bundle VideoOS.Platform.dll with a plugin installer and instead specify the minimum SC version as a requirement to use the plugin.
Then, the end user should update the SC to the latest version if their current version predates the version of the MIP SDK contained within the plugin.
Yes. That is my recommendation.
Then keep the replacement of VideoOS.Platform.dll as a workaround procedure should you have a customer that for some reason is unwilling to upgrade the Smart Client.