C#+ArcObject 10.1开发的程序,运行环境需要ArcGIS 10.1的license开启,同时有desktop 或 Engine。
1.程序在本机运行正常,其他装有相应版本的ArcGIS并开启license服务后的机器也可以运行,打包成安装程序后,安装后也可正常运行。
2.关闭license后 a.本机调试可以出现错误提示,b.直接运行生成的exe文件也会出现错误提示,c.用安装包安装后的程序运行 不会提示错误信息
3.错误提示代码如下
static void Main()
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
//加入这一句话,engine or desktop
ESRI.ArcGIS.RuntimeManager.Bind(ESRI.ArcGIS.ProductCode.EngineOrDesktop);
IAoInitialize m_AoInitialize = new AoInitialize();
//////////////////////////////////////
if (m_AoInitialize == null)
{
System.Windows.Forms.MessageBox.Show("系统初始化失败,可能是缺少ArcEngine或没有开启许可服务", "错误", MessageBoxButtons.OK, MessageBoxIcon.Error);
Application.Exit();
}
// 判断产品是否有效
esriLicenseStatus licenseStatus = (esriLicenseStatus)m_AoInitialize.IsProductCodeAvailable(esriLicenseProductCode.esriLicenseProductCodeEngine);
if (licenseStatus == esriLicenseStatus.esriLicenseAvailable)
{
licenseStatus = (esriLicenseStatus)m_AoInitialize.Initialize(esriLicenseProductCode.esriLicenseProductCodeEngine);
if (licenseStatus != esriLicenseStatus.esriLicenseCheckedOut)
{
System.Windows.Forms.MessageBox.Show("ArcGIS许可服务Can't be checked out,可能是缺少ArcEngine10.1或没有开启许可服务", "错误", MessageBoxButtons.OK, MessageBoxIcon.Error);
Application.Exit();
}
}
else
{
System.Windows.Forms.MessageBox.Show("ArcGIS许可服务不可用,可能是缺少ArcEngine10.1或没有开启许可服务", "错误", MessageBoxButtons.OK, MessageBoxIcon.Error);
Application.Exit();
}
/////////////////////////////////////
try
{
Application.Run(new MainForm());
}
catch (Exception)
{
System.Windows.Forms.MessageBox.Show("主窗体初始化失败,可能是缺少ArcEngine10.1或没有开启许可服务,程序将退出", "错误", MessageBoxButtons.OK, MessageBoxIcon.Error);
Application.Exit();
}
}
4.提示图片
关闭license后直接运行release目录下exe的错误提示
用安装包安装后运行,直接死掉,不提示错误(若license开启则可正常运行)
提问:如何让安装包安装后的程序在运行时,若客户机环境不对(如没有开启License,或不匹配)也能收到相应的提示信息?
谢谢!