Getting started with the Smart Office SDK

With Infor Smart Office SDK you have access to our application development framework. The SDK has been around since version 9.2 and it enables you to build your own application using the power of the Smart Office framework and the Infor Design System. As of last week Smart Office SDK is available, not only to partners but also directly to customers. We have build applications such as M3, Lawson, Analytics and Process Server and you can build your applications in the same way.

The target audience for the Smart Office SDK are experienced .Net and WPF developers. They can take their experience in building applications and apply it to Smart Office. You can build your own applications from scratch, Mashup controls, Converters (to be used in Mashups) or call from Jscript into your own .Net code.

In order to get started you need to have access to a Smart Office server as well as the SDK. The SDK contains:

  • Binaries
  • Documentation (API documentation and Developers Guide)
  • Visual studio Sample solution
  • Visual studio templates
  • Pack tools for building .lawsonapplication files

Smart Office SDK is access to API documentation, binaries and the usage of our custom styled controls. It enables you to build WPF .Net applications that can run in Smart Office or stand alone. It does not include a complete framework for building applications like connecting to db / presentation logic but you can use another framework on top of it. There a a lot of partners that build for Smart Office, for example eCraft.

If you are a Smart Office customer and interested in the SDK please contact Infor.

The Basics

Applications are identified by URIs, for example mforms://mms001 or sforms:/hr11. The schema part identifies an application and the host part the form or function or view if you like. When you create a feature you register your own schema and implement a set of Interfaces.

Don’t register a new schema for each program or window you would like to have. Use the host part to identify which program to launch. The sample solution register many applications on different schemas but this just an example and we add new schemas since it keeps the examples seperated. Use as few schemas as possible!

The most important interface is the IClientApplication and the LaunchTask method. This method will be called with the Uri entered by the user in the StartAndSearch field. In this method you have to set the content of the host window to a UIElement and that will be the User Interface that will be presented in the application window.

Setting up the Environment

In order to set up the environment you will need the following:

  • Visual Studio 2010 (or 2012). You can use the Express version but you might have issues will the rebuild action. If you do have issues with rebuild try and manually delete the bin and obj directories
  • The Uri to the Smart Office server. If you don’t have the Uri but you have a link to an installation page, check the link you click to install. It has a SERVER parmameter and that is the Uri you are looking for.
  • The SDK package unzipped on your computer containing the binaries and templates

Environment variable for the binaries

The Visual Studio projects in the SDK uses a Windows environment variable to find the Smart Office binaries. The variable must be configured for the projects to work.

1. Open the system properties. For Windows Vista right-click on the Computer, select Properties and then click the Advanced system settings link.
2. Click the Environment Variables button.
3. Add a new system variable with the name LSOSDKBin. The value should be the path to the binaries folder for the SDK.

Registry configuration

The Windows registry must contain a vale that specifies the server URL to use. The server URL is normally provided as parameter on the URL to Smart Office but when Smart Office is started from Visual Studio the server URL is read from the registry.

There is also the optional possibility to specify a username and password in the registry. When these values are specified Smart Office will automatically log on that user provided that the username and password is correct. Note that this will only work when Smart Office is running in debug in Visual Studio.

All values that can be passed on to Smart Office when starting Smart Office with an URL can be specified in the registry. For a complete list, look in the administrators guide.
The values can be added using the Registry Editor or by using a registry file.

The values should be added for the registry key: KEY_CURRENT_USER\Software\Lawson\MangoDev (up to version 10.0.5)

The most common values are (they are all stings):

• SERVER – The URL to the Grid where the Smart Office server is running.
• Username – An optional username for automatic logon.
• Password – An optional password for automatic logon.
• LANGUAGE – Required if using another regional setting then “en-US”.

Windows Registry Editor Version 5.00

[HKEY_CURRENT_USER\Software\Lawson\MangoDev]
"SERVER"="https://yourserver:12002"

Visual Studio projects and templates

To develop a feature you need a Visual Studio solution with at least two projects, one for the client executable and one for the feature. The solution can also contain more than one feature that can be tested using the same client project. The projects can be created using the templates provided in the SDK but they can also be created manually. The client project is only required for testing and will not be delivered as part of the feature.

The projects can be created using the Visual Studio templates that are part of the SDK. The SDK contains templates for creating client and feature projects. To use the templates they must be added to the Visual Studio templates directory as described below.

