<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" version="2.0">
  <channel>
    <title>topic Re: Class extension for use with ArcGIS Server in ArcObjects SDK Questions</title>
    <link>https://community.esri.com/t5/arcobjects-sdk-questions/class-extension-for-use-with-arcgis-server/m-p/664574#M17829</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Yes, I'm using&amp;nbsp;&lt;SPAN style="background-color: #ffffff;"&gt;C:\Program Files\Common Files\ArcGIS\bin\ESRIRegAsm.exe&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;But still server does not see extension.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I checked also log on ArcGIS Server but I found the same message and also same REST null exception:&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;EM&gt;SEVERE Jun 20, 2017, 1:04:40 PM The containing process for 'System/PublishingTools' job 'jfc08016a32524d99906c9acb' has crashed. Server&lt;/EM&gt;&lt;BR /&gt;&lt;EM&gt;SEVERE Jun 20, 2017, 1:04:20 PM &lt;STRONG&gt;Unable to process request. null Rest&lt;/STRONG&gt;&lt;/EM&gt;&lt;BR /&gt;&lt;EM&gt;SEVERE Jun 20, 2017, 1:04:10 PM &lt;STRONG&gt;Unable to process request. null Rest&lt;/STRONG&gt;&lt;/EM&gt;&lt;BR /&gt;&lt;EM&gt;&lt;SPAN&gt;SEVERE Jun 20, 2017, 1:03:32 PM Instance of the service 'System/PublishingTools.GPServer' crashed. Please see if an error report was generated in 'C:\arcgisserver\logs\&amp;lt;machin_name&amp;gt;\errorreports'. To send an error report to Esri, compose an e-mail to &lt;/SPAN&gt;&lt;A class="jive-link-email-small" href="mailto:ArcGISErrorReport@esri.com"&gt;ArcGISErrorReport@esri.com&lt;/A&gt;&lt;SPAN&gt; and attach the error report file. System/PublishingTools.GPServer&lt;/SPAN&gt;&lt;/EM&gt;&lt;BR /&gt;&lt;EM&gt;SEVERE Jun 20, 2017, 1:02:53 PM&lt;STRONG&gt; Unable to process request. null Rest&lt;/STRONG&gt;&lt;/EM&gt;&lt;BR /&gt;&lt;EM&gt;SEVERE Jun 20, 2017, 1:00:57 PM The containing process for 'System/PublishingTools' job 'j0efe7e6f7cbc56ebdfb2318200' has crashed. Server&lt;/EM&gt;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Tue, 20 Jun 2017 15:06:46 GMT</pubDate>
    <dc:creator>Søren_BollOvergaard</dc:creator>
    <dc:date>2017-06-20T15:06:46Z</dc:date>
    <item>
      <title>Class extension for use with ArcGIS Server</title>
      <link>https://community.esri.com/t5/arcobjects-sdk-questions/class-extension-for-use-with-arcgis-server/m-p/664566#M17821</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;We've developed a class extension for ArcGIS Desktop (v10.2.1) for a client who now wants to use serve some of their data, which is registered with the class extension, using ArcGIS Server (v10.2.1). &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I've deployed the desktop class extension onto their development ArcGIS Server, which also has ArcGIS Desktop installed. The data is visible in ArcGIS Desktop, but when we publish this to server we are getting errors to do with the class extension along the lines of:&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;The Layer:'&amp;lt;layername&amp;gt;' in Map:'Layers' is invalid. The base table definition string "&amp;lt;tablename&amp;gt;" is invalid. Unable to create object class extension COM component [&amp;lt;tablename&amp;gt;].&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I've just done a quick search and it looks like this is due to ArcGIS Server being 64-bit and the class extension is designed and compiled for desktop, which is 32-bit. So it sounds like we need to produce a version of the class extension that is compiled against the 64-bit server assemblies. &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Is this all that is required? Has anyone else had to do this? What are the steps involved?&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Any help most appreciated.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Cheers&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;John&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Fri, 19 Jun 2015 13:44:01 GMT</pubDate>
      <guid>https://community.esri.com/t5/arcobjects-sdk-questions/class-extension-for-use-with-arcgis-server/m-p/664566#M17821</guid>
      <dc:creator>JohnFannon</dc:creator>
      <dc:date>2015-06-19T13:44:01Z</dc:date>
    </item>
    <item>
      <title>Re: Class extension for use with ArcGIS Server</title>
      <link>https://community.esri.com/t5/arcobjects-sdk-questions/class-extension-for-use-with-arcgis-server/m-p/664567#M17822</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi John,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I'll have to see if I can find the documentation that lists the steps, but it appears that you understand this properly. ArcGIS Server is now a 64 bit product and requires that custom COM components be compiled to 64-bit and registered to it via the 64 bit esriregasm (C:\Program Files\Common Files\ArcGIS\bin\ESRIRegAsm.exe).&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Tue, 23 Jun 2015 17:58:26 GMT</pubDate>
      <guid>https://community.esri.com/t5/arcobjects-sdk-questions/class-extension-for-use-with-arcgis-server/m-p/664567#M17822</guid>
      <dc:creator>FreddieGibson</dc:creator>
      <dc:date>2015-06-23T17:58:26Z</dc:date>
    </item>
    <item>
      <title>Re: Class extension for use with ArcGIS Server</title>
      <link>https://community.esri.com/t5/arcobjects-sdk-questions/class-extension-for-use-with-arcgis-server/m-p/664568#M17823</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;I've been working on this today and have got so far, but still struggling to get my class extension working with server. &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I've now set the platform target to x64, but references to Esri libraries all still look to be referring to the x86 version. The solution will compile, but gives me warnings like the below:&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;EM&gt;C:\Windows\Microsoft.NET\Framework\v4.0.30319\Microsoft.Common.targets(3912,5): warning : Type library exporter warning: Referenced type is defined in managed component, which is imported from a type library that could not be loaded because it was not registered (type: 'ESRI.ArcGIS.Geodatabase.IClassExtension'; component: 'C:\Windows\assembly\GAC_MSIL\ESRI.ArcGIS.Geodatabase\10.2.0.0__8fc3cc631e44ad86\ESRI.ArcGIS.Geodatabase.dll').&lt;/EM&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I've tried adding new references, but cannot see anything other than the x86 versions when I go to Add Reference &amp;gt; .Net tab.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Any ideas - surely someone has done this before??&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Thanks in advance, &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;John&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 09 Jul 2015 17:17:27 GMT</pubDate>
      <guid>https://community.esri.com/t5/arcobjects-sdk-questions/class-extension-for-use-with-arcgis-server/m-p/664568#M17823</guid>
      <dc:creator>JohnFannon</dc:creator>
      <dc:date>2015-07-09T17:17:27Z</dc:date>
    </item>
    <item>
      <title>Re: Class extension for use with ArcGIS Server</title>
      <link>https://community.esri.com/t5/arcobjects-sdk-questions/class-extension-for-use-with-arcgis-server/m-p/664569#M17824</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;After much experimentation I have now managed to get our class extension working with ArcGIS Server. &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;For anyone else that is attempting to convert a 32-bit class extension into a 64-bit one that is compatible with server, the steps I took were as follows: &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;OL style="list-style-type: decimal;"&gt;&lt;LI&gt;&lt;SPAN style="color: #1f497d;"&gt;Set the platform target for the project(s) to x64;&lt;/SPAN&gt;&lt;/LI&gt;&lt;LI&gt;&lt;SPAN style="color: #1f497d;"&gt;Changed the installer class (which invokes the ESRIRegAsm.exe to perform registration) to use “/p:Server” instead of “/p:Desktop”;&lt;/SPAN&gt;&lt;/LI&gt;&lt;LI&gt;&lt;SPAN style="color: #1f497d;"&gt;Set the TargetPlatform for the setup and deployment project to x64;&lt;/SPAN&gt;&lt;/LI&gt;&lt;LI&gt;&lt;SPAN style="color: #1f497d;"&gt;Build the solution;&lt;/SPAN&gt;&lt;/LI&gt;&lt;LI&gt;&lt;SPAN style="color: #1f497d;"&gt;Use Orca to force the msi to use the 64-bit InstallUtilLib.dll for the custom actions. &lt;/SPAN&gt;&lt;/LI&gt;&lt;/OL&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="color: #1f497d;"&gt;The final step was required because the resulting msi from the visual studio build would not install successfully and produced the following error:&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;EM style="color: #1f497d;"&gt;Error 1001: Exception occurred while initializing the installation: System.BadImageFormatException: Could not load file or assembly....&lt;/EM&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="color: #1f497d;"&gt;The following MSDN blog discussed this issue and how to work around it: &lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="color: #1f497d;"&gt;&lt;A href="http://blogs.msdn.com/b/heaths/archive/2006/02/01/64-bit-managed-custom-actions-with-visual-studio.aspx"&gt;http://blogs.msdn.com/b/heaths/archive/2006/02/01/64-bit-managed-custom-actions-with-visual-studio.aspx&lt;/A&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="color: #1f497d;"&gt;I followed the second set of steps, which are below and then the msi would successfully install and the class extension was correctly registered with server: &lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;OL style="color: #424242; font-family: 'Segoe UI', 'Lucida Grande', Verdana, Arial, Helvetica, sans-serif; font-size: 13px;"&gt;&lt;LI&gt;Open the resulting &lt;EM&gt;.msi&lt;/EM&gt; in Orca from the Windows Installer SDK&lt;/LI&gt;&lt;LI&gt;Select the Binary table&lt;/LI&gt;&lt;LI&gt;Click the Tables menu and then Add Row&lt;/LI&gt;&lt;LI&gt;Enter, for example, InstallUtil64 for the Name&lt;/LI&gt;&lt;LI&gt;Select the Data row and click the Browse button&lt;/LI&gt;&lt;LI&gt;Browse to &lt;EM&gt;%WINDIR%\Microsoft.NET\Framework64\v2.0.50727&lt;/EM&gt;&lt;/LI&gt;&lt;LI&gt;Select &lt;EM&gt;InstallUtilLib.dll&lt;/EM&gt;&lt;/LI&gt;&lt;LI&gt;Click the Open button&lt;/LI&gt;&lt;LI&gt;Click the OK button&lt;/LI&gt;&lt;LI&gt;Select the CustomAction table&lt;/LI&gt;&lt;LI&gt;For each custom action where the Source column is InstallUtil and only those custom actions that are 64-bit managed custom actions (or that were built with &lt;CODE&gt;/platform:anycpu&lt;/CODE&gt;, the default, where you want to run as 64-bit custom actions), change the value to, for example, InstallUtil64&lt;/LI&gt;&lt;/OL&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Fri, 07 Aug 2015 14:55:14 GMT</pubDate>
      <guid>https://community.esri.com/t5/arcobjects-sdk-questions/class-extension-for-use-with-arcgis-server/m-p/664569#M17824</guid>
      <dc:creator>JohnFannon</dc:creator>
      <dc:date>2015-08-07T14:55:14Z</dc:date>
    </item>
    <item>
      <title>Re: Class extension for use with ArcGIS Server</title>
      <link>https://community.esri.com/t5/arcobjects-sdk-questions/class-extension-for-use-with-arcgis-server/m-p/664570#M17825</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;I have very similar problem.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I want to make trigger on geometry change which make some custom action.&lt;/P&gt;&lt;P&gt;I created class extension and it's working when I want to deploy it on ArcGIS Desktop, but when I want to publish this on ArcGIS Server it give me:&lt;BR /&gt;&lt;STRONG&gt;Warning when publishing&lt;/STRONG&gt;: &lt;EM&gt;20019: Layer is being published with custom class extension&lt;/EM&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;Error on ArcMap&lt;/STRONG&gt;:&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;IMG class="image-1 jive-image" src="https://community.esri.com/legacyfs/online/357777_pastedImage_1.png" style="width: auto; height: auto;" /&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;Error on Server logs&lt;/STRONG&gt;: &lt;BR /&gt;&lt;EM&gt;&lt;SPAN&gt;&amp;lt;Msg time="2017-06-19T20:43:43,941" type="SEVERE" code="8252" source="System/PublishingTools.GPServer" process="4452" thread="228" methodName="" machine="machine_name" user="" elapsed=""&amp;gt;Instance of the service 'System/PublishingTools.GPServer' crashed. Please see if an error report was generated in 'C:\arcgisserver\logs\&amp;lt;mashine_name&amp;gt;\errorreports'. To send an error report to Esri, compose an e-mail to &lt;/SPAN&gt;&lt;A class="jive-link-email-small" href="mailto:ArcGISErrorReport@esri.com"&gt;ArcGISErrorReport@esri.com&lt;/A&gt;&lt;SPAN&gt; and attach the error report file.&amp;lt;/Msg&amp;gt;&lt;/SPAN&gt;&lt;/EM&gt;&lt;BR /&gt;&lt;EM&gt;&amp;lt;Msg time="2017-06-19T20:44:51,948" type="SEVERE" code="8254" source="Server" process="4452" thread="1" methodName="" machine="machine_name" user="" elapsed=""&amp;gt;The containing process for 'System/PublishingTools' job 'jba127676c8764dd0acf4d8a54' has crashed.&amp;lt;/Msg&amp;gt;&lt;/EM&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;No raport in pointed location.&lt;/P&gt;&lt;P&gt;&lt;BR /&gt;I tried to to solve this in described way but after register dll with&amp;nbsp;&lt;SPAN style="color: #1f497d; background-color: #ffffff;"&gt;ESRIRegAsm.exe&lt;/SPAN&gt;&amp;nbsp;with server option I'm still get the error like no server registration was made.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I have no more ideas how to solve this.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Mon, 19 Jun 2017 21:08:19 GMT</pubDate>
      <guid>https://community.esri.com/t5/arcobjects-sdk-questions/class-extension-for-use-with-arcgis-server/m-p/664570#M17825</guid>
      <dc:creator>Søren_BollOvergaard</dc:creator>
      <dc:date>2017-06-19T21:08:19Z</dc:date>
    </item>
    <item>
      <title>Re: Class extension for use with ArcGIS Server</title>
      <link>https://community.esri.com/t5/arcobjects-sdk-questions/class-extension-for-use-with-arcgis-server/m-p/664571#M17826</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi Soren&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;It sounds like your class extension is built against the 32-bit assemblies, which explains why it works with desktop but not server. Server is looking for a class extension that is 64-bit and cannot find one. You need to create a separate solution for the server version and build this on a machine where ArcGIS Server is installed? This is required to build against the 64-bit Esri assemblies.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;You also need to follow all the other steps above, including setting the platform target to 64-bit for each project and for the setup and deployment project and changing the installer class (InstallerClass.cs) code to use the "/p:server" flag when installing/uninstalling.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Here is the installer class for our class extension:&lt;/P&gt;&lt;PRE class="lia-code-sample line-numbers language-none"&gt;&lt;CODE&gt;&lt;SPAN class="keyword token"&gt;using&lt;/SPAN&gt; System&lt;SPAN class="punctuation token"&gt;;&lt;/SPAN&gt;
