Deploying Desktop ApplicationsDeploying Desktop Applications
Dara HughesDara HughesMita ShahMita Shah
ESRI Developer Summit 2008 Tech SessionESRI Developer Summit 2008 Tech Session 11
AgendaAgenda
•• IntroductionIntroduction•• Workflow for Developing and Deploying ApplicationsWorkflow for Developing and Deploying Applications•• Licensing and Copy ProtectionLicensing and Copy Protection•• Authorizing ArcGIS Engine ApplicationsAuthorizing ArcGIS Engine Applications•• Planning for your DeploymentPlanning for your Deployment•• Creating a Deployment PackageCreating a Deployment Package
ESRI Developer Summit 2008 Tech SessionESRI Developer Summit 2008 Tech Session 22
ESRI Developer Summit 2008 Tech SessionESRI Developer Summit 2008 Tech Session 33
WebWebBrowsersBrowsers
GIS LogicGIS LogicEmbedded inEmbedded inApplicationApplication
CustomCustomApplicationsApplications
GISGISDesktopDesktop
ArcGIS EngineArcGIS Engine
Simple, focused functionsSimple, focused functions Full GIS functionsFull GIS functions
ESRI Developer Summit 2008 Tech SessionESRI Developer Summit 2008 Tech Session 44
ArcGIS EngineArcGIS Engine
•• ArcGIS Engine RuntimeArcGIS Engine Runtime–– The platform for running cross platform custom desktop The platform for running cross platform custom desktop
solutions built with the Engine Developer Kitsolutions built with the Engine Developer Kit
•• ArcGIS Engine Developer KitArcGIS Engine Developer Kit–– The toolkit for building and deploying custom desktop The toolkit for building and deploying custom desktop
ArcObjectsArcObjects--based solutions (COM, .NET, Java, C++)based solutions (COM, .NET, Java, C++)
ESRI Developer Summit 2008 Tech SessionESRI Developer Summit 2008 Tech Session 55
ArcGIS Engine Developer KitArcGIS Engine Developer Kit
•• Engine ArcObjects support forEngine ArcObjects support for–– COM, .NET, Java, and C++COM, .NET, Java, and C++
•• Developer controlsDeveloper controls•• Developer resourcesDeveloper resources
–– Help, doc, samples, etc.Help, doc, samples, etc.
•• The rights to reThe rights to re--distribute the distribute the Engine Runtime setupEngine Runtime setup
Product for DevelopersProduct for Developers
Workflow for Developing and Deploying Workflow for Developing and Deploying ApplicationsApplications
ESRI Developer Summit 2008 Tech SessionESRI Developer Summit 2008 Tech Session 66
Workflow for Developing and DeployingWorkflow for Developing and Deploying
•• Install ArcGIS Engine RuntimeInstall ArcGIS Engine Runtime•• Install ArcGIS Engine Developer KitInstall ArcGIS Engine Developer Kit•• Build application Build application •• Test and DeployTest and Deploy
ESRI Developer Summit 2008 Tech SessionESRI Developer Summit 2008 Tech Session 77
Dev MachineDev Machine
(Engine Devkit (Engine Devkit + Engine + Engine Runtime)Runtime)
Clean Testing MachineClean Testing Machine
(Engine Runtime + Your app Install)(Engine Runtime + Your app Install)
User MachineUser Machine
(Engine Runtime + Your app)(Engine Runtime + Your app)
ESRI Developer Summit 2008 Tech SessionESRI Developer Summit 2008 Tech Session 88
ArcGIS Engine Development ProcessArcGIS Engine Development Process
•• Determine the type of applicationDetermine the type of application•• Consider licensing as part of your initial designConsider licensing as part of your initial design•• Develop the application functionalityDevelop the application functionality•• Create and author data and mapsCreate and author data and maps
Licensing versus Copy ProtectionLicensing versus Copy Protection
These are not synonymous terms!!!These are not synonymous terms!!!
ESRI Developer Summit 2008 Tech SessionESRI Developer Summit 2008 Tech Session 99
ESRI Developer Summit 2008 Tech SessionESRI Developer Summit 2008 Tech Session 1010
LicensingLicensing
•• Describes Describes legallegal rules for software productrules for software product––End user right to useEnd user right to use
•• Use right definitionsUse right definitions
––License termLicense term•• Perpetual, Term + renewal, Annual (subscription)Perpetual, Term + renewal, Annual (subscription)
––Termination rulesTermination rules
ESRI Developer Summit 2008 Tech SessionESRI Developer Summit 2008 Tech Session 1111
Copy ProtectionCopy Protection
•• Mechanism to enforce (or reMechanism to enforce (or re--enforce) enforce) license terms for right to uselicense terms for right to use––Technology Enforcement ModelsTechnology Enforcement Models
•• Shared enablement pools (Concurrent Use or Shared enablement pools (Concurrent Use or Floating)Floating)
•• Single enablement (Single Use)Single enablement (Single Use)•• Time outTime out
––License Enforcement ModelLicense Enforcement Model•• ““PaperPaper”” copy protectioncopy protection
–– No technology enforcement No technology enforcement -- honor systemhonor system–– ““Copy rightsCopy rights”” as defined in the license agreementas defined in the license agreement
ESRI Developer Summit 2008 Tech SessionESRI Developer Summit 2008 Tech Session 1212
Copy Protection Copy Protection
•• ESRI Copy Protection (ECP)ESRI Copy Protection (ECP)unlocks ArcObjectsunlocks ArcObjects
•• Purchase ArcGIS Engine Developer KitPurchase ArcGIS Engine Developer Kit•• ECP Registration Number (eECP Registration Number (e--mail or letter)mail or letter)
•• No hardware key or license managerNo hardware key or license manager
•• Register product with ESRI Customer ServiceRegister product with ESRI Customer Service•• Customer Service web siteCustomer Service web site•• Phone or faxPhone or fax•• Software Authorization WizardSoftware Authorization Wizard
ESRI Developer Summit 2008 Tech SessionESRI Developer Summit 2008 Tech Session 1313
ArcGIS Engine Copy Protection ArcGIS Engine Copy Protection ––Designer License (Design Time License)Designer License (Design Time License)•• Codes in the .ecp fileCodes in the .ecp file
–– designer designer –– standardenginestandardengine–– gdbeditgdbedit–– streetmapenginestreetmapengine–– networkenginenetworkengine–– spatialenginespatialengine–– 3dengine3dengine
•• Designer license feature allows you to Designer license feature allows you to ““designdesign”” and and ““developdevelop”” ArcGIS Engine applicationsArcGIS Engine applications
•• All levels of functionality are available for developmentAll levels of functionality are available for development
ESRI Developer Summit 2008 Tech SessionESRI Developer Summit 2008 Tech Session 1414
Authorization Summary ToolAuthorization Summary Tool
•• Tool to check what is authorized on your systemTool to check what is authorized on your system
Authorizing ArcGIS Engine ApplicationsAuthorizing ArcGIS Engine Applications
ESRI Developer Summit 2008 Tech SessionESRI Developer Summit 2008 Tech Session 1515
ESRI Developer Summit 2008 Tech SessionESRI Developer Summit 2008 Tech Session 1616
ArcGIS Product LevelsArcGIS Product Levels
•• ArcGIS Engine and Desktop ArcGIS Engine and Desktop are functionally similarare functionally similar
•• Two levelsTwo levels–– ProductProduct
•• ArcView, ArcEditor and ArcView, ArcEditor and ArcInfoArcInfo
•• Engine standard and Engine standard and GDB UpdateGDB Update
–– ExtensionExtension
•• Spatial, 3D, Network, Spatial, 3D, Network, ……
Desktop
Extensions
ArcSDE Edit ArcEditor
GeodatabaseUpdate
Ext
Standard ArcView StandardEngine
3D…3DAnalyst…
Engine Runtime
ESRI Developer Summit 2008 Tech SessionESRI Developer Summit 2008 Tech Session 1717
ArcGIS Engine Runtime InitializationArcGIS Engine Runtime Initialization
•• All applications must initialize a product license at All applications must initialize a product license at runtimeruntime
•• LicenseControlLicenseControl•• Use esriSystem::AoInitialize Use esriSystem::AoInitialize •• Product codes availableProduct codes available
–– ArcViewArcView–– ArcEditorArcEditor–– ArcInfoArcInfo–– Engine Engine –– EngineGeoDBEngineGeoDB
Private m_pAoInitialize As IAoInitialize
Private Sub Form_Load()Set m_pAoInitialize = New AoInitializem_pAoInitialize.Initialize esriLicenseProductCodeEngine
End Sub
Private Sub Form_Unload(Cancel As Integer)
m_pAoInitialize.Shutdown
End Sub
Private m_pAoInitialize As IAoInitialize
Private Sub Form_Load()Set m_pAoInitialize = New AoInitializem_pAoInitialize.Initialize esriLicenseProductCodeEngine
End Sub
Private Sub Form_Unload(Cancel As Integer)
m_pAoInitialize.Shutdown
End Sub
ESRI Developer Summit 2008 Tech SessionESRI Developer Summit 2008 Tech Session 1818
ArcGIS Engine Runtime Initialization: ExtensionsArcGIS Engine Runtime Initialization: Extensions
•• Applications can also initialize an extension licenseApplications can also initialize an extension license•• Extension codes availableExtension codes available
–– 3DAnalyst, SpatialAnalyst, Network, etc3DAnalyst, SpatialAnalyst, Network, etc
ESRI Developer Summit 2008 Tech SessionESRI Developer Summit 2008 Tech Session 1919
Leveraging ArcGIS Engine or Desktop Leveraging ArcGIS Engine or Desktop
•• Applications can initialize an ArcGIS Engine or Desktop Applications can initialize an ArcGIS Engine or Desktop licenselicense
•• Use IAoInitialize::IsProductCodeAvailableUse IAoInitialize::IsProductCodeAvailable•• May want to prompt the user May want to prompt the user ……
' Try to check out Engine license firstIf m_pAoInitialize.IsProductCodeAvailable(esriLicenseProductCodeEngine)
= esriLicenseAvailable Thenm_pAoInitialize.Initialize esriLicenseProductCodeEngine
' Try to check out Desktop license nextElseIfm_pAoInitialize.IsProductCodeAvailable(esriLicenseProductCodeArcView) = esriLicenseAvailable Thenm_pAoInitialize.Initialize esriLicenseProductCodeArcView
End If
' Try to check out Engine license firstIf m_pAoInitialize.IsProductCodeAvailable(esriLicenseProductCodeEngine)
= esriLicenseAvailable Thenm_pAoInitialize.Initialize esriLicenseProductCodeEngine
' Try to check out Desktop license nextElseIfm_pAoInitialize.IsProductCodeAvailable(esriLicenseProductCodeArcView) = esriLicenseAvailable Thenm_pAoInitialize.Initialize esriLicenseProductCodeArcView
End If
ESRI Developer Summit 2008 Tech SessionESRI Developer Summit 2008 Tech Session 2020
ESRI Developer Summit 2008 Tech SessionESRI Developer Summit 2008 Tech Session 2121
Initialization RulesInitialization Rules
•• License initialization must occur before any License initialization must occur before any ArcObjects code executesArcObjects code executes
•• A product license can be checked out only once for A product license can be checked out only once for the duration of the applicationthe duration of the application
•• Extension licenses can be checked in and out as Extension licenses can be checked in and out as necessarynecessary
•• Cannot combine or mix product and extension Cannot combine or mix product and extension licenseslicenses–– Engine RT must match Engine ExtensionsEngine RT must match Engine Extensions
•• Tip: Always attempt to consume the lowest level of Tip: Always attempt to consume the lowest level of licensing possiblelicensing possible
Planning For Your DeploymentPlanning For Your Deployment
ESRI Developer Summit 2008 Tech SessionESRI Developer Summit 2008 Tech Session 2222
ESRI Developer Summit 2008 Tech SessionESRI Developer Summit 2008 Tech Session 2323
Deployment ScenariosDeployment Scenarios
1.1. End user does not have ArcGIS Engine RuntimeEnd user does not have ArcGIS Engine Runtime
2.2. End user has ArcGIS Desktop installedEnd user has ArcGIS Desktop installed
ESRI Developer Summit 2008 Tech SessionESRI Developer Summit 2008 Tech Session 2424
End User Does Not Have ArcGIS Engine End User Does Not Have ArcGIS Engine RuntimeRuntime•• Runtime Installation:Runtime Installation:
1.1. End user installs from Runtime CDEnd user installs from Runtime CD2.2. You install the Runtime for the end userYou install the Runtime for the end user
•• Runtime Authorization:Runtime Authorization:1.1. End user purchase and authorizes Runtime license via ESRI End user purchase and authorizes Runtime license via ESRI 2.2. Business Partners with special contract can authorize Runtime Business Partners with special contract can authorize Runtime
for end userfor end user
•• Developer can include Engine Runtime setup files on Developer can include Engine Runtime setup files on their CDtheir CD
•• Make images of the Engine Runtime CDMake images of the Engine Runtime CD
ESRI Developer Summit 2008 Tech SessionESRI Developer Summit 2008 Tech Session 2525
End user has ArcGIS Desktop installedEnd user has ArcGIS Desktop installed
•• Versions prior to 9.2 still needs ArcGIS Engine Runtime Versions prior to 9.2 still needs ArcGIS Engine Runtime installedinstalled
•• Your application will have to check for and use Your application will have to check for and use ArcGIS Desktop licensesArcGIS Desktop licenses
•• Concurrent or SingleConcurrent or Single--useruser
•• ArcView ArcView ≈≈ standard Engine Runtimestandard Engine Runtime•• ArcEditor ArcEditor ≈≈ Engine Runtime with GDB UpdateEngine Runtime with GDB Update
Methods to deploy Engine RuntimeMethods to deploy Engine Runtime
1.1. End user runs Engine Runtime setup directly from End user runs Engine Runtime setup directly from the CDthe CD
2.2. Developer includes Engine Runtime setup with a Developer includes Engine Runtime setup with a custom setup programcustom setup program
ESRI Developer Summit 2008 Tech SessionESRI Developer Summit 2008 Tech Session 2626
End user installs Engine Runtime from CDEnd user installs Engine Runtime from CD
•• Developer can include Engine Runtime setup files on Developer can include Engine Runtime setup files on their CDtheir CD
•• Make images of the Engine Runtime CDMake images of the Engine Runtime CD
ESRI Developer Summit 2008 Tech SessionESRI Developer Summit 2008 Tech Session 2727
Methods to include Engine RuntimeMethods to include Engine Runtime
•• Launch with your MSILaunch with your MSI--based setupbased setup•• Launch within a scripted setupLaunch within a scripted setup•• Launch within a batch fileLaunch within a batch file
ESRI Developer Summit 2008 Tech SessionESRI Developer Summit 2008 Tech Session 2828
Developer includes Engine RuntimeDeveloper includes Engine Runtime
•• Engine Runtime can be installed silently using Engine Runtime can be installed silently using standard msiexec commandsstandard msiexec commands
-- Basic UI InstallBasic UI Installmsiexec.exe /i <setup location>msiexec.exe /i <setup location>\\Setup.msi /qbSetup.msi /qb
-- No UI InstallNo UI Installmsiexec.exe /i <setup location>msiexec.exe /i <setup location>\\Setup.msi /qnSetup.msi /qn
-- Installdir ParameterInstalldir Parametermsiexec.exe /i <setup location>msiexec.exe /i <setup location>\\Setup.msi /qn Installdir=c:Setup.msi /qn Installdir=c:\\testtest
ESRI Developer Summit 2008 Tech SessionESRI Developer Summit 2008 Tech Session 2929
Service PacksService Packs
•• Application requires ArcGIS Engine Runtime and Application requires ArcGIS Engine Runtime and Service PackService Pack–– Include Service pack file (msp) on CDInclude Service pack file (msp) on CD
•• Launch within a batch fileLaunch within a batch file
ESRI Developer Summit 2008 Tech SessionESRI Developer Summit 2008 Tech Session 3030
REM Set variablesSET MSI_PATH=<CDROM>\ArcEngine\Setup.msiSET MSP_PATH=<CDROM>\ArcGISEngine92sp5.msp
REM Launch MSI Silently - NO UImsiexec.exe /i "%MSI_PATH%" /qnmsiexec.exe /p "%MSP_PATH%” /qn
Planning to deploy your SetupPlanning to deploy your Setup
Some other things to keep in mind Some other things to keep in mind ……
•• You can only deploy or redistribute the entire setup, You can only deploy or redistribute the entire setup, you can not bundle resources from Engine Runtime you can not bundle resources from Engine Runtime
•• Do not uninstall the Engine RuntimeDo not uninstall the Engine Runtime
ESRI Developer Summit 2008 Tech SessionESRI Developer Summit 2008 Tech Session 3131
Creating A Deployment PackageCreating A Deployment Package
ESRI Developer Summit 2008 Tech SessionESRI Developer Summit 2008 Tech Session 3232
Authoring a Setup ProgramAuthoring a Setup Program
1.1. Create the setup template Create the setup template
2.2. Add the solution files to the template.Add the solution files to the template.
3.3. Launch ConditionsLaunch Conditions
4.4. PrerequisitesPrerequisites
ESRI Developer Summit 2008 Tech SessionESRI Developer Summit 2008 Tech Session 3333
The Setup TemplateThe Setup Template
1.1. Create the Setup IMAGECreate the Setup IMAGE
2.2. Create the Setup Template Create the Setup Template –– Product InformationProduct Information
(Name, Version, ProductCode, Default Install location etc..)(Name, Version, ProductCode, Default Install location etc..)
–– Registry KeysRegistry Keys
–– Features (optional) Features (optional)
ESRI Developer Summit 2008 Tech SessionESRI Developer Summit 2008 Tech Session 3434
Add Solution filesAdd Solution files
1.1. Add filesAdd files
2.2. Register DllRegister Dll’’s s
3.3. Add shortcutsAdd shortcuts
ESRI Developer Summit 2008 Tech SessionESRI Developer Summit 2008 Tech Session 3535
Launch ConditionsLaunch Conditions
•• Components required for the setup to run Components required for the setup to run –– such as .NET such as .NET Framework, Engine Runtime, etc.Framework, Engine Runtime, etc.
•• Registry keyRegistry key’’s to check if Microsoft .NET Framework V2.0 is s to check if Microsoft .NET Framework V2.0 is installed.installed.HKLMHKLM\\SoftwareSoftware\\MicrosoftMicrosoft\\.NETFramework.NETFramework\\PolicyPolicy\\V2.01V2.01
−− 5072750727•• Registry key to check if Engine Runtime is installed.Registry key to check if Engine Runtime is installed.
HKLMHKLM\\SoftwareSoftware\\ESRIESRI\\ArcGIS Engine RuntimeArcGIS Engine Runtime
InstalldirInstalldirRealVersionRealVersion.NET_Support.NET_Support
ESRI Developer Summit 2008 Tech SessionESRI Developer Summit 2008 Tech Session 3636
PrerequisitesPrerequisites
Check for PreCheck for Pre--RequisitesRequisites–– Installed Product, Features and Service PacksInstalled Product, Features and Service Packs–– Registry keysRegistry keys
Engine Registry keysEngine Registry keysHKEY_LOCAL_MACHINEHKEY_LOCAL_MACHINE\\SoftwareSoftware\\ESRIESRI\\ArcGIS Engine ArcGIS Engine
RuntimeRuntime\\RealVersionRealVersionHKEY_LOCAL_MACHINEHKEY_LOCAL_MACHINE\\SOFTWARESOFTWARE\\ESRIESRI\\ArcGIS Engine ArcGIS Engine
RuntimeRuntime\\SPNumberSPNumber
−− Your setup.exe would install Engine Runtime if not Your setup.exe would install Engine Runtime if not found. (your Setup.msi would not run without it.)found. (your Setup.msi would not run without it.)
ESRI Developer Summit 2008 Tech SessionESRI Developer Summit 2008 Tech Session 3737
Installer authoring toolsInstaller authoring tools
•• The ESRI installation team uses Wise for Windows The ESRI installation team uses Wise for Windows Installer (WFWI) 7.1 for authoring Windows setupsInstaller (WFWI) 7.1 for authoring Windows setups
•• AlternativesAlternatives–– Microsoft Windows Installer SDKMicrosoft Windows Installer SDK–– Microsoft Visual StudioMicrosoft Visual Studio–– InstallShieldInstallShield–– WiX ToolsetWiX Toolset–– NullSoft Scriptable Install SystemNullSoft Scriptable Install System
ESRI Developer Summit 2008 Tech SessionESRI Developer Summit 2008 Tech Session 3838
TestingTesting
•• Test on all supported platforms. Test on all supported platforms. •• Test on many configurationsTest on many configurations
–– Bare Operating SystemBare Operating System–– Operating System, Office and Visual StudioOperating System, Office and Visual Studio
•• Test InstallTest Install–– Test all launch conditionsTest all launch conditions
•• Dependency on ArcGIS Engine Runtime 9.3 Dependency on ArcGIS Engine Runtime 9.3 –– Diff the Installed files against source imageDiff the Installed files against source image–– Test shortcutsTest shortcuts
•• Test UninstallTest Uninstall–– Dll unregistration clean upDll unregistration clean up
ESRI Developer Summit 2008 Tech SessionESRI Developer Summit 2008 Tech Session 3939
ResourcesResources
•• Platform SDK DocumentationPlatform SDK Documentation–– http://www.microsoft.com/downloads/details.aspx?FamilyId=E15http://www.microsoft.com/downloads/details.aspx?FamilyId=E15
438AC438AC--60BE60BE--41BD41BD--AA14AA14--7F1E0F19CA0D&displaylang=en7F1E0F19CA0D&displaylang=en•• Appendix D of the DeveloperAppendix D of the Developer’’s Guides Guide
–– Installing ArcGIS Engine Runtime on Windows, Solaris and LinuxInstalling ArcGIS Engine Runtime on Windows, Solaris and Linux
•• EDN website (EDN website (http://edn.esri.comhttp://edn.esri.com))•• Software Deployment websitesSoftware Deployment websites
–– http://www.installsite.org/http://www.installsite.org/–– http://msdn.microsoft.com/newsgroups/default.aspx?dg=microshttp://msdn.microsoft.com/newsgroups/default.aspx?dg=micros
oft.public.platformsdk.msi&lang=en&cr=USoft.public.platformsdk.msi&lang=en&cr=US
ESRI Developer Summit 2008 Tech SessionESRI Developer Summit 2008 Tech Session 4040
Session Evaluations ReminderSession Evaluations Reminder
ESRI Developer Summit 2008 Tech SessionESRI Developer Summit 2008 Tech Session 4141
Session Attendees:Session Attendees:Please turn in your session evaluations.Please turn in your session evaluations.
. . . Thank you. . . Thank you
Please complete the session survey – we take your feedback very
seriously!