Professional OPC
Development Tools

logos

LogEntry event return nothing

More
17 Nov 2016 10:31 #4579 by support
I do not know for sure. It is also not clear which of the two changes has helped (whether it was just the fact of using our installer, or the fact of storing the assemblies into the GAC).

The manual method should work, however. Below is part of our installer code (in Inno Setup) which takes care of the same thing, so you can compare it with what you have done:
[Run]
; QuickOPC-COM
; Keep the assemblies sorted in dependency order bottom to top, in order to prevent creation of unwanted additional TLBs.
FileName: "{dotnet40}\RegAsm.exe"; Parameters: """{app}\Assemblies\net452\OpcLabs.BaseLib.dll"" /codebase /tlb:""{app}\Lib\OpcLabs.BaseLib.tlb"""; StatusMsg: "Registering OpcLabs.BaseLib assembly for COM interop..."; Components: comcomponents or devlibs; Flags: runhidden; Check: DotNetFx45InstalledCheck;
FileName: "{dotnet4064}\RegAsm.exe"; Parameters: """{app}\Assemblies\net452\OpcLabs.BaseLib.dll"" /codebase /tlb:""{app}\Lib\x64\OpcLabs.BaseLib.tlb"""; StatusMsg: "Registering OpcLabs.BaseLib assembly for COM interop..."; Components: comcomponents or devlibs; Flags: runhidden; Check: DotNetFx45InstalledCheck and IsWin64;
FileName: "{dotnet40}\RegAsm.exe"; Parameters: """{app}\Assemblies\net452\OpcLabs.BaseLibForms.dll"" /codebase /tlb:""{app}\Lib\OpcLabs.BaseLibForms.tlb"""; StatusMsg: "Registering OpcLabs.BaseLibForms assembly for COM interop..."; Components: comcomponents or devlibs; Flags: runhidden; Check: DotNetFx45InstalledCheck;
FileName: "{dotnet4064}\RegAsm.exe"; Parameters: """{app}\Assemblies\net452\OpcLabs.BaseLibForms.dll"" /codebase /tlb:""{app}\Lib\x64\OpcLabs.BaseLibForms.tlb"""; StatusMsg: "Registering OpcLabs.BaseLibForms assembly for COM interop..."; Components: comcomponents or devlibs; Flags: runhidden; Check: DotNetFx45InstalledCheck and IsWin64;
FileName: "{dotnet40}\RegAsm.exe"; Parameters: """{app}\Assemblies\net452\OpcLabs.EasyOpcClassicInternal.dll"" /codebase /tlb:""{app}\Lib\OpcLabs.EasyOpcClassicInternal.tlb"""; StatusMsg: "Registering OpcLabs.EasyOpcClassicInternal assembly for COM interop..."; Components: comcomponents or devlibs; Flags: runhidden; Check: DotNetFx45InstalledCheck;
FileName: "{dotnet4064}\RegAsm.exe"; Parameters: """{app}\Assemblies\net452\OpcLabs.EasyOpcClassicInternal.dll"" /codebase /tlb:""{app}\Lib\x64\OpcLabs.EasyOpcClassicInternal.tlb"""; StatusMsg: "Registering OpcLabs.EasyOpcClassicInternal assembly for COM interop..."; Components: comcomponents or devlibs; Flags: runhidden; Check: DotNetFx45InstalledCheck and IsWin64;
FileName: "{dotnet40}\RegAsm.exe"; Parameters: """{app}\Assemblies\net452\OpcLabs.EasyOpcClassic.dll"" /codebase /tlb:""{app}\Lib\OpcLabs.EasyOpcClassic.tlb"""; StatusMsg: "Registering OpcLabs.EasyOpcClassic assembly for COM interop..."; Components: comcomponents or devlibs; Flags: runhidden; Check: DotNetFx45InstalledCheck;
FileName: "{dotnet4064}\RegAsm.exe"; Parameters: """{app}\Assemblies\net452\OpcLabs.EasyOpcClassic.dll"" /codebase /tlb:""{app}\Lib\x64\OpcLabs.EasyOpcClassic.tlb"""; StatusMsg: "Registering OpcLabs.EasyOpcClassic assembly for COM interop..."; Components: comcomponents or devlibs; Flags: runhidden; Check: DotNetFx45InstalledCheck and IsWin64;
FileName: "{dotnet40}\RegAsm.exe"; Parameters: """{app}\Assemblies\net452\OpcLabs.EasyOpcClassicForms.dll"" /codebase /tlb:""{app}\Lib\OpcLabs.EasyOpcClassicForms.tlb"""; StatusMsg: "Registering OpcLabs.EasyOpcClassicForms assembly for COM interop..."; Components: comcomponents or devlibs; Flags: runhidden; Check: DotNetFx45InstalledCheck;
FileName: "{dotnet4064}\RegAsm.exe"; Parameters: """{app}\Assemblies\net452\OpcLabs.EasyOpcClassicForms.dll"" /codebase /tlb:""{app}\Lib\x64\OpcLabs.EasyOpcClassicForms.tlb"""; StatusMsg: "Registering OpcLabs.EasyOpcClassicForms assembly for COM interop..."; Components: comcomponents or devlibs; Flags: runhidden; Check: DotNetFx45InstalledCheck and IsWin64;
FileName: "{dotnet40}\RegAsm.exe"; Parameters: """{app}\Assemblies\net452\OpcLabs.EasyOpcUA.dll"" /codebase /tlb:""{app}\Lib\OpcLabs.EasyOpcUA.tlb"""; StatusMsg: "Registering OpcLabs.EasyOpcUA assembly for COM interop..."; Components: comcomponents or devlibs; Flags: runhidden; Check: DotNetFx45InstalledCheck;
FileName: "{dotnet4064}\RegAsm.exe"; Parameters: """{app}\Assemblies\net452\OpcLabs.EasyOpcUA.dll"" /codebase /tlb:""{app}\Lib\x64\OpcLabs.EasyOpcUA.tlb"""; StatusMsg: "Registering OpcLabs.EasyOpcUA assembly for COM interop..."; Components: comcomponents or devlibs; Flags: runhidden; Check: DotNetFx45InstalledCheck and IsWin64;
FileName: "{dotnet40}\RegAsm.exe"; Parameters: """{app}\Assemblies\net452\OpcLabs.EasyOpcUAForms.dll"" /codebase /tlb:""{app}\Lib\OpcLabs.EasyOpcUAForms.tlb"""; StatusMsg: "Registering OpcLabs.EasyOpcUAForms assembly for COM interop..."; Components: comcomponents or devlibs; Flags: runhidden; Check: DotNetFx45InstalledCheck;
FileName: "{dotnet4064}\RegAsm.exe"; Parameters: """{app}\Assemblies\net452\OpcLabs.EasyOpcUAForms.dll"" /codebase /tlb:""{app}\Lib\x64\OpcLabs.EasyOpcUAForms.tlb"""; StatusMsg: "Registering OpcLabs.EasyOpcUAForms assembly for COM interop..."; Components: comcomponents or devlibs; Flags: runhidden; Check: DotNetFx45InstalledCheck and IsWin64;