Locate the Templates folder in the SDK folder. Copy the content of the Templates folder and paste in into the Visual Studio Templates folder for your user. The Templates folder is located in the Visual Studio 2010 folder in the Documents/My Documents folder.

C:\Users\\Documents\Visual Studio 2010\Templates

Now you have all the bits you need to be able to run Lawson Smart Office in Visual Studio. You will need the templates when you create your first own feature but let’s start and see if you can build and run the Sample solution.

The Sample solution is included in the SDK pack. Locate the /LSOSDK/Samples/Sample.sln and open it.

Verify that you can build and run the Sample solution by pressing F5 to run. Once Lawson Smart Office is started start sample1:// and sample2:// by using the start and search field on the Canvas. If you cannott build the solution check that your bin folder is configured correctly and the sample solution and binaries corresponds to the same Smart Office version.

The manifest file

The manifest file for the Sample solution is located in LSOSDK\Samples\LawsonClient\LSOSDKSample.manifest. It does not matter if the manifest is in the LawsonClient project of the feature project as long as it has a build action that is copy to output. When you use the templates it will be created in the feature project. But as you add more Projects it is easier to find the manifest in the folder structure if it is moved to the LawsonClient project. The manifest file looks like this:

<Manifest package="LSOSDKSample">
	<RequiresVersion></RequiresVersion>
	<Author>Lawson Software</Author>
	<Url>http://www.lawson.com</Url>
	<Title>Sample Feature</Title>
	<Description>Lawson Smart Office SDK Sample Feature</Description>
	<Version>1.0.1.0</Version>
	<BuildDate></BuildDate>

	<File name="HelloWorld.dll" />
	<File name="HelloWorldWidgets.dll" />
	<File name="CurrencyConverter.dll" />
	<File name="SearchSample.dll" />
	<File name="LocalDatabaseSample.dll" />
	<File name="ClientAccess.dll" />

	<LanguageFile assembly="CurrencyConverter"/>

	<Application
		scheme="sample1"
		applicationGroup="SmartClient"
		assemblyName="HelloWorld"
		factoryClass="LSOSDK.Sample.HelloWorldApplication"
		canSupplyTasks="true"
		/>

	<Application
		scheme="sample2"
		applicationGroup="SmartClient"
		assemblyName="CurrencyConverter"
		factoryClass="LSOSDK.Sample.CurrencyConverterApplication"
		/>

	<Application
		scheme="searchsample"
		applicationGroup="SmartClient"
		assemblyName="SearchSample"
		factoryClass="LSOSDK.Sample.SearchSampleApplication"
		/>

	<Application
		scheme="sample3"
		applicationGroup="SmartClient"
		assemblyName="LocalDatabaseSample"
		factoryClass="LSOSDK.Sample.LocalDBApplication"
		/>
	<Application
		 scheme="sampleaccess"
		 applicationGroup="SmartClient"
		 assemblyName="ClientAccess"
		 factoryClass="LSOSDK.Sample.ClientAccessApplication"
		/>

	<Widget
		scheme="LSOSDK.Sample.HelloWidget"
		applicationGroup="SmartClient"
		assemblyName="HelloWorldWidgets"
		factoryClass="LSOSDK.Sample.HelloWidgetFactory"
		isSingleton="false"
		showInMenu="true"/>

	<Widget
		scheme="LSOSDK.Sample.HelloWidget2"
		applicationGroup="SmartClient"
		assemblyName="HelloWorldWidgets"
		factoryClass="LSOSDK.Sample.HelloSingleItemWidgetFactory"
		isSingleton="false"
		showInMenu="true"/>

	<Widget
		scheme="LSOSDK.Sample.HelloWidget3"
		applicationGroup="SmartClient"
		assemblyName="HelloWorldWidgets"
		factoryClass="LSOSDK.Sample.HelloSettingsWidgetFactory"
		isSingleton="false"
		showInMenu="true"/>

	<Widget
		scheme="LSOSDK.Sample.CurrencyWidget"
		applicationGroup="SmartClient"
		assemblyName="CurrencyConverter"
		factoryClass="LSOSDK.Sample.CurrencyWidgetFactory"
		isSingleton="false"
		showInMenu="true"/>
</Manifest>

The manifest file is very important as it specifies what will get packaged and later deployed as a feature. It is very important that you try and install your code to verify that it runs correctly once installed. If you have any issue once your application is installed the first thing to check is the manifest.

