• ArcGIS Engine中License问题的补充说明


    关于ArcGIS Engine中License的问题,网上有很多说明了,但重点围绕licensecontrol展开,但因为这个控件到9.2里还是有问题,所以看着网上的描述,未必能实现自己的要求,下面做条目式的补充说明。

    先说明一点,很重要,9.2开始,arcgis desktop和arcgis engine运行时已经统一了,也就是说,engine写的程序能直接在安装了desktop的机器上运行(至少不缺运行时,license的问题是下面讨论的)

    再说明一点,至少到9.2,要安装engine的kit的,必须先安装engine的runtime,即使你已经安装desktop也不行(这点偶尔也有反例,不知道原因,^_^)

    先面来一张图:

    这张图描述了engine的license(ecp)授权与desktoplicnese授权的对应关系,可以看出对于扩展模块,两者是没有明显区别的,但standard engine授权对应arcview授权,带update的GBD授权对应arcinfo和arceditor。为什么要做这个比较呢?是因为engine的license可以从desktop的license中check出来,就是说你不需要engine的ecp,用deskop的license也可以确保engine的正常运行。

    再来一点,standard engine和带update的GBD在程序的生命周期中只能初始化一次,并且要在所有ao代码之前执行,但extensions可以多次签入签出。

    再来一点,standard engine和带update的GBD在程序的一个生命周期中只能用一个,如果你用两个了,只认第一次被初始化的。好了,licensecontrol的问题就在这里,它似乎不能取消默认standard(或许有些安装条件下可以,我几次试了都不行,显示的跟实际的不是一回事)。

    继续,那如何才能正确初始化呢?

    在vb6.0下,请运行esri提供的插件,C:\Program Files\ArcGIS\DeveloperKit\Addins下的RegisterVBAddIns.EXE,最好在dos下运行,有时双击不能正确执行,然后在vb6.0环境中的外接程序下找到license initializer的工具,如图:

    而在net下,在创建工程时就可以选择arcgis工程,就可以设置,不多描述了。

    这种方式下会生成license初始化的模块或类文件,就可以用代码实现license初始化,这种方式的初始化,还没发现出过问题,而且向导生辰的代码是比较完善的,特别是C#的代码。

    到这里,其实已经基本解决license的使用问题了,主要矛盾在update上,前提是你的ecp有可编辑的feature。

    好了,还有一点没说透,因为eninge可以签出desktop的license,所以如果你要编辑sde数据,但又没有engine的ecp(或有ecp,但没有update gdb的feature),那可以签出desktop的license(arceditor或arcinfo),如果你的desktop是arceditor或arcinfo的话(同时有个好处,你可以用desktop的全部扩展模块,很多是engine里没有的),但这会占用掉一个desktop的license,特别是单用户license或浮点license时,特别要注意程序退出时的释放,否则desktop就可能不能用了

    要做测试很简单

    测试1:删除C:\Program Files\ESRI\License\sysgen下的keycodes文件,这时standard和update gdb都不能用,arcview、arceditor、arcinfo的产品licnese确可使用,只要你安装了相应的desktop产品

    测试2:删除gdbedit的feature,但仍使用engine的license(只能用standard了),就不可编辑sde数据

    测试3:没有keycodes文件,但签出了arceditor或arcinfo的产品license,一样可以编辑sde数据;或者没有gdbedit的feature,但签出了arceditor或arcinfo的产品license,一样可以编辑sde数据

    测试4:没有keycodes文件,没有desktop产品;或者有desktop产品,但license管理器没有把服务运行起来,那我保证你什么也玩不转!

  • 相关阅读:
    could not read data from '/Users/lelight/Desktop/ViewControllerLife/ViewControllerLife/Info.plist': The file “Info.plist” couldn’t be opened because there is no such file.
    NSNotification 消息通知的3种方式
    按钮点击播放音效
    字符串变枚举变量
    Flutter的使用教学笔记
    UI控件的位置
    博客园大佬主页跳转
    retain, copy, assign区别
    OC自定义文档头部注释
    OC语言自定义打印
  • 原文地址:https://www.cnblogs.com/holiday/p/1275631.html
Copyright © 2020-2023  润新知