&lt;SPAN class="keyword token"&gt;using&lt;/SPAN&gt; System&lt;SPAN class="punctuation token"&gt;.&lt;/SPAN&gt;Collections&lt;SPAN class="punctuation token"&gt;;&lt;/SPAN&gt;
&lt;SPAN class="keyword token"&gt;using&lt;/SPAN&gt; System&lt;SPAN class="punctuation token"&gt;.&lt;/SPAN&gt;Collections&lt;SPAN class="punctuation token"&gt;.&lt;/SPAN&gt;Generic&lt;SPAN class="punctuation token"&gt;;&lt;/SPAN&gt;
&lt;SPAN class="keyword token"&gt;using&lt;/SPAN&gt; System&lt;SPAN class="punctuation token"&gt;.&lt;/SPAN&gt;ComponentModel&lt;SPAN class="punctuation token"&gt;;&lt;/SPAN&gt;
&lt;SPAN class="keyword token"&gt;using&lt;/SPAN&gt; System&lt;SPAN class="punctuation token"&gt;.&lt;/SPAN&gt;Configuration&lt;SPAN class="punctuation token"&gt;.&lt;/SPAN&gt;Install&lt;SPAN class="punctuation token"&gt;;&lt;/SPAN&gt;
&lt;SPAN class="keyword token"&gt;using&lt;/SPAN&gt; System&lt;SPAN class="punctuation token"&gt;.&lt;/SPAN&gt;Linq&lt;SPAN class="punctuation token"&gt;;&lt;/SPAN&gt;
&lt;SPAN class="keyword token"&gt;using&lt;/SPAN&gt; System&lt;SPAN class="punctuation token"&gt;.&lt;/SPAN&gt;Diagnostics&lt;SPAN class="punctuation token"&gt;;&lt;/SPAN&gt;