I now realize, however, that we also do one more thing: We temporarily place some additional assemblies to the disk. Those are the assemblies that are referenced by us internally, but we do not ship them separately - instead, we embed them as resources, in order to reduce the number of files that constitute the product. This works well in most cases, but some tools (including the assembly registration) sometimes require the referenced assemblies be physically present. Haven't your received any errors or warnings when registering?

In the upcoming version (release due in December) we will ship an additional, small installer just for production purposes.

And, we will also provide a ZIP file with these additional assemblies, in case somebody needs them (in the current version, you cannot easily get to them).

These changes may be a help in this as well.

Regards

Please Log in or Create an account to join the conversation.

More
17 Nov 2016 10:12 #4578 by info@femto.ch
Thanks for your help it works :)

I installed the Assemblies and the COM Components with QuickOPC installer. And I check "Install component assemblies into the GAC. This is normally neither necessary nor recommended".

Does that mean the manuel method for deployment does not work for me ? Or did I something wrong ?

Please Log in or Create an account to join the conversation.

More
16 Nov 2016 14:18 #4573 by support
OK, so the problem is not limited to just Delphi, it also happens with VBScript and probably with any COM-based tool.

I have not seen this issue before.

Can you try installing the QuickOPC on the production machine using the QuickOPC installer? You can select the Custom installation, and then just the parts that are needed - including the COM components. This way the registration would be done the same way as on your development machine, to rule out a problem with that part.

Thank you

Please Log in or Create an account to join the conversation.

