This discussion has been locked.
You can no longer post new replies to this discussion. If you have a question you can start a new discussion

Help request for GitHub sample UsingManagedAssemblies

Hello everyone,

I would like to create an UI extension add-on for M-Files, but I am new to developing for M-Files,
so I decided to start with adjusting the sample code and see where it gets me.

1. I downloaded UsingManagedAssemblies sample from github:
https://github.com/M-Files/MFilesSamplesAndLibraries/tree/master/Samples/UIX%20Applications/UsingManagedAssemblies
2. I zipped the contents of uix folder and installed it to [color=blue]MyVault[/color] using the M-Files Admin tool.
3. Upon entering [color=blue]MyVault[/color] using the M-Files Online explorer, I got a popup window stating: "MyVault says Hello!".
4. I was happy to have successfully installed and ran the sample add-on!

Next, I wanted to add an extra method to the:

Class1.cs file:

public class Class1 {
public void ShowMessage(Int32 parentHWND, string message, dynamic vault) {
// Get a reference to the window from the provided handle.
IWin32Window parentWindow = Control.FromHandle((IntPtr)parentHWND);

// Show the message.
MessageBox.Show(parentWindow, $"{vault.Name} says {message}");
}

public string GetString() {
return "GetString()";
}
}


main.js file:

function getShellFrameStartedHandler(shellFrame) {
return function() {
var clrObject = MFiles.CreateObjectCLR( "MyClassLibrary.dll", "MyClassLibrary.Class1" );
        var myString = clrObject.GetString();
clrObject.ShowMessage( shellFrame.OuterWindow.Handle, "Hello!", shellFrame.ShellUI.Vault );
};
}


So that I can use myString value instead of the hardcoded: "Hello!" string in the line:
[size=12pt]clrObject.ShowMessage( shellFrame.OuterWindow.Handle, "Hello!", shellFrame.ShellUI.Vault );[/size]
(I did not change the "Hello!" string for myString variable yet. I only added the var myString = clrObject.GetString(); into the main.js file)

I zipped the new .dll and main.js together with appdef.xml into a .zip file and installed it onto [color=blue]MyVault[/color] again.

Upon opening [color=blue]MyVault[/color] using the M-Files Online explorer I get the following error message:
https://imgur.com/a/2iIT4zg
(The green text is my translation for you)
With the following details:
CoScriptDelegate_Events.cpp, 396, Objekt nepodporuje t?to vlastnosť alebo met?du (0x80040008)
IDispatchInvocation.cpp, 96, Objekt nepodporuje t?to vlastnosť alebo met?du (0x80040008)
Managed Assemblies: main.js, 49, Objekt nepodporuje t?to vlastnosť alebo met?du (0x80040008)
MErrorHelper.cpp, 2457, Objekt nepodporuje t?to vlastnosť alebo met?du (0x80040008)
(M-Files 20.1.8669.3)


Does anyone know what is the problem?
What am I doing wrong?


The uix.zip can be found in the attachments.
uix.zip
Parents
  • Are you a local administrator on your machine? That looks like a permissions issue...

    The process I tend to go through is:
    1. Go to "services" and restart the M-Files Desktop Client service. This will probably get stuck on "stopping".
    2. Go to the list of processes and kill the M-Files Desktop Client process. This should then make the service stop/start properly.
    3. Go to the Windows Explorer process and restart it.

    Normally, at this point, I can replace the managed assembly.

    One thing I'd like to highlight is that managed assemblies are really not used very much in UIX, and I would recommend that you avoid them unless you have a specific reason to use them. One great use I've seen before is to use the Windows file/folder pickers or to interact with the file system (because both of these things are not very easy otherwise). But, for general UIX work, I'd highly recommend that you try and avoid them.

    Regards,

    Craig.
Reply
  • Are you a local administrator on your machine? That looks like a permissions issue...

    The process I tend to go through is:
    1. Go to "services" and restart the M-Files Desktop Client service. This will probably get stuck on "stopping".
    2. Go to the list of processes and kill the M-Files Desktop Client process. This should then make the service stop/start properly.
    3. Go to the Windows Explorer process and restart it.

    Normally, at this point, I can replace the managed assembly.

    One thing I'd like to highlight is that managed assemblies are really not used very much in UIX, and I would recommend that you avoid them unless you have a specific reason to use them. One great use I've seen before is to use the Windows file/folder pickers or to interact with the file system (because both of these things are not very easy otherwise). But, for general UIX work, I'd highly recommend that you try and avoid them.

    Regards,

    Craig.
Children
No Data