其他分享
首页 > 其他分享> > TeeChart Pro ActiveX教程(十七):设计时,运行时和授权要求(下)

TeeChart Pro ActiveX教程(十七):设计时,运行时和授权要求(下)

作者:互联网

下载TeeChart Pro ActiveX最新版本

设计和运行时的授权设置

本节介绍了为符合TeeChart设计时和运行时授权体系结构而要采取的配置元素和设置步骤。

说明

TeeChart使用基于Microsoft的System.Component.LicenseProvider类的授权证控制。当通过TeeChart安装程序安装TeeChart时,会添加一个注册表授权证密钥,其可见部分可以在HKEY_LOCAL_MACHINE \ SOFTWARE \ Steema Software \ TeeChart.NET密钥下看到:

密钥的存在以及相应的“未发布”密钥代码允许在Visual Studio.NET的设计时使用TeeChart,并允许将密钥编译为运行时可执行(.exe)和库(.dll)文件,以便TeeChart.dll和TeeChart.languages.dll文件可以与已编译的应用程序一起分发,但不提供TeeChart选项作为安装位置的设计时组件。

运营考虑因素

包含TChart,Chart或WebChart组件的项目必须包含Licenses.licx文件。当向其添加任何图表时,Visual Studio IDE会自动将该文件添加到TChart(Windows表单图表)或WebChart(Web表单图表)项目中。对于非设计时图表应用程序,例如,在运行时手动创建图表 “Steema.TeeChart.Chart c = new Steema.TeeChart.Chart();” ,然后您必须手动将授权证文件添加到项目,您可能使用的示例文件包含在Utils文件夹中。您可以通过在VS.NET解决方案资源管理器中选择项目并单击鼠标右键单击“ 添加 ”来添加它 AddExisting Item ',文件类型为'All files',并选择'Utils \ Licenses.Licx'。

在dll中使用TeeChart

如果您已将带有授权证的TeeChart成功编译到dll中,请注意,如果您在另一个应用程序中使用该dll,则需要确保将TeeChart授权证行添加到最终应用程序的Licenses.licx文件中即使该应用程序本身可能没有直接引用TeeChart。如果最终用户应用程序不是在Visual Studio .NET中开发的,那么在最终编译时不需要授权证文件和授权证本身。

如果您在具有开发人员授权证的计算机上不会重复使用您的DLL的环境中工作,请确认重用是否可能属于“插件使用”的范围,如下一节所述,在插件dll中使用TeeChart。如果您认为您的程序集(使用TeeChart)需要由具有TeeChart类和方法知识的容器重新使用或需要引用程序集,但是在没有TeeChart Developer License的计算机上请确认相关机器已获得在设计时使用TeeChart的授权。某些分销或团队工作情况可能需要通过特殊授权条件来解决,Steema人员在info@steema.com可以帮助进行授权证查询。

在插件dll中使用TeeChart

标准版的TeeChart for .NET支持授权控制,以便在动态加载的插件中使用。该插件通常是一个包含TeeChart的程序集,可以在运行时由容器应用程序使用NET的“Assembly.Load”方法或类似方法动态加载。要允许容器应用程序加载和运行TeeChart而不需要容器级别的licenses.licx文件,TeeChart提供了一个默认构造函数的替代方法,通过该构造函数,编译它的dll程序集将自身作为参数传递,并在该级别进行授权证检查不在容器应用程序的DLL。请注意,容器应用程序可能无法直接向TeeChart进行代码调用。它可以打开并运行TeeChart dll,而dll本身就是自治的,可以自己调用TeeChart。允许从容器应用程序进行Chart调用的规则的例外是,如果TeeChart的方法被可以在独立接口中定义的方法“包装”(次要调用)。可以修改此处描述的示例以包括此类调用。

插件

包含TeeChart的插件会在创建时加载TeeChart将其自身作为参数传递。只有在第一次打开TeeChart时才需要使用重载的构造函数,以允许进行授权证检查。此后,可以通过常规手段使用TeeChart。使用的一个例子如下。在此示例中,TeeChart的“虚拟”创建在表单创建时强制执行初始授权证检查。

例: 在此示例中,PluginShared.Factory是由宿主应用程序引用的接口,它提供了一个名为“CreateForm”的方法。容纳TeeChart的程序集实现了PluginShared.Factory,因此也提供了CreateForm方法,但它有自己的实现(在其中加载TeeChart)。主机识别CreateForm方法调用,而无需了解TeeChart特定程序集。

请注意。容纳TeeChart的程序集必须包含Licenses.licx文件,并在具有有效TeeChart开发人员授权证的计算机上进行编译。

装配外壳TeeChart(例如PluginWithTeeChart.dll)


Class:

namespace Plugin 
{ 
   public class FactoryImpl : PluginShared.Factory   
    { 
        public System.Windows.Forms.Form CreateForm() 
        { 
            try 
            { 
                return new PluginWithTeeChart.FormWithChart(); 
            } 
            catch (Exception e) 
            { 
                MessageBox.Show("failed to create plugin with error: " + e.ToString()); 
                return null; 
            } 
        } 
    } 
}

Form:

namespace PluginWithTeeChart 
{ 
    public partial class FormWithChart : Form 
    { 
        public FormWithChart() 
        { 
            //discardable Chart forces License check 
            Steema.TeeChart.TChart tempChart = new Steema.TeeChart.TChart(this); 
            tempChart = null; 
            InitializeComponent(); //<---- Normal application code. Could run here various TeeCharts without need for overloaded constructor 
        } 
    } 
}

容器应用程序(例如HostApp.exe)

容器可能按以下方式装载TeeChart外壳组件(dll)。HostApp引用发布CreateForm方法的公共接口Plugin.FactoryImpl非常重要。

void LoadTeeChartPlugin(string pluginName) 
{ 
  string pluginName = @".dll"; 
  try 
  { 
    Debug.WriteLine("Loading plugin assembly " + pluginName); 
 
    Assembly assembly = Assembly.LoadFrom(pluginName); 
 
    string factoryTypeName = "Plugin.FactoryImpl"; 
 
    Type t = assembly.GetType(factoryTypeName); 
    if (t == null) 
    { 
      MessageBox.Show("Type: " + factoryTypeName + " not found in plugin assembly"); 
      return; 
    } 
 
    PluginShared.Factory factory = (PluginShared.Factory)assembly.CreateInstance(t.ToString()); 
    System.Windows.Forms.Form f = factory.CreateForm(); 
    f.ShowDialog(); 
  } 
  catch (Exception ex) 
  { 
    MessageBox.Show(ex.ToString()); 
  } 
}

在Visual C ++ .NET中使用TeeChart

VC ++中的授权实现并不像其他.NET编程语言那样透明。您可以按照Tim Adler在microsoft.public.dotnet.framework新闻组中描述的步骤成功实施VC ++项目的授权。

引用:

“我的解决方法很简单:创建一个新的解决方案,并在其中一个新的C#项目,使用SAME应用程序名称作为您的C ++应用程序。创建一个虚拟表单并将需要授权的每个组件放到此表单上。或者,编辑licenses.licx文件,自动生成以引用每个组件。然后构建应用程序。然后导航到调试目录并将“* .licenses”文件复制到C ++应用程序的基本目录中。然后在项目选项下 - >链接器 - >输入 - >嵌入C ++应用程序的托管资源文件设置,请参阅此授权证文件。然后执行'重建'。“

Licenses.licx文件 该文件是一个文本文件,至少应包含一个文件或用作通用文件,以下三行:


Steema.TeeChart.Chart, TeeChart 
Steema.TeeChart.TChart, TeeChart 
Steema.TeeChart.Web.WebChart, TeeChart

内容应至少包括项目创建的类的名称,通常是基于Windows窗体的项目的Steema.TeeChart.TChart,以及用于按代码和Steema.TeeChart创建图表的项目的Steema.TeeChart.Chart。 Web.WebChart用于包含TeeChart的WebChart组件的WebForm项目。 将图表添加到表单NET时,会自动添加稍长的版本,也是正确的,包括程序集版本号和公钥。

Steema.TeeChart.TChart, TeeChart, Version=1.1.1864.22788, Culture=neutral, PublicKeyToken=9c8126276c77bdb7

向旧的“非授权”项目添加授权证支持

请注意,对于使用以前版本的TeeChart创建的表单应用程序,授权证文件不存在,您可以通过将“工具”调板的“Steema”部分中的“图表”拖动到任何文件来快速生成它。项目的表格,然后删除它。新拖动的图表会激发IDE添加Licenses.licx文件。

运行时分发

使用Licenses.licx文件编译的项目的.exe或.dll可以作为运行时应用程序与TeeChart.dll(以及TeeChart.Languages.dll文件,如果需要)一起分发,而无需任何TeeChart要安装的运行时授权证文件或注册表项。

授权问题疑难解答

我们看到的可能的错误情况是: - 编译时出现错误消息:

“无法将授权证文件'licenses.licx'转换为二进制资源。” 可能的原因是开发授权证注册表项未到位。请检查本章中描述的可见密钥条目,以查看其中是否存在任何明显的问题或遗漏。解决问题的一个选项是使用TeeChart安装程序重新安装TeeChart,安装程序会设置注册表项。如果问题仍然存在,请通过支持论坛联系TeeChart支持。

- 尝试在未安装designkey的计算机上运行编译(运行时)输出应用程序时出现授权证错误。 检查项目是否包含Licenses.licx文件。将图表添加到表单时可能已自动添加,或者可能已手动添加。在任何一种情况下,请确认项目中的Licenses.licx文件是否为嵌入式资源。您需要激活“显示所有文件”以在项目的“解决方案资源管理器”窗口中查看Licenses.licx的存在。

- 问题的另一个可能原因是licenses.licx文件内容不正确。请检查内容是否反映了本章前一部分中描述的内容。

如何为设计时和运行时指定自定义主题

自定义主题是小* .xml文件,可以通过简单的代码行创建:

tChart1.Export.Theme.Save(@ “C:\ Steema \ MyTheme.xml”); 此自定义主题封装了许多与图形,画笔和笔的颜色以及面板,轴,页眉,页脚,图例等样式相关的图表图形设置。创建后,这些主题可以显示在图表编辑器的主题选项卡中,名称出现在那里作为文件的名称。为了使图表编辑器知道在哪里查找这些文件,有一个注册表设置,它指定本地机器上的文件夹:

[HKEY_LOCAL_MACHINE\SOFTWARE\Steema Software\TeeChart.NET]  
"ThemeFolder"="C:\Program Files\Steema Software\TeeChart for .NET v3\Themes"

只需将自定义主题(* .xml文件)添加到此键中指定的文件夹,图表编辑器就会读取并显示它们。

TeeChart.Standard商业版的授权设置

TeeChart标准商业版通过nuget.org网站作为评估装配提供,功能齐全,在图表面上显示水印。注册授权证时,会向被授权方提供名为teechart.licenses的授权证文件。此文件可能包含在项目中以激活授权证并隐藏评估水印。

说明

teechart.licenses可能包含在项目中,如启动指南中所述:https ://www.steema.com/linkIn/tnetstd_startup

使用授权文件

一旦包含在项目中并与其正确关联(例如,添加为一个项目的嵌入式资源)然后该应用程序在技术上准备分发。



标签:文件,ActiveX,Pro,Steema,应用程序,dll,TeeChart,授权证
来源: http://blog.51cto.com/13993266/2348090