MapXtreme 安装、编码及打包注意事项

一、安装时的问题
1、安装失败
有时候安装Mapxtreme的时候,会有这样的情况,软件安装进度条已经到了最后,好像马上就完成,突然来个rollback,以迅雷不及掩耳盗铃之势回滚回去,然后提示软件安装失败,至于为啥失败又不说。 一开始我也被这个问题搞得焦头烂额,甚至重装系统也没搞定,最后仔细排查之后,还是找到了原因:
1>如果系统安装了iis服务,先卸载iis,然后安装Mapxtreme,之后再把iis装回去;
2>如果系统没有安装iis,这种情况很少见,但也碰到过,解决方法比较晕,先装好iis,再装Mapxteme,如果出现不能安装,参考1>;

2、安装后,在vs工具栏上找不到控件
Mapxtreme有2004、2005、2008等多个版本,分别对应不同版本的vs,Mapxtreme2004用在vs2003上,Mapxtreme2005用在vs2005上,Mapxtreme2008用在vs2008上,版本不对的话,Mapxtreme的控件是不会自动添加到vs的工具栏上的。
当然,我们都是熟悉在某个版本的vs里工作或者团队使用统一版本的vs,不可能因为一个Mapxtreme而把开发工具给换了,这样的话,可以右键点击vs工具栏,点击“选择项”,然后选择“.Net Framework 组件”页,点击"浏览"按钮,找到Mapxtreme的安装路径(一般在"系统盘\Program Files\Common Files\MapInfo\MapXtreme\x.x",其中的x.x是Mapxtreme的实际版本,如Mapxtreme2005就是6.6), 添加需要的控件的DLL。
其中MapInfo.CoreEngine.dll中包含MapControl等等,MapInfo.Windows.Dialogs.dll中包含layerControl、MapToolBar等等;

二、使用中的问题
1、多线程编程,在创建地图的线程之外的调用地图控件出错
其实这个不是Mapxtreme本身的问题,是.NET2.0和之后的版本里,不允许直接跨线程调用控件。至于解决方面,和普通的多线程调用控件是一样的,如下:
地图线程中代码:
private void _update(object para1,object para2)
{
//实际地图操作代码
}
public delegate void MapUpdateDelegate(object para1,object para2);
public void UpdateMap(object para1,object para2)
{
if(mapControl1.InvokeRequired)
{
mapControl1.BeginInvoke(new MapUpdateDelegate(_update), new object[]{ para1, para2 });
}
else _update( para1, para2);
}
在需要的地方调用UpdateMap函数即可.

同理,当使用事件(event)时,如果有跨线程的情况,也需要这样做。

2、Mapxtreme开发包时间限制的问题
Mapxtreme如果购买正版的话,开发包好像是10万左右,如果需要多台电脑上运行,还得加购许可,基本可以说绝了大部分开发方买正版的想法。如果用试用版,那就会有60天(还是45天?不太记得了,因为这个问题已经很久没困扰我了,^_^)的使用限制,超过限制的时间后,即使卸载重装也没用,不能再进行开发。我的解决方法是,安装一个全新的系统,装好工作用的所有软件,然后ghost备份,然后再装Mapxtreme,超过时间限制了,直接还原,再装,再用,再还原......。或者在网上搜一下Mapxtreme.lrc。

3、程序打包安装
程序开发好了,自然得打包,方便客户使用。可是,大概是用的是试用版的原因,无法直接用vs创建的打包程序自动打包。
一开始我使用Mapxtreme的时候,这个问题可是困扰了我很久,最后并排摆上两个笔记本,一边打包,一般测试安装,相当于用穷举法,硬是把这个打包给折腾了出来。
实际上Mapxtreme的打包还有更麻烦的,因为其有多个版本,各个版本文件版本、文件名什么的不一样,就是说,每个版本的Mapxtreme都得有他自己的打包工程,不能通用。

posted on 2013-02-25 09:44  读懂洋字码  阅读(818)  评论(0编辑  收藏  举报