&lt;SPAN class="keyword token"&gt;namespace&lt;/SPAN&gt; InvokeESRIRegASM
&lt;SPAN class="punctuation token"&gt;{&lt;/SPAN&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN class="punctuation token"&gt;[&lt;/SPAN&gt;&lt;SPAN class="token function"&gt;RunInstaller&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;&lt;SPAN class="keyword token"&gt;true&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;]&lt;/SPAN&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN class="keyword token"&gt;public&lt;/SPAN&gt; &lt;SPAN class="keyword token"&gt;partial&lt;/SPAN&gt; &lt;SPAN class="keyword token"&gt;class&lt;/SPAN&gt; &lt;SPAN class="token class-name"&gt;InstallerClass&lt;/SPAN&gt; &lt;SPAN class="punctuation token"&gt;:&lt;/SPAN&gt; System&lt;SPAN class="punctuation token"&gt;.&lt;/SPAN&gt;Configuration&lt;SPAN class="punctuation token"&gt;.&lt;/SPAN&gt;Install&lt;SPAN class="punctuation token"&gt;.&lt;/SPAN&gt;Installer
&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN class="punctuation token"&gt;{&lt;/SPAN&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN class="keyword token"&gt;public&lt;/SPAN&gt; &lt;SPAN class="token function"&gt;InstallerClass&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN class="punctuation token"&gt;{&lt;/SPAN&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN class="token function"&gt;InitializeComponent&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;;&lt;/SPAN&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN class="punctuation token"&gt;}&lt;/SPAN&gt;

&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN class="keyword token"&gt;public&lt;/SPAN&gt; &lt;SPAN class="keyword token"&gt;override&lt;/SPAN&gt; &lt;SPAN class="keyword token"&gt;void&lt;/SPAN&gt; &lt;SPAN class="token function"&gt;Install&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;System&lt;SPAN class="punctuation token"&gt;.&lt;/SPAN&gt;Collections&lt;SPAN class="punctuation token"&gt;.&lt;/SPAN&gt;IDictionary stateSaver&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN class="punctuation token"&gt;{&lt;/SPAN&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN class="keyword token"&gt;base&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;.&lt;/SPAN&gt;&lt;SPAN class="token function"&gt;Install&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;stateSaver&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;;&lt;/SPAN&gt;

&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN class="comment token"&gt;//Register the custom component.&lt;/SPAN&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN class="comment token"&gt;//-----------------------------&lt;/SPAN&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN class="comment token"&gt;//The default location of the ESRIRegAsm utility.&lt;/SPAN&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN class="comment token"&gt;//Note how the whole string is embedded in quotes because of the spaces in the path.&lt;/SPAN&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN class="keyword token"&gt;string&lt;/SPAN&gt; cmd1 &lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt; &lt;SPAN class="string token"&gt;"\""&lt;/SPAN&gt; &lt;SPAN class="operator token"&gt;+&lt;/SPAN&gt; Environment&lt;SPAN class="punctuation token"&gt;.&lt;/SPAN&gt;&lt;SPAN class="token function"&gt;GetFolderPath&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;Environment&lt;SPAN class="punctuation token"&gt;.&lt;/SPAN&gt;SpecialFolder&lt;SPAN class="punctuation token"&gt;.&lt;/SPAN&gt;CommonProgramFiles&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt; &lt;SPAN class="operator token"&gt;+&lt;/SPAN&gt; &lt;SPAN class="string token"&gt;"\\ArcGIS\\bin\\ESRIRegAsm.exe"&lt;/SPAN&gt; &lt;SPAN class="operator token"&gt;+&lt;/SPAN&gt; &lt;SPAN class="string token"&gt;"\""&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;;&lt;/SPAN&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN class="comment token"&gt;//Obtain the input argument (via the CustomActionData Property) in the setup project.&lt;/SPAN&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN class="comment token"&gt;//An example CustomActionData property that is passed through might be something like:&lt;/SPAN&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN class="comment token"&gt;// /arg1="[ProgramFilesFolder]\[ProductName]\bin\ArcMapClassLibrary_Implements.dll",&lt;/SPAN&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN class="comment token"&gt;//which translates to the following on a default install:&lt;/SPAN&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN class="comment token"&gt;//C:\Program Files\MyGISApp\bin\ArcMapClassLibrary_Implements.dll.&lt;/SPAN&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN class="keyword token"&gt;string&lt;/SPAN&gt; part1 &lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt; &lt;SPAN class="keyword token"&gt;this&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;.&lt;/SPAN&gt;Context&lt;SPAN class="punctuation token"&gt;.&lt;/SPAN&gt;Parameters&lt;SPAN class="punctuation token"&gt;[&lt;/SPAN&gt;&lt;SPAN class="string token"&gt;"arg1"&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;]&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;;&lt;/SPAN&gt;

&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN class="comment token"&gt;//Add the appropriate command line switches when invoking the ESRIRegAsm utility.&lt;/SPAN&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN class="comment token"&gt;//In this case: /p:Desktop = means the ArcGIS Desktop product, /s = means a silent install.&lt;/SPAN&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN class="keyword token"&gt;string&lt;/SPAN&gt; part2 &lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt; &lt;SPAN class="string token"&gt;" /p:Server /s"&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;;&lt;/SPAN&gt;

&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN class="comment token"&gt;//It is important to embed the part1 in quotes in case there are any spaces in the path.&lt;/SPAN&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN class="keyword token"&gt;string&lt;/SPAN&gt; cmd2 &lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt; &lt;SPAN class="string token"&gt;"\""&lt;/SPAN&gt; &lt;SPAN class="operator token"&gt;+&lt;/SPAN&gt; part1 &lt;SPAN class="operator token"&gt;+&lt;/SPAN&gt; &lt;SPAN class="string token"&gt;"\""&lt;/SPAN&gt; &lt;SPAN class="operator token"&gt;+&lt;/SPAN&gt; part2&lt;SPAN class="punctuation token"&gt;;&lt;/SPAN&gt;

&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN class="comment token"&gt;//Call the routing that will execute the ESRIRegAsm utility.&lt;/SPAN&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN class="keyword token"&gt;int&lt;/SPAN&gt; exitCode &lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt; &lt;SPAN class="token function"&gt;ExecuteCommand&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;cmd1&lt;SPAN class="punctuation token"&gt;,&lt;/SPAN&gt; cmd2&lt;SPAN class="punctuation token"&gt;,&lt;/SPAN&gt; &lt;SPAN class="number token"&gt;10000&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;;&lt;/SPAN&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN class="punctuation token"&gt;}&lt;/SPAN&gt;

&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN class="keyword token"&gt;public&lt;/SPAN&gt; &lt;SPAN class="keyword token"&gt;override&lt;/SPAN&gt; &lt;SPAN class="keyword token"&gt;void&lt;/SPAN&gt; &lt;SPAN class="token function"&gt;Uninstall&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;System&lt;SPAN class="punctuation token"&gt;.&lt;/SPAN&gt;Collections&lt;SPAN class="punctuation token"&gt;.&lt;/SPAN&gt;IDictionary savedState&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN class="punctuation token"&gt;{&lt;/SPAN&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN class="keyword token"&gt;base&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;.&lt;/SPAN&gt;&lt;SPAN class="token function"&gt;Uninstall&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;savedState&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;;&lt;/SPAN&gt;

&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN class="comment token"&gt;//Unregister the custom component.&lt;/SPAN&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN class="comment token"&gt;//-----------------------------&lt;/SPAN&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN class="comment token"&gt;//The default location of the ESRIRegAsm utility.&lt;/SPAN&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN class="comment token"&gt;//Note how the whole string is embedded in quotes because of the spaces in the path.&lt;/SPAN&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN class="keyword token"&gt;string&lt;/SPAN&gt; cmd1 &lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt; &lt;SPAN class="string token"&gt;"\""&lt;/SPAN&gt; &lt;SPAN class="operator token"&gt;+&lt;/SPAN&gt; Environment&lt;SPAN class="punctuation token"&gt;.&lt;/SPAN&gt;&lt;SPAN class="token function"&gt;GetFolderPath&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;Environment&lt;SPAN class="punctuation token"&gt;.&lt;/SPAN&gt;SpecialFolder&lt;SPAN class="punctuation token"&gt;.&lt;/SPAN&gt;CommonProgramFiles&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt; &lt;SPAN class="operator token"&gt;+&lt;/SPAN&gt; &lt;SPAN class="string token"&gt;"\\ArcGIS\\bin\\ESRIRegAsm.exe"&lt;/SPAN&gt; &lt;SPAN class="operator token"&gt;+&lt;/SPAN&gt; &lt;SPAN class="string token"&gt;"\""&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;;&lt;/SPAN&gt;

&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN class="comment token"&gt;//Obtain the input argument (via the CustomActionData Property) in the setup project.&lt;/SPAN&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN class="comment token"&gt;//An example CustomActionData property that is passed through might be something like:&lt;/SPAN&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN class="comment token"&gt;// /arg1="[ProgramFilesFolder]\[ProductName]\bin\ArcMapClassLibrary_Implements.dll",&lt;/SPAN&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN class="comment token"&gt;//which translate to the following on a default install:&lt;/SPAN&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN class="comment token"&gt;//C:\Program Files\MyGISApp\bin\ArcMapClassLibrary_Implements.dll.&lt;/SPAN&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN class="keyword token"&gt;string&lt;/SPAN&gt; part1 &lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt; &lt;SPAN class="keyword token"&gt;this&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;.&lt;/SPAN&gt;Context&lt;SPAN class="punctuation token"&gt;.&lt;/SPAN&gt;Parameters&lt;SPAN class="punctuation token"&gt;[&lt;/SPAN&gt;&lt;SPAN class="string token"&gt;"arg1"&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;]&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;;&lt;/SPAN&gt;

&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN class="comment token"&gt;//Add the appropriate command line switches when invoking the ESRIRegAsm utility.&lt;/SPAN&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN class="comment token"&gt;//In this case: /p:Desktop = means the ArcGIS Desktop product, /u = means unregister the Custom Component, /s = means a silent install.&lt;/SPAN&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN class="keyword token"&gt;string&lt;/SPAN&gt; part2 &lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt; &lt;SPAN class="string token"&gt;" /p:Server /u /s"&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;;&lt;/SPAN&gt;

&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN class="comment token"&gt;//It is important to embed the part1 in quotes in case there are any spaces in the path.&lt;/SPAN&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN class="keyword token"&gt;string&lt;/SPAN&gt; cmd2 &lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt; &lt;SPAN class="string token"&gt;"\""&lt;/SPAN&gt; &lt;SPAN class="operator token"&gt;+&lt;/SPAN&gt; part1 &lt;SPAN class="operator token"&gt;+&lt;/SPAN&gt; &lt;SPAN class="string token"&gt;"\""&lt;/SPAN&gt; &lt;SPAN class="operator token"&gt;+&lt;/SPAN&gt; part2&lt;SPAN class="punctuation token"&gt;;&lt;/SPAN&gt;

&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN class="comment token"&gt;//Call the routing that will execute the ESRIRegAsm utility.&lt;/SPAN&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN class="keyword token"&gt;int&lt;/SPAN&gt; exitCode &lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt; &lt;SPAN class="token function"&gt;ExecuteCommand&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;cmd1&lt;SPAN class="punctuation token"&gt;,&lt;/SPAN&gt; cmd2&lt;SPAN class="punctuation token"&gt;,&lt;/SPAN&gt; &lt;SPAN class="number token"&gt;10000&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;;&lt;/SPAN&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN class="punctuation token"&gt;}&lt;/SPAN&gt;

&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN class="keyword token"&gt;public&lt;/SPAN&gt; &lt;SPAN class="keyword token"&gt;static&lt;/SPAN&gt; &lt;SPAN class="keyword token"&gt;int&lt;/SPAN&gt; &lt;SPAN class="token function"&gt;ExecuteCommand&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;&lt;SPAN class="keyword token"&gt;string&lt;/SPAN&gt; Command1&lt;SPAN class="punctuation token"&gt;,&lt;/SPAN&gt; &lt;SPAN class="keyword token"&gt;string&lt;/SPAN&gt; Command2&lt;SPAN class="punctuation token"&gt;,&lt;/SPAN&gt; &lt;SPAN class="keyword token"&gt;int&lt;/SPAN&gt; Timeout&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN class="punctuation token"&gt;{&lt;/SPAN&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN class="comment token"&gt;//Set up a ProcessStartInfo using your path to the executable (Command1) and the command line arguments (Command2).&lt;/SPAN&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ProcessStartInfo ProcessInfo &lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt; &lt;SPAN class="keyword token"&gt;new&lt;/SPAN&gt; &lt;SPAN class="token class-name"&gt;ProcessStartInfo&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;Command1&lt;SPAN class="punctuation token"&gt;,&lt;/SPAN&gt; Command2&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;;&lt;/SPAN&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ProcessInfo&lt;SPAN class="punctuation token"&gt;.&lt;/SPAN&gt;CreateNoWindow &lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt; &lt;SPAN class="keyword token"&gt;true&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;;&lt;/SPAN&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ProcessInfo&lt;SPAN class="punctuation token"&gt;.&lt;/SPAN&gt;UseShellExecute &lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt; &lt;SPAN class="keyword token"&gt;false&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;;&lt;/SPAN&gt;

&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN class="comment token"&gt;//Invoke the process.&lt;/SPAN&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Process Process &lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt; Process&lt;SPAN class="punctuation token"&gt;.&lt;/SPAN&gt;&lt;SPAN class="token function"&gt;Start&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;ProcessInfo&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;;&lt;/SPAN&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Process&lt;SPAN class="punctuation token"&gt;.&lt;/SPAN&gt;&lt;SPAN class="token function"&gt;WaitForExit&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;Timeout&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;;&lt;/SPAN&gt;

&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN class="comment token"&gt;//Finish.&lt;/SPAN&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN class="keyword token"&gt;int&lt;/SPAN&gt; ExitCode &lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt; Process&lt;SPAN class="punctuation token"&gt;.&lt;/SPAN&gt;ExitCode&lt;SPAN class="punctuation token"&gt;;&lt;/SPAN&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Process&lt;SPAN class="punctuation token"&gt;.&lt;/SPAN&gt;&lt;SPAN class="token function"&gt;Close&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;;&lt;/SPAN&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN class="keyword token"&gt;return&lt;/SPAN&gt; ExitCode&lt;SPAN class="punctuation token"&gt;;&lt;/SPAN&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN class="punctuation token"&gt;}&lt;/SPAN&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN class="punctuation token"&gt;}&lt;/SPAN&gt;
&lt;SPAN class="punctuation token"&gt;}&lt;/SPAN&gt;
&lt;SPAN class="line-numbers-rows"&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/CODE&gt;&lt;/PRE&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Once you've made these changes, you then need to build the solution and modify the resulting msi using Orca as described above to ensure that custom actions run using the 64-bit install utility (InstallUtil64).&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Note that the steps I described work for 10.2.1 and I have not tried building with later versions, but assume the process is similar.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Regards&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;John&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Sun, 12 Dec 2021 04:05:24 GMT</pubDate>
      <guid>https://community.esri.com/t5/arcobjects-sdk-questions/class-extension-for-use-with-arcgis-server/m-p/664571#M17826</guid>
      <dc:creator>JohnFannon</dc:creator>
      <dc:date>2021-12-12T04:05:24Z</dc:date>
    </item>
    <item>
      <title>Re: Class extension for use with ArcGIS Server</title>
      <link>https://community.esri.com/t5/arcobjects-sdk-questions/class-extension-for-use-with-arcgis-server/m-p/664572#M17827</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi John,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Thank you so much for helping.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;So what have I done today:&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;1) I created separate solution with Visual Studio.&lt;BR /&gt;2) I built it on Server machine with selected Platform Target for x64&lt;BR /&gt;3) I register generated dll file with command: &amp;gt; .\ESRIRegAsm.exe "C:\proj\ClassExtension - x64\bin\Debug64\Extension.dll" /e /p:server /v:10.5 /w:"C:\proj\ClassExtension - x64\bin"&lt;BR /&gt;4) I change the name/zip and put ecfg file to C:\Program Files\ArcGIS\Server\bin\Configuration\CATID&lt;/P&gt;&lt;P&gt;(like in this thread: &lt;A _jive_internal="true" href="https://community.esri.com/thread/66705)"&gt;https://community.esri.com/thread/66705&lt;/A&gt;&amp;nbsp;)&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Still doesn't working.&lt;/P&gt;&lt;P&gt;But I don't have msi (only dll) file generated in my project so I didn't modify the resulting msi using Orca.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Tue, 20 Jun 2017 14:08:15 GMT</pubDate>
      <guid>https://community.esri.com/t5/arcobjects-sdk-questions/class-extension-for-use-with-arcgis-server/m-p/664572#M17827</guid>
      <dc:creator>Søren_BollOvergaard</dc:creator>
      <dc:date>2017-06-20T14:08:15Z</dc:date>
    </item>
    <item>
      <title>Re: Class extension for use with ArcGIS Server</title>
      <link>https://community.esri.com/t5/arcobjects-sdk-questions/class-extension-for-use-with-arcgis-server/m-p/664573#M17828</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Are you using the correct 64-bit version of ESRIRegAsm?&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;This should be at:&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;C:\Program Files\Common Files\ArcGIS\bin\ESRIRegAsm.exe&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I'm not sure your step 4 is necessary as my installer class does not do anything with the ecfg file, it just executes the 64-bit EsriRegAsm. &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;If you aren't installing using an MSI you can ignore the steps to edit the MSI with Orca.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Tue, 20 Jun 2017 14:47:08 GMT</pubDate>
      <guid>https://community.esri.com/t5/arcobjects-sdk-questions/class-extension-for-use-with-arcgis-server/m-p/664573#M17828</guid>
      <dc:creator>JohnFannon</dc:creator>
      <dc:date>2017-06-20T14:47:08Z</dc:date>
    </item>
    <item>
      <title>Re: Class extension for use with ArcGIS Server</title>
      <link>https://community.esri.com/t5/arcobjects-sdk-questions/class-extension-for-use-with-arcgis-server/m-p/664574#M17829</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Yes, I'm using&amp;nbsp;&lt;SPAN style="background-color: #ffffff;"&gt;C:\Program Files\Common Files\ArcGIS\bin\ESRIRegAsm.exe&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;But still server does not see extension.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I checked also log on ArcGIS Server but I found the same message and also same REST null exception:&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;EM&gt;SEVERE Jun 20, 2017, 1:04:40 PM The containing process for 'System/PublishingTools' job 'jfc08016a32524d99906c9acb' has crashed. Server&lt;/EM&gt;&lt;BR /&gt;&lt;EM&gt;SEVERE Jun 20, 2017, 1:04:20 PM &lt;STRONG&gt;Unable to process request. null Rest&lt;/STRONG&gt;&lt;/EM&gt;&lt;BR /&gt;&lt;EM&gt;SEVERE Jun 20, 2017, 1:04:10 PM &lt;STRONG&gt;Unable to process request. null Rest&lt;/STRONG&gt;&lt;/EM&gt;&lt;BR /&gt;&lt;EM&gt;&lt;SPAN&gt;SEVERE Jun 20, 2017, 1:03:32 PM Instance of the service 'System/PublishingTools.GPServer' crashed. Please see if an error report was generated in 'C:\arcgisserver\logs\&amp;lt;machin_name&amp;gt;\errorreports'. To send an error report to Esri, compose an e-mail to &lt;/SPAN&gt;&lt;A class="jive-link-email-small" href="mailto:ArcGISErrorReport@esri.com"&gt;ArcGISErrorReport@esri.com&lt;/A&gt;&lt;SPAN&gt; and attach the error report file. System/PublishingTools.GPServer&lt;/SPAN&gt;&lt;/EM&gt;&lt;BR /&gt;&lt;EM&gt;SEVERE Jun 20, 2017, 1:02:53 PM&lt;STRONG&gt; Unable to process request. null Rest&lt;/STRONG&gt;&lt;/EM&gt;&lt;BR /&gt;&lt;EM&gt;SEVERE Jun 20, 2017, 1:00:57 PM The containing process for 'System/PublishingTools' job 'j0efe7e6f7cbc56ebdfb2318200' has crashed. Server&lt;/EM&gt;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Tue, 20 Jun 2017 15:06:46 GMT</pubDate>
      <guid>https://community.esri.com/t5/arcobjects-sdk-questions/class-extension-for-use-with-arcgis-server/m-p/664574#M17829</guid>
      <dc:creator>Søren_BollOvergaard</dc:creator>
      <dc:date>2017-06-20T15:06:46Z</dc:date>
    </item>
  </channel>
</rss>