Debugging the Sample solution

There are two interfaces that you must implement in order to create your own application, Mango.Services.IClientApplicationFactory and Mango.Services.IClientApplication. Then there is the IClientApplicationTasks if your application has it’s own menu and the user should be able to launch your application by writing the name of the application.
On of the first things that happens is that the factory is created and the Create method is called. Later every time you application is launched LaunchTask will be called.

Add the following breakpoints:

1. Locate the HelloWorldApplication in the HelloWord project.
2. Add a breakpoint in the Create method.
3. Add a breakpoint in the LaunchTask method.
4. Start the Sample with F5.
5. Debug the Create method as Smart Office starts
6. Launch the HelloWorldApplication by writing sample1:// in the start and search field.

Let’s take a look at the LaunchTask method.

public override IRunner LaunchTask(ITask task, ILaunchProvider provider)
      {
         // This application shows the same window regardless of the host or parameter values on the uri
         // so there is no need to check or verify the task uri.

         // Use the provider to create a runner for our task.
         IRunner runner = provider.CreateRunner(task);

         // Create a default host for the user interface.
         provider.CreateHost(runner);

         // Get a reference to the created host.
         IInstanceHost host = runner.Host;

         // Set the default size for the host window
         host.Width = 640;
         host.Height = 480;

         // Create and set the content for the host
         var helloPanel = new HelloPanel(host);
         host.HostContent = helloPanel;

         // Set the visible name for task and the title for the host window.
         const string visibleName = "Hello World";
         task.VisibleName = visibleName;
         task.UseVisibleShortName = false;
         host.HostTitle = visibleName;

         // Change the status of the runner from the default value Pending to Running.
         runner.Status = RunnerStatus.Running;

         // Make the host window visible on the Canvas.
         host.Show();

         return runner;
      }

In Smart Office you will never open your own Windows instead you will use URIs to launch windows and then you will set the host content to whatever content you would like to show. Instead of the HelloPanel above you could just as well add a grid with lots of UIEments within. You can also chose not to return a runner but to return null. In that case nothing will be visible so it is kind of calling a batch job with an Uri.

In Smart Office we identify applications with Uri’s, when we create shortcuts and have stuff that we can launch we use a Task. A Task is something that always has a Uri but it can also have a Name and a ShortDescription. Now once we have started to run something we have a Runner.

1. Check the SDK API documentaiton (LSOSDK.chm) and read all about those classes.
2. Read the developers guide with focus on the Manifest file documenatation and how to implement your own Application

Ok… so now you are ready to start doing some application development.

How to create a solution using templates

We need one solution and two projects. One client project and one project that will be your feature.

1. Start Visual Studio 2010
2. Open the File menu and select New and then Project…
3. In the new project dialog click the Visual C# project type. (.Net version should be 4.0)
4. Select the Lawson Smart Office Client template under My Templates.
5. Enter a name such as LawsonClient and select a location.
6. Let Visual Studio create a new solution and a directory for the solution.
7. Click OK to create the solution and the project.


Note that the picture has .Net version 3.5 and for Smart Office 10 it should be 4.0. You need to select the .net version that Smart Office has.

This is the same dialog in my Visual Studio (with Powertools).

Now you will have a solution with one project.
The next step is to add a feature project.

1. Open the File menu and Select Add and then New Project…
2. In the new project dialog click the Visual C# project type.
3. Select the Lawson Smart Office Feature template under My Templates.
4. Enter a name such as LawsonClient and keep the suggested location
5. Click OK to create the project

Now you have the feature project but there is no reference to the feature project in the client project.
We need to add this reference or you will not be able to start your application since it will not be loaded. How to check if it gets loaded? Debug the Create method.

Add a reference.

1. Right click on References in the client project.
2. Select Add Reference…
3. Select the Projects tab and then select the feature project.
4. Click OK to add the reference

Check the generated classes and the generated manifest. In the manifest check which schema was created so you know what to start in order to launch your application, here you will also find the Applicationfactory class. Don’t start by changing these values. Do some development and then you can change the configuration – once you are up and running.

Now you can run Smart Office with your application, but what about the other applications? If you try and run M3 you will notice that it is not available. In order to be able to run M3 or any other application you need to add a reference to it’s binaries and it’s manifest. I’ll show you have to do that in another post. What I can say now is that all dlls and manifests that are found in the bin folder will be loaded when you are debugging.

