首页 > 技术文章 > 打包:独立运行的基于Arcgis Engine的应用程序(上)

jmllc 2020-08-07 11:49 原文

一、知识基础:
1.打包软件的基础知识
(1)软件打包
  使用封装软件或工具,对完成开发的应用进行封装处理,提供应用在运行时所需的元素,打包生成可向用户分发的安装包。这里说的是“元素”,而不是“文件”,是因为很多软件包含的内容远不止软件运行时所需要的文件,还有注册表信息和其他一些东西。
(2)什么是注册表?
  注册表(英语:Registry,中国大陆译作注册表,台湾、港、澳译作登录档)是Microsoft Windows中的一个重要的数据库,用于存储系统和应用程序的设置信息。
  使用注册表的动机通常是:保存一些在程序多次运行之间需要保留的信息,以及让软件可以通过某种特定方式(例如,右键菜单)启动。
(3)Windows Installer
  Windows Installer 是 Windows 操作系统的组件,是Windows 一种系统服务,用来安装和管理系统中的应用程序,简化应用程序的安装过程,为应用程序的开发、定制、安装和升级提供了一种标准化的方法和手段。
  当前Windows Installer最新版本为5.0版。输入msiexec /? 到Windows 运行对话框或命令提示符中,可以获知当前计算机Windows Installer的版本信息。
(4)msiexec.exe
1)位置
  一般位于:C:\Windows\System32\msiexec.exe
2)用途
  命令行方式执行程序安装,用于安装Windows Installer安装包(MSI)
3)常见参数
  下表说明了一些可用的msiexec.exe命令行参数:
(5)软件打包工具
     软件封包工具很多,目前常用的专业软件有:Inno Setup;NullSoft Installation System;InstallShield with MSI;WINRAR;7Z等等。甚至在一个纯净的原版系统下,使用微软的makecab命令行,照样可以生成一个安装包。
      其中,InstallShield with MSI被大部分国外商业软件使用,因为其功能强大(其体积也比较强大),可定制性强,其生成的安装包默认为.msi格式,为微软支持的安装包格式,理论上比其他安装包格式兼容性,稳定性也更加好。 
      国内以及国外小型软件一般多使用NullSoft Installation System(简称NSIS),NSIS使用C语言构建,采用可视化视图构建安装程序,功能强大,体积小巧,扩展性很强。
      Inno Setup也被国内以及国外很多软件使用,小巧、简便、精美是其最大特点,支持pascal脚本,能快速制作出标准Windows2000风格的安装界面,足以完成一般安装任务。该软件用Delphi写成,其官方网站同时也提供源程序免费下载。
     WINRAR,流行好用的压缩软件,目前使用最广的压缩软件。支持多种格式,可以生成自解压格式的软件,可用于普通软件包的制作。通过修改自解压模块,可以制作出很漂亮强大的安装程序。
 
2.打包Arcgis Engine的基础知识
(1)ArcGIS Engine的组成
  ArcGIS Engine由一个软件开发人员工具包和一个可重新分发的运行时组成,为所有ArcGIS应用程序提供了平台。
(2)具有许可证方可执行
  使用"ArcGIS Engine开发人员工具包"构建的所有应用程序,都需要具有适当许可证的"ArcGIS Engine运行时"才能成功执行。
(3)ArcGIS Desktop的用户可以执行
  ArcGIS Desktop构建于"ArcGIS Engine运行时"之上。因此,在开发者允许下,ArcGIS Desktop的用户可以执行基于ArcGIS Engine的应用程序。
(4)ArcGIS Engine运行时部署选项
  部分选项用于决定部署ArcGIS Engine的哪些功能。
  arcgis engine runtime有两个不同的部署选项,分别是"Standard ArcGIS Engine functionality"和"Geodatabase Update extension"。这两个选项对应不同的功能可用性
  Standard ArcGIS Engine functionality:标准ArcGIS Engine功能。提供了所有ArcGIS应用程序的核心功能,允许基本数据创建,shapefile和简单的个人地理数据库的编辑以及GIS分析。
  Geodatabase Update extension:地理数据库更新扩展。在标准功能的基础上,增加了创建和更新由ArcSDE管理的多用户企业地理数据库的功能。提供了以编程方式创建地理数据库行为(例如拓扑,子类型和几何网络)的功能。
  部署完成后,需要授权。
  不同级别功能的可用性由软件授权文件控制,该文件可以由最终用户或应用程序开发人员配置。即ArcGIS Engine的授权文件(*.prvc)控制用户可以使用哪些功能,ArcGIS Engine的功能是否可用需要根据授权文件而定。授权完成后,可以在ArcGIS Administrator里查看该机器上具有哪些许可。
  arcgis engine runtime还有多个额外的功能扩展,分别是: Spatial extension、 3D extension、 Network Analyst extension、 Maplex extension(Maplex扩展)、 Tracking extension(跟踪扩展)、 Schematics(逻辑示意图)、 Data Interoperability extension(数据互操作性扩展)等。
(5)开发与否
  如果是开发人员,需要安装ArcObjects SDK或ArcGIS Engine;如果是最终用户,也就是只运行基于ArcGIS Engine开发的程序,不开发,则只需要安装ArcGIS Engine(运行时)即可。原则上在安装 ArcObjects SDK或ArcGIS Engine这两个之前,要先安装ArcGIS License Manager。如果已经安装过ArcGIS Desktop,并且已授权,则不需要重新安装ArcGIS License Manager。
(6)ArcGIS Engine运行时命令行参数
1)ArcGIS Engine运行时Setup的安装功能(installation feature):
  可用安装功能(installation feature)由ADDLOCAL参数指定。
2)可直接用于命令行或在脚本上的参数,以执行ArcGIS Engine运行时MSI。 
一些示例:
典型安装+无用户界面+非默认位置:
msiexec.exe /i <安装位置>\setup.msi /qn InstallDir=C:\Mysetup
典型安装+具有基本用户界面(进度条)+非默认安装位置:
msiexec.exe /i <安装位置>\setup.msi /qb InstallDir=C:\Mysetup
完全安装+无用户界面+默认安装位置:
msiexec.exe /i <安装位置>\setup.msi /qn ADDLOCAL =ALL
自定义安装+无用户界面的+默认安装位置+指定功能:
msiexec.exe /i <安装位置>\setup.msi /qn ADDLOCAL = ArcEngine,DotNetRuntime
ArcGIS Engine具有以下安装功能(installation feature):ArcEngine,DotNetRuntime, JavaRuntime, Python
(7)静默安装
1)可将ArcGIS Engine运行时的"setup"合并到自己的基于ArcGIS Engine开发的应用程序的安装程序中。 这是可行的,因为可以通过使用Windows Installer命令行参数运行安装程序,而无需图形用户界面来安装ArcGIS Engine运行时。 此过程需利用.msi文件和客户端安装程序服务(msiexec.exe)命令行参数。
2)命令行参数可通过以下三种方式将ArcGIS Engine运行时的"setup"包含在应用程序的"setup"中:
  • 在基于MSI的安装结束时:基于Arcgis Engine的程序安装完成,点击完成按钮后,启动ArcGIS Engine运行时安装程序。
  • 在脚本化的 "setup"中
  • 在批处理文件中
(8)安装包获取

推荐阅读