企业智能化解决方案服务商

【TeeChart .NET教程】(十七)设计时,运行时和授权要求

翻译 使用教程 | 编辑:不飞的小鸟 | 2018-08-21 09:26:56| 阅读 0 有用 (0) 评论 (0) 收藏


概述:本文详细介绍了在TeeChart设计时,运行时和授权要求

【下载TeeChart.Net最新版本】

(一)TeeChart运行时要求

本教程将介绍TeeChart应用程序的运行时安装的某些方面。

1.1 TeeChart运行时文件

您的TeeChart应用程序需要与TeeChart.dll一起分发,如果您的应用程序使用Steema.TeeChart.Languages命名空间,则需要与TeeChart.Languages.dll一起分发。您需要在此决定是否在本地安装这些dll,例如,在应用程序目录下的bin目录中,在AssemblyFolders注册表项中注册该文件夹,或者将它们安装在全局程序集缓存(GAC)中。

(二)运行时编辑器帮助支持

TeeChart的编辑器可以在运行时实现,以使您的应用程序用户能够修改图表设置,TeeChart自己的设计时程序员帮助不会延伸到运行时,但您可以选择在运行时添加自己的帮助文件,以便通过图表编辑器上的“Help”按钮打开。

2.1 Configuration

  • 您的帮助文件应该是chm格式(HTML Help v1)
  • 安装在以下注册表位置时,helpfile应该是运行时注册的: [HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Windows\\HTML Help] "YourHelpfile.chm"="drive:\directory"

(三)TeeChart语言支持

TeeChart语言,即能够以不同语言显示TeeChart Editor和其他TeeChart对话框,目前仅支持运行时。

3.1 配置

要在运行时更改语言,您只需使用类似于以下内容的代码:

Steema.TeeChart.Languages.German.Activate();

3.2 示例

此处填充用于语言选择的组合框:

private void Form1_Load(object sender, System.EventArgs e)  
        commander1.Chart = tChart1; 
        tChart1.Aspect.View3D = false; 
        line1.FillSampleValues(20); 
        comboBox1.Items.Add("Arabic"); 
        comboBox1.Items.Add("Brazilian"); 
        comboBox1.Items.Add("Catalan"); 
        comboBox1.Items.Add("Chinese Simple"); 
        comboBox1.Items.Add("Chinese Traditional"); 
        comboBox1.Items.Add("Danish"); 
        comboBox1.Items.Add("Dutch"); 
        comboBox1.Items.Add("English"); 
        comboBox1.Items.Add("Finnish"); 
        comboBox1.Items.Add("French"); 
        comboBox1.Items.Add("Galician"); 
        comboBox1.Items.Add("German"); 
        comboBox1.Items.Add("Hebrew"); 
        comboBox1.Items.Add("Hellenic"); 
        comboBox1.Items.Add("Hungarian"); 
        comboBox1.Items.Add("Indonesian"); 
        comboBox1.Items.Add("Italian"); 
        comboBox1.Items.Add("Japanese"); 
        comboBox1.Items.Add("Korean"); 
        comboBox1.Items.Add("Norwegian"); 
        comboBox1.Items.Add("Polish"); 
        comboBox1.Items.Add("Portuguese"); 
        comboBox1.Items.Add("Russian"); 
        comboBox1.Items.Add("Slovak"); 
        comboBox1.Items.Add("Slovene"); 
        comboBox1.Items.Add("Spanish"); 
        comboBox1.Items.Add("Swedish"); 
        comboBox1.Items.Add("Turkish"); 
        comboBox1.Items.Add("Ukranian"); 
        comboBox1.SelectedItem = "English"; 
 
 
private void comboBox1_SelectedIndexChanged(object sender, System.EventArgs e)  
        switch(comboBox1.SelectedIndex)  
            case 0: Steema.TeeChart.Languages.Arabic.Activate(); break; 
            case 1: Steema.TeeChart.Languages.Brazilian.Activate(); break; 
            case 2: Steema.TeeChart.Languages.Catalan.Activate(); break; 
            case 3: Steema.TeeChart.Languages.ChineseSimp.Activate(); break; 
            case 4: Steema.TeeChart.Languages.ChineseTrad.Activate(); break; 
            case 5: Steema.TeeChart.Languages.Danish.Activate(); break; 
            case 6: Steema.TeeChart.Languages.Dutch.Activate(); break; 
            case 7: Steema.TeeChart.Languages.English.Activate(); break; 
            case 8: Steema.TeeChart.Languages.Finnish.Activate(); break; 
            case 9: Steema.TeeChart.Languages.French.Activate(); break; 
            case 10: Steema.TeeChart.Languages.Galician.Activate(); break; 
            case 11: Steema.TeeChart.Languages.German.Activate(); break; 
            case 12: Steema.TeeChart.Languages.Hebrew.Activate(); break; 
            case 13: Steema.TeeChart.Languages.Hellenic.Activate(); break; 
            case 14: Steema.TeeChart.Languages.Hungarian.Activate(); break; 
            case 15: Steema.TeeChart.Languages.Indonesian.Activate(); break; 
            case 16: Steema.TeeChart.Languages.Italian.Activate(); break; 
            case 17: Steema.TeeChart.Languages.Japanese.Activate(); break; 
            case 18: Steema.TeeChart.Languages.Korean.Activate(); break; 
            case 19: Steema.TeeChart.Languages.Norwegian.Activate(); break; 
            case 20: Steema.TeeChart.Languages.Polish.Activate(); break; 
            case 21: Steema.TeeChart.Languages.Portuguese.Activate(); break; 
            case 22: Steema.TeeChart.Languages.Russian.Activate(); break; 
            case 23: Steema.TeeChart.Languages.Slovak.Activate(); break; 
            case 24: Steema.TeeChart.Languages.Slovene.Activate(); break; 
            case 25: Steema.TeeChart.Languages.Spanish.Activate(); break; 
            case 26: Steema.TeeChart.Languages.Swedish.Activate(); break; 
            case 27: Steema.TeeChart.Languages.Turkish.Activate(); break; 
            case 28: Steema.TeeChart.Languages.Ukrainian.Activate(); break; 