A tips to all Jscript developers out there. There are a lot of useful information regadring the InstanceController and other MForms related classes in the compiled SDK API documentation. Please note that the SDK documentation that is available from the Mashup Designer is only a subset related to Mashups. For the full API documentation you need to have the Smart Office SDK pack.

Also check the documentation if you access and use framework classes. Only documentated classes are supported and will not change in coming versions. There might be methods (and classes) that are public and accessible that you shouldn’t use. The same goes for images and styles, only those documented in the Developers Guide are supported in coming versions. You can use our images and undocumented brushes but those might change in coming versions of Smart Office.

I can’t read my log file?

Note! If you are having issues with the log file and it is not picking up your log entries, you should check your log level. If that is checked and you are running Visual Studio 2012 you should consider running Visual Studio 2010. It seems like the Designer in the new studio is running in it’s own process so it is actaully locking the log file. So your logs will en up in LawsonClient.log2.

Something is wrong with the language all I see is missing constants?

The default language for Smart Office is the language on your operating system. The feature project template is only set up for English. Start Smart Office from the debugger, open the context menu on the canvas and select settings (2:nd). Then select the first entry and change language to English. All (English) language files that are used are located in the Bin/Debug/Reasources/Localization/en-US folder of the exe project (LawsonClient). We have a post build action that will copy the files so if you don’t see them try and run Visual Studio as an Administrator. Then check that they are copied to that same folder under Bin for your Project. If you want to add more languages you can copy all the folders from the SDKPack; LSOSDK\Bin\Resources\Localization\ into the same location under your Bin/Debug folder for the LawsonClient (exe) project. You can also set the Project up so that they get automatically copied by using links. (Add existing item -> Add as link). Then change the build action (found under properties for a specific language file) to copy if newer. How to get stuff to your bin folder is something you should know as a .Net developer so I will not cover this in great detail. If you need to learn more read up on build actions.

Other Bloggers

Potato IT has started a series where the goal is to replace a customer modification. Interesting reading at Smart Office SDK first project part 1.