More
16 Nov 2016 12:50 #4571 by info@femto.ch
Here is the result with the developpment machine :
C:\Windows\SysWOW64>cscript C:\Tmp\_EasyUAClient.SubscribeDataChange.Main.vbs
Microsoft (R) Windows Script Host Version 5.8
Copyright (C) Microsoft Corporation 1996-2001. Tous droits réservés.
 
Subscribing...
Processing monitored item changed events for 1 minute...
-1.075884E+24 {System.Single} @2016-11-16T12:39:28.704 @@2016-11-16T12:39:28.702
; Good
-2.590853E-31 {System.Single} @2016-11-16T12:39:29.719 @@2016-11-16T12:39:29.719
; Good
...
 
C:\Windows\SysWOW64>

Here is the result with the production machine :
C:\Windows\SysWOW64>cscript C:\Tmp\_EasyUAClient.SubscribeDataChange.Main.vbs
Microsoft (R) Windows Script Host Version 5.8
Copyright (C) Microsoft Corporation 1996-2001. Tous droits réservés.
 
Subscribing...
Processing monitored item changed events for 1 minute...
 
C:\Windows\SysWOW64>

Please Log in or Create an account to join the conversation.

More
15 Nov 2016 10:47 #4560 by support
Thank you.

I know the issue is with the Delphi part, but I'd really like to first see the result of the VBScript test. I suppose the reason why it gives the error is because you either registered the assemblies in the 32-bit world, and then running the VBScript from the 64-bit command line, or vice versa.

Can you please try running the VBScript from the environments with the same bitness as your Delphi app?

Thank you

Please Log in or Create an account to join the conversation.

More
15 Nov 2016 10:02 #4558 by info@femto.ch
Yes, it’s correct.

For the deployment, I followed the manual method :
- Run the quickOPC installation program, production installation.
- Install our application.
- Copy the QuickOPC-UA assemblies.
- Perform assemblies registration with RegAsm :
  • RegAsm.exe /codebase OpcLabs.BaseLib.dll
  • RegAsm.exe /codebase OpcLabs.EasyOpcUA.dll
  • RegAsm.exe /codebase OpcLabs.OpcComplexEventProcessing.dll
  • RegAsm.exe /codebase OpcLabs.EasyOpcClassic.dll
  • RegAsm.exe /codebase OpcLabs.EasyOpcClassicInternal.dll
  • RegAsm.exe /codebase OpcLabs.EasyOpcClassicForms.dll
  • RegAsm.exe /codebase OpcLabs.BaseLibForms.dll
  • RegAsm.exe /codebase OpcLabs.EasyOpcUAForms.dll
- Install the runtime license with the License Manager.

The development machine is a Windows 7 Pro 64bit (Virtual Machine) and the production machine is a Windows 10 Entreprise 64bit. I also test a production machine with Windows 7 Pro 64bit. Our application is developped for the 32bits platforms.

The result of the VBScript example is : ActiveX component can't create object : 'OpcLabs.EasyOpc.UA.EasyUAClient'

Please Log in or Create an account to join the conversation.

More
11 Nov 2016 13:11 #4556 by support
I have some questions first.

Do I understand it correctly that the application basically "works" - it is just that no events reach the Delphi code?

Can you please describe the deployment process used? I assuming that you copied over the compiled application, and QuickOPC assemblies. What else have you done?

Have you registered the assemblies yourself (if so, please describe how), or have you used the QuickOPC setup program that does it for you?

Is the production machine 32-bit or 64-bit? And the development machine?
Which operating systems?

And, one final important thing: Can you please try out, on the production machine, some examples that also use the COM interface of QuickOPC, to see if events work with them? The easiest are the VBScript examples, under ExamplesCom\VBScript\WSH\UADocExamples - e.g. _EasyUAClient.SubscribeDataChange.Main.vbs .

Thank you, and best regards

Please Log in or Create an account to join the conversation.

More
10 Nov 2016 11:49 #4552 by info@femto.ch
We just bought a license for QuickOPC COM and we are using Deplhi XE2.

The LogEntry event, as the EventNotification and the DataChangeNotification, return nothing on our deployed application. It work on the developpment PC but not on the PC on which deployed application. The reading and writting work without problem on the both PC. We check the .NET version, COM and DCOM services. With Wireshark we also see that there isn't any difference. Same number and type of frame in both developpment and deployed application. It looks like we have a problem in the communication between Delphi and COM.

Please help us.

Please Log in or Create an account to join the conversation.

Moderators: support
Time to create page: 0.196 seconds

      

 Recommend this on Google