3.3 设计时间语言

TeeChart可以设置默认设计时语言,该语言将在TeeChart添加到表单时立即生效。在第一次打开图表项目时,语言键中激活的语言将生效,或者可以通过图表右键单击菜单“Options”选项设置语言。

3.4 IE浏览器

[HKEY_LOCAL_MACHINE\SOFTWARE\Steema Software\TeeChart.NET] "Language"=dword:00000011 //Hex 11 is decimal 17 (Japanese)

(四)ASP.NET应用程序支持

本节包含与ASP.NET WebForm应用程序分发相关的信息。

4.1 配置

WebChart仅在WebChart的TempChart属性设置为“文件”时才使用注册表设置来查找临时图表存储文件夹。如果WebChart的TempChart属性设置为“Session”,则运行时服务器中不需要注册表项。有关WebChart应用程序配置的更多信息,请参阅教程9,ASP.NET应用程序

4.2 当TempChart设置为File时:

如果要将临时文件写入磁盘,则应使用File设置。默认情况下,安装TeeChart时,它会创建具有临时文件位置和等效虚拟文件夹名称的注册表项,关键如下:

[HKEY_LOCAL_MACHINE \ SOFTWARE \ Steema Software \ TeeChart.NET] “VirtualShare”=“/ TeeChartForNET” “ShareFolder”=“C:\ Program Files \ Steema Software \ TeeChart for .NET v3 \ TeeChartForNET”

如果接受默认安装位置,则上述设置将在标准英语语言机器中创建。TeeChartNET虚拟文件夹由TeeChart安装程序创建。如果您创建必要的IIS虚拟共享位置以反映新的注册表值,则可以更改这些注册表设置。WebChart将文件保存到ShareFolder注册表项中指定的文件夹下名为_Chart_tmp的文件夹中。TeeChart不会删除临时文件,但您可以自动包含一个实用程序作为Windows计划任务。

(五)设计和运行时的授权设置

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

5.1 说明

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

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

5.2 运营考虑因素

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

5.3 在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可以帮助进行授权查询。

5.4 在dll插件中使用TeeChart

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

插件

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

例:在此示例中,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()); 
  } 
}

5.5 在Visual C ++ .NET中使用TeeChart

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

5.6 引用:

我的解决方法很简单:创建一个新的解决方案,并在其中一个新的C#项目,使用SAME应用程序名称作为您的C ++应用程序。创建一个虚拟表单并将需要许可的每个组件放到此表单上。或者,编辑licenses.licx文件,自动生成以引用每个组件。然后构建应用程序。然后导航到调试目录并将“* .licenses”文件复制到C ++应用程序的基本目录中。然后在Project Options->Linker->Input->Embed Managed Resource File setting of your C++ app,请参阅此授权文件。然后执行“重建”。

5.7 Licenses.licx file

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

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

5.8 向旧的“non-licensed”项目添加授权支持

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

5.9 运行时分发

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

5.10 授权问题疑难解答

错误情况是:Error message when compiling:

"Could not transform licenses file 'licenses.licx' into a binary resource."

可能的原因是开发授权注册表项没有到位。请检查本章中描述的可见密钥条目,以查看其中是否存在任何明显的问题或遗漏。解决办法可以是使用TeeChart安装程序重新安装TeeChart,安装程序会设置注册表项。如果问题仍然存在,请通过支持论坛联系TeeChart支持。

License error when trying to run compiled (runtime) output application on machine without designkey installed.

检查项目是否包含Licenses.licx文件。将图表添加到表单时可能已自动添加,或者可能已手动添加。在任何一种情况下,请确认项目中的Licenses.licx文件是否为嵌入式资源。您需要激活“Show all files”以在项目的“Solution Explorer window”窗口中查看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.licenses可能包含在项目中,如启动指南中所述:https ://www.steema.com/linkIn/tnetstd_startup。使用授权文件:一旦包含在项目中并与其正确关联(例如,通过添加为一个项目的嵌入式资源)然后该应用程序在技术上准备分发。


慧都控件|提供软件技术整体解决方案

本站文章除注明转载外,均为本站原创或翻译。
欢迎任何形式的转载,但请务必注明出处,尊重他人劳动成果
文章转载自:

用户评论: 您的宝贵经验,能为更多人带来帮助,登录后才能评论。
评论加载中...


    相关产品
    相关商家