40 thoughts on “Getting started with the Smart Office SDK

  1. Scott Campbell

    I am glad that Infor has taken that step to provide its customer base access to a tool and documentation which will allow us to make some real progress removing modifications rather than having clunky hacks for limitations in using jscripts.

    I’m eagerly waiting on the paperwork to go through so the product appears in my download portal.

    Thank you.

  2. Heiko

    Hi Karin, after creating the “LawsonClient” project from the template, it contains an invalid reference to “Mashup.Deployment”. Is there a component missing on my workstation, or can the reference be deleted ? Thank you for your effort! / Heiko

  3. Pingback: Smart Office SDK – First Project Part 1 – Testing the Installation | Potato IT

  4. Pingback: Smart Office SDK – First Project Part 2 – In the beginning there was nothing | Potato IT

  5. Pingback: Smart Office SDK | M3 ideas

  6. Scott

    I am having some issues around the feature manifest file.

    In it, it mentions:
    “The SmartClient group should only be used for testing. A feature is not allowed to be installed using the SmartClient group.”

    In the DevelopersGuide.pdf there is an example of a complete manifest where the applicationGroup is changed.

    However, if I use that as a template, when I test it, I cannot run my feature, I get “the application type sac is not supported”. If I change the applicationGroup back to SmartClient, clean the solution and re-run I can successfully start my feature.

    This is all being run within Visual Studio at the moment.

    Any suggestions?

    Below An example of the ApplicationGroup and Application setup. I’ve changed the ApplicationGroup type to match the features name. I’ve enabled the Profile aswell, without any success.

    Cheers,
    Scott

  7. karinpb Post author

    SmartClient will work in dev mode, when you run in Visual Studio. It work in released versions when you deploy as well. But we might change that in the feature becuase this group is intended only for the framework. Using the application group is one way to disable a group of applications in the profile.

    If you develop for M3 you should use group M3, if you develop for S3 use group S3. If you need your own group becuase you are not developing for a specific product line but a more general component – create your own group. You need to manually add it to the server in order to be able to run your profile. Or you don’t actually need to change it on the server – you can point to a local profile.xml in the registry if you run in Visual Studio.

    Once you deploy via LCM the profile will be updated. But if you don’t have any real profile values that you need it is best to use M3 or S3 becuase then your application can be deployed locally (as long as you don’t have settings). Local deploy is great for testing stuff but the application can’t rely on profile or settings because there is no fallback implemented for local installs.

    Assuming you have added your group to the profile and the group is enabled and you have selected your profile it should all just work. If it doesn’t the reason can be found in the log file in debug. We print out if applications are not loaded due to configuration restrictions.

    1. thibaudatwork

      Karin, I tried everything and I need your help again. I’m developing a feature with the Smart Office SDK 10.1.1.1 and I need to store values in the Profile such that administrators can change them in the Smart Office > Administration tools > Profile Editor. I want to test my feature in Developer mode with Visual Studio before I deploy it on the server with LifeCycle Manager. From what I understand of your comment above, you say it’s not possible to add values to the Profile when running Smart Office in Developer mode unless we use Registry Keys. That’s what I’m trying to do and I’m a bit lost. I have the sample Profile section un-commented in my feature manifest, and as you explained, that alone won’t work. Also, I don’t have Settings in my feature manifest, you said to not have settings.

      And in my Windows Registry I have HKEY_CURRENT_USER\Software\Infor\MangoDev with the String Server set to https://thehostname:21012 , and the String ProfilePath set to C:/Profile.xml. My problem is I don’t really know what to put in the file Profile.xml. I tried the following:

      Hello World

      But it crashes Smart Office when it starts with error message “You are using a local profile C:/Profile.xml and your selected profile (TST) is not available or it contains to application groups. Please change profile or enable selection of system profile on logon and restart Lawson Smart Office”. I also tried the elements in lowercase and now the error message is “There was a problem retrieving settings or profile information from the server”. I also tried like in the example in your blog post “Adding a profile setting to your mashup” but it too crashed as in the previous error message.

      What am I doing wrong?

      Thank you!

      /Thibaud

    2. Jimmy Ehrnström

      If I wish to create a new application group for my application is it then necessary to add the profile element in my manifest and the application group to the server profile xml? Or can I skip these two steps if my application has no settings?
      I tried skipping these steps, but after LCM installation my application is not available. I can’t even find any references to it in the log, which is peculiar. So I assume the answer is that they are necessary? Or may I be missing something else?
      My current version of Smart Office is 10.1.1.1.5.

      1. karinpb Post author

        Hi,
        Yes you must add the profile section that defines the group. You must also go into the Profile editor and enable it by checking the check box.

        Another temporary solution is to manually add the application group in the profile editor by using the plus icon button in the advanced tap.

        The reason you need it is because applications will not be loaded unless their application group is enabled. That makes it easy to turn on/off Lawson/M3 in different profiles.

      2. Jimmy Ehrnström

        Hi Karin,
        Thank you for your very swift reply. I’m still confused, but now in a higher level. 🙂
        As part of the troubleshooting process I tried to install my application in LCM using an already existing application group, i.e. “M3”. But this did not work either. Is this because I still need to add my application in this group in the server profile xml? The comment from the sample manifests in the SDK package says: “Remove the comment below if this feature will use an ApplicationGroup specified in this file” which I have interpreted as it not being necessary when using an existing group?
        My prefered goal is to use a custom application group and I will try this using the tips from your previous answers. But I have a few remaining questions:
        1. If my application name is for example “MyApplication” and my application group is “MyGroup”, what would then my Profile element in the manifest need to look like? I assume the group attribute should have “MyGroup” as its value? And inside the Profile element I need to add an “MyApplication” element and inside this my settings, if any? Should both these elements have the enabled attribute set to true? Even if I have no application settings?
        2. Thibaud mentions previously that the profile element should be all in lowercase? But that is for the server profile xml and not in the manifest? Or both?
        3. If the manifest is correct should the necessary changes in the server profile xml then be configured automatically during LCM installation or does new Application groups always need to be added manually? What about a new application in an already existing group?

        Sorry for all the questions! But I hope any answers to these may be helpful for others too.

        Best regards
        Jimmy

      3. karinpb Post author

        – If your application is related to M3 you should use the M3 group.
        If you need to implement your own profile settings UI then you must have a group. Don’t add your own group unless you need it for configuration purposes. You don’t need to add the application segment to the profile – but if you down’t have settings why add your own group? Just go if M3 (or S3).

        The group adds the functionality that you can disable it and thus disabling all related applications.

        1. This is what your group would look like in the profile. It is NOT case sensitive but you must use the exact same keys when accessing values from the profile. I recommend that you use lower case for settings.

        
        <ApplicationGroup type="MyGroup" description="My Application group" assemblyScheme="xxxx" />
         <Profile group="MyGroup" enabled="false">
            <MyApp>
        	<url></url>
            </MyApp>
          </Profile>
          

        2. There is no lowercase that you have to follow. Check the developers guide documentation for more examples of the different sections. The one thing you MUST know is that the schema has to be in lowercase.

        3. If the group is in the manifest it will be added automatically as defined in the manifest. I just suggested that you manually added it so you could test without re-packaing the feature / .lawsonapp. New applications to an existing group will be added as well. Just note that no groups/applications will be removed when you uninstall your feature.

        I assume you have checked you log file at debug? And searched for the name of your Application and/or schema? It should tell you why it isn’t loaded. If it is that the group is not enabled / the applicaiton schema is not allowed etc.

        You can check the “Manage Installation Point tool” in Smart Office. Is your feature listed there in the repository? Is it added to the default installation point? (This is done by default – but if it isn’t in the repository perhaps you installed it in another Smart Office server?

      4. Jimmy Ehrnström

        I have searched my log for any references to my application and also checked all entries on ERROR or WARN level but found no mention of my application. So that may indicate the problem is in the installation step. I will look into your suggestions from your last paragraph for this.

        The reason I did not choose the M3 group was that my application is not directly M3 related. But it is close enough so if it works I don’t mind using it. That will give me more time to test out profiles locally first using Thibauds examples.

        But as mentioned even using the M3 group does not currently work. If I use this group and do not have any application settings I should not need the Profile element at all in my manifest, correct? Perhaps the problem lies in the installation procedure though.

        You say that the schema must be in lowercase. Is that the “scheme” attribute in the Application and ApplicationGroup elements you are refering to? Or the assemblyScheme attribute in ApplicationGroup element? In the DevelopersGuide’s examples the scheme attribute for the Application is in lowercase and for the Widget element it is in camel case. Is one incorrect or should this differ between applications and widgets? I’m currently testing one of each.

        Once again I want to thank you for taking the time to answer all my questions regarding this. It is much appreciated!

      5. karinpb Post author

        Hi,
        You need to have log level DEBUG. The schema is the one in the Application element – it’s used to launch the app. Eg mforms

  8. Pingback: Hacking Customer Lifecycle Management (CLM) | M3 ideas

  9. thibaudatwork

    (XML stripped out from my comment. Trying XML-encoded.)

    C:/Profile.xml:

    <?xml version="1.0" encoding="utf-8" ?>
    <Profiles>
    <Profile name="TST">
    <applicationgroup name="Thibaud" enabled="true">
    <Message>
    <Hello>Hello World</Hello>
    </Message>
    </applicationgroup>
    </Profile>
    </Profiles>

    1. thibaudatwork

      I found the solution. The XML elements Profiles and Profile must be lowercase. Also, the Profile must contain the rest of the Profile.xml which I can get with Fiddler when opening the Profile Editor in Smart Office > Administration tools, and after XML-decoding it. Now I have my profile values in Smart Office Developer mode with Visual Studio. Thanks.

  10. Pingback: Hello World of Infor Smart Office SDK | M3 ideas

  11. Pingback: Add a Profile fragment with Smart Office SDK | M3 ideas

  12. Prabth

    Hi

    I have install the smart office SDK.but when i runs it through i get below error message and process terminates.

    “failed retrieving settings or profile information from the server”

    1. karinpb Post author

      Hi,
      There are a few things you need to do. If you can find the log file it will contain more information.
      You should check the following:
      1. That you registry contains the URL to the Server. MangoDev is the key and the location is described in the documentation. For some versions it is under Lawson and then it was changed to Infor, but check the documentation.
      2. Paste the URL to the server in Internet Explorer. It should take you to the info page for the Grid. Check that the addressbar has a padlock that indicates that the certificate is installed correctly.
      3. Verify that you can install and run the Smart Office client from the server’s installation point on your PC

      Let me know if you still have issues after that.

  13. Per Ravnborg

    I have traversed this blog with great interest. And I am impressed by all the stuff done by the authors – thx.
    I have found articles about SDK and articles about Mashup. Does there exist any articles at starter level, explaining how to combine SDK and Mashup ?

    1. karinpb Post author

      Hi,
      We don’t have any articles on how to combine SDK and Mashups. It is a great topic for an article especially since we develop products at Infor that are a combination of both. The idea is in fact to build a mashup but to add your own mashup controls and to deploy the mashup as part of your application (or stand alone). Generally for building larger applications I would recommend the Smart Office SDK course. But you need to have a programmer background preferrably with .Net, C# and WPF. But I will consider writing a specific post about how to build your first Mashup control – as that is an important part when mixing SDK and Mashups. There there are other topics that are great to know like WPF bindings and converters.

  14. billywilloughby

    Greetings; I’m trying to use the Mango Settings File Generator plugin for Visual Studio provided with the Smart Office SDK. It only installs in Visual Studio 2012. Is there any plans to upgrade this to work with the newer versions of Visual Studio, or is there anywhere I can get documentation of the structure it builds so I can create my own settings xml file?

    Thanks;
    Billy

    1. karinpb Post author

      Hi,
      There is no plan to update the plugin. I’ll add an internal ticket that we should update the developers guide with the structure of the settings file. I think there is a settings file example in the SDK sample. If you can’t find it there you can check the structure of for example Mango.UI.xml which is found on the client PC once Smart Office is installed. It has a lot of different data types. In Smart Office type dev://root in the start and search field on the canvas and an Explorer window will show the local file root – search for Mango.UI.xml and you will find lot of samples of the XML.

  15. Mohamed

    Hi Karin,
    Do you Know if it’s possible to use a bookmark in my sdk development?
    When i start my application, it does nothing. Maybe, i have to call the event in the code behind?

    Thank you!

    1. karinpb Post author

      Hi Mohamed,

      Yes it is possible to use a bookmark in your SDK development. You can launch any link that you have with launch task. There is also a Bookmark class that has a ToUri method that you can use to add all parameters to the Bookmark and then create an URI which you use in the LaunchTask method.

      To use MForms classes your project must add a reference to the MForms.dll.

      As for your statement When I start my application, it does nothing? It is not clear to me what you are trying to do (at all). The application will do whatever you have implemented in code. You need to start your application with your schema and implement what should happen to your window content.

  16. Per Ravnborg

    Hi Karin
    I am very fond of using core SDK(WPF C#) and link to M3 via M3-MI’s, Bookmarks and automation in code behind.
    But I can see nice posibillities in Mashup as well. But I don’t want to make fullblown Mashups with manifests etc.

    Question: Is it possible to incorporate Mashup parts like:

    – directly in XAML Window or UserControl ?

    I can’t make it work.

    1. karinpb Post author

      It’s possible but I don’t know if that is something that we should officially support. There is a Mashup widget and the widget can host a mashup. I would start to look there but keep in mind that this might change and it is not part of the public API.

  17. Saeed bin eidan

    hello Karinpb,

    thanks for this explain and i want to ask you how i can get the sdk and download it, i have infor extreme account and i’m one of infor customer.

    regards,

  18. Jesper Bøwes

    Hi Karin
    I have created my first SDK solution, everything is working except my close app button!

    My feature hold the runner (public override IRunner) that open a UserControl containing my close button, but I cant figure out how to return to the runner and close the app without closing the smart office

    Is there a easy answer for this 🙂

    br
    Jesper

    1. Per Ravnborg

      Hi Jesper
      I prefer to leave my SDK applications in M3 manner using F3. When pressing F3 I call this piece of code:
      if (FocusHelper.GetParentEmbeddedHostWindow(this) != null) FocusHelper.GetParentEmbeddedHostWindow(this).Close();

      In my static FocusHelper class I have the following method:

      public static EmbeddedHostWindow GetParentEmbeddedHostWindow(DependencyObject child)
      {
      DependencyObject parentObject = VisualTreeHelper.GetParent(child);

      if (parentObject == null)
      {
      return null;
      }

      EmbeddedHostWindow parent = parentObject as EmbeddedHostWindow;
      if (parent != null)
      {
      return parent;
      }
      else
      {
      return GetParentEmbeddedHostWindow(parentObject);
      }
      }

      This closes down my app. I don’t know if it is the state of art, but it works

      1. Jesper Bøwes

        Hi Per

        I agree to use M3 way of doing thing as users already adapted that, so I will give it a try

        thx for your response 🙂
        /JEsper

Comments are closed.