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@st??eema.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
使用授权文件
一旦包含在项目中并与其正确关联(例如,添加为一个项目的嵌入式资源)然后该应用程序在技术上准备分发。
购买TeeChart Pro AciveX正版授权,请点击“”哟!