<?xml version="1.0" encoding="utf-8"?>
<rss xmlns:atom="https://www.w3.org/2005/Atom" xmlns:sy="https://purl.org/rss/1.0/modules/syndication/" xmlns:dc="https://purl.org/dc/elements/1.1/" xmlns:content="https://purl.org/rss/1.0/modules/content/" xmlns:wfw="https://wellformedweb.org/CommentAPI/" xmlns:slash="https://purl.org/rss/1.0/modules/slash/"
  version="2.0">
  <channel>
    <title>Grzegorz's Blog</title>
    <atom:link
      href="https://docs.microsoft.com/archive/blogs/g/feed.xml"
      rel="self"
      type="application/rss+xml" />
    <link>https://docs.microsoft.com/archive/blogs/g/feed.xml</link>
    <description />
    <lastBuildDate>Wed, 17 Apr 2019 03:21:49 GMT</lastBuildDate>
    <language>en-US</language>
    <sy:updatePeriod>hourly</sy:updatePeriod>
    <sy:updateFrequency>1</sy:updateFrequency>
    <item>
      <title>Windows Azure Diagnostics and log files that are kept open, such as Tomcat logs</title>
      <link>https://docs.microsoft.com/archive/blogs/g/windows-azure-diagnostics-and-log-files-that-are-kept-open-such-as-tomcat-logs</link>
      <pubDate>Thu, 29 Apr 2010 13:38:00 GMT</pubDate>
      <dc:creator><![CDATA[Grzegorz Florek]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/g/2010/04/29/windows-azure-diagnostics-and-log-files-that-are-kept-open-such-as-tomcat-logs/</guid>
      <description><![CDATA[When transferring custom log files, Windows Azure Diagnostics runtime currently seems to require...]]></description>
      <content:encoded><![CDATA[<P>When transferring custom log files, Windows Azure Diagnostics runtime currently seems to require exclusive locks to the files being transferred. As the result, it doesn't work with log files that are kept open (in shared access mode), such as in case of Tomcat logs.<BR><BR>I developed a simple solution for this scenario. The programing model has been designed to be easily pluggable into existing diagnostic configuration code and also to be easily removed when Windows Azure Diagnostics runtime starts supporting log files that are kept open.</P>
<P>You can find it <A title="Windows Azure Diagnostics and log files that are kept open, such as Tomcat logs" href="https://code.msdn.microsoft.com/azurediag" mce_href="https://code.msdn.microsoft.com/azurediag">here</A><BR></P>]]></content:encoded>
    </item>
    <item>
      <title>Windows Azure Dynamic Scaling Sample</title>
      <link>https://docs.microsoft.com/archive/blogs/g/windows-azure-dynamic-scaling-sample</link>
      <pubDate>Tue, 13 Apr 2010 10:52:00 GMT</pubDate>
      <dc:creator><![CDATA[Grzegorz Florek]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/g/2010/04/13/windows-azure-dynamic-scaling-sample/</guid>
      <description><![CDATA[Many global software vendors we work with have been interested in leveraging the power of Windows...]]></description>
      <content:encoded><![CDATA[<P style="MARGIN: 0in 0in 0pt" class=MsoNormal><FONT size=3 face="Times New Roman">Many global software vendors we work with have been interested in leveraging the power of Windows Azure to dynamically scale their cloud solutions. Trent Swanson and I led the effort to architect and develop a sample to help these software vendors in creating dynamically scalable solutions running on Windows Azure. The source code and accompanying whitepaper has been published on MSDN Code Gallery <A title="Windows Azure Dynamic Scaling Sample" href="https://code.msdn.microsoft.com/azurescale" target=_blank mce_href="https://code.msdn.microsoft.com/azurescale">here</A>.</FONT></P>]]></content:encoded>
    </item>
    <item>
      <title>Starter Kit for deploying Tomcat-based Java solutions on Windows Azure</title>
      <link>https://docs.microsoft.com/archive/blogs/g/starter-kit-for-deploying-tomcat-based-java-solutions-on-windows-azure</link>
      <pubDate>Mon, 29 Mar 2010 13:50:00 GMT</pubDate>
      <dc:creator><![CDATA[Grzegorz Florek]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/g/2010/03/29/starter-kit-for-deploying-tomcat-based-java-solutions-on-windows-azure/</guid>
      <description><![CDATA[When working on migration of real-life Tomcat Java application to Windows Azure, the original...]]></description>
      <content:encoded><![CDATA[<P>When working on migration of real-life Tomcat Java application to Windows Azure, the original Solution Accelerator (version from November 2009) was helpful in getting the migration project off the ground. However, some design choices and implementation of the original Solution Accelerator left a lot of room for improvements and optimization. <BR><BR>In particular, the requirement of deploying huge packages that consisted of JRE and Tomcat binaries as well as the actual Tomcat application (war file and often by accident also extracted java class files) was almost a showstopper, especially when the application was actively being developed and changed, so there was a need for frequent re-packaging and re-deployment.</P>
<P>I worked on addressing these problems and the result is publised on MSDN Code Gallery <A title="Starter Kit for deploying Tomcat-based Java solutions on Windows Azure " href="https://code.msdn.microsoft.com/azuretomcat" mce_href="https://code.msdn.microsoft.com/azuretomcat">here</A>. <BR><BR><BR><BR></P>]]></content:encoded>
    </item>
    <item>
      <title>Project Riviera - a Windows Azure Platform sample published on MSDN Code Gallery</title>
      <link>https://docs.microsoft.com/archive/blogs/g/project-riviera-a-windows-azure-platform-sample-published-on-msdn-code-gallery</link>
      <pubDate>Tue, 18 Aug 2009 15:15:00 GMT</pubDate>
      <dc:creator><![CDATA[Grzegorz Florek]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/g/2009/08/18/project-riviera-a-windows-azure-platform-sample-published-on-msdn-code-gallery/</guid>
      <description><![CDATA[Bhushan Nene, Trent Swanson and I have worked on project Riviera - a comprehensive code sample to...]]></description>
      <content:encoded><![CDATA[<P style="MARGIN: 0in 0in 10pt" class=MsoNormal><SPAN style="LINE-HEIGHT: 115%; FONT-SIZE: 12pt; mso-bidi-font-family: Calibri; mso-bidi-theme-font: minor-latin"><FONT face=Calibri>Bhushan Nene, Trent Swanson and I have worked on project <B>Riviera</B> - a comprehensive code sample to demonstrate how to develop multi-tenant highly-scalable line-of-business applications on Windows Azure Platform. We have released the source code on </FONT><A href="https://code.msdn.microsoft.com/riviera" mce_href="https://code.msdn.microsoft.com/riviera"><FONT face=Calibri>MSDN Code Gallery</FONT></A><FONT face=Calibri>.&nbsp;You can also find links to screencast there. We still plan to refactor and clean the code. Riviera uses Customer Loyalty Management scenario for illustration purposes, however many building blocks are applicable to a broad range of line-of-business applications. </FONT></SPAN></P>
<P style="MARGIN: 0in 0in 10pt" class=MsoNormal><SPAN style="LINE-HEIGHT: 115%; FONT-SIZE: 12pt; mso-bidi-font-family: Calibri; mso-bidi-theme-font: minor-latin"><FONT face=Calibri></FONT></SPAN>&nbsp;</P>
<P style="MARGIN: 0in 0in 10pt" class=MsoNormal><SPAN style="LINE-HEIGHT: 115%; FONT-SIZE: 12pt; mso-bidi-font-family: Calibri; mso-bidi-theme-font: minor-latin"><FONT face=Calibri>Grzegorz Gogolowicz</FONT></SPAN></P>
<P style="MARGIN: 0in 0in 10pt" class=MsoNormal><SPAN style="LINE-HEIGHT: 115%; FONT-SIZE: 12pt; mso-bidi-font-family: Calibri; mso-bidi-theme-font: minor-latin"><FONT face=Calibri>Senior Solutions Architect, Microsoft</FONT></SPAN></P>]]></content:encoded>
    </item>
    <item>
      <title>Using SQL Server Reporting Services to generate reports that overlay data on form images</title>
      <link>https://docs.microsoft.com/archive/blogs/g/using-sql-server-reporting-services-to-generate-reports-that-overlay-data-on-form-images</link>
      <pubDate>Thu, 11 Jun 2009 12:54:00 GMT</pubDate>
      <dc:creator><![CDATA[Grzegorz Florek]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/g/2009/06/11/using-sql-server-reporting-services-to-generate-reports-that-overlay-data-on-form-images/</guid>
      <description><![CDATA[Trent Swanson and I recently published a whitepaper on using SQL Server Reporting Services to...]]></description>
      <content:encoded><![CDATA[<FONT color=#0066cc>
<P style="MARGIN: 0in 0in 10pt" class=MsoNormal><FONT color=#000000 size=3 face=Calibri>Trent Swanson and I recently published a whitepaper on using SQL Server Reporting Services to generate reports that overlay data on form images. You can read it </FONT><A title="SQL Server Reporting Services and Working with Overlay Data" href="https://www.infoq.com/articles/Gogolowicz-Swanson-SSRS" target=_blank mce_href="https://www.infoq.com/articles/Gogolowicz-Swanson-SSRS"><FONT size=3 face=Calibri>here</FONT></A><FONT color=#000000 size=3 face=Calibri>. The sample is published on MSDN Code Gallery </FONT><A title="SSRS solution to generate reports that overlay data on form images " href="https://code.msdn.microsoft.com/SSRSImageOverlay" target=_blank mce_href="https://code.msdn.microsoft.com/SSRSImageOverlay"><FONT size=3 face=Calibri>here</FONT></A><FONT color=#000000 size=3 face=Calibri>.</FONT></P>
<P style="MARGIN: 0in 0in 10pt" class=MsoNormal><IMG style="WIDTH: 311px; HEIGHT: 230px" title="Generating reports that look like official forms, such as tax forms " alt="Generating reports that look like official forms, such as tax forms " src="https://code.msdn.microsoft.com/Project/Download/FileDownload.aspx?ProjectName=SSRSImageOverlay&amp;DownloadId=4542" width=311 height=230 mce_src="https://code.msdn.microsoft.com/Project/Download/FileDownload.aspx?ProjectName=SSRSImageOverlay&amp;DownloadId=4542"></P></FONT>]]></content:encoded>
    </item>
    <item>
      <title>Column Level Security in SharePoint</title>
      <link>https://docs.microsoft.com/archive/blogs/g/column-level-security-in-sharepoint</link>
      <pubDate>Wed, 21 Jan 2009 20:42:00 GMT</pubDate>
      <dc:creator><![CDATA[Grzegorz Florek]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/g/2009/01/21/column-level-security-in-sharepoint/</guid>
      <description><![CDATA[Windows SharePoint Services 3.0 and Microsoft Office SharePoint Server 2007 support a rich security...]]></description>
      <content:encoded><![CDATA[<P style="MARGIN: 0in 0in 10pt" class=MsoNormal><SPAN style="LINE-HEIGHT: 115%; FONT-FAMILY: 'Verdana','sans-serif'; COLOR: #080808; FONT-SIZE: 8.5pt; mso-bidi-font-family: 'Segoe UI'">Windows SharePoint Services 3.0 and Microsoft Office SharePoint Server 2007 support a rich security model that allows administrators to control access to sites and content by assigning permissions to users and groups for a specific securable object (such as site, list, library, folder and even an individual document or item).<BR><BR>However, in certain scenarios there is a need to secure access to individual columns in lists or document libraries. Currently, SharePoint does not provide out of the box support for securing columns or views. A typical scenario that would require this might be a list that contains a broad spectrum of information about an employee or a client, where certain columns (salary, revenue to date, potential to promote, etc.) might ideally only be viewable by certain groups within the portal.<BR><BR>To address those scenarios, Matthew Dressel and I authored a paper that describes a method to leverage SharePoint extensibility and built-in item to level security to allow applying column-level permissions to a custom field type. This is accomplished through the use of a lookup field as the column, with behind the scenes ties to another list that contains the secure values and a method to provision those values back to the lookup only for users with valid permissions.<BR><BR>The result is that in the view mode authorized users will see the content of a secure column as if it was a normal column, while unauthorized users will not see the content of the column at all. This different behavior is shown in Figure 1. Similarly, only authorized users will be able to access the content of a secure column in new and edit modes.<BR><BR><SPAN style="mso-no-proof: yes"><?xml:namespace prefix = v ns = "urn:schemas-microsoft-com:vml" /><v:shapetype id=_x0000_t75 stroked="f" filled="f" path=" m@4@5 l@4@11@9@11@9@5 xe" o:preferrelative="t" o:spt="75" coordsize="21600,21600"><v:stroke joinstyle="miter"></v:stroke><v:formulas><v:f eqn="if lineDrawn pixelLineWidth 0"></v:f><v:f eqn="sum @0 1 0"></v:f><v:f eqn="sum 0 0 @1"></v:f><v:f eqn="prod @2 1 2"></v:f><v:f eqn="prod @3 21600 pixelWidth"></v:f><v:f eqn="prod @3 21600 pixelHeight"></v:f><v:f eqn="sum @0 0 1"></v:f><v:f eqn="prod @6 1 2"></v:f><v:f eqn="prod @7 21600 pixelWidth"></v:f><v:f eqn="sum @8 21600 0"></v:f><v:f eqn="prod @7 21600 pixelHeight"></v:f><v:f eqn="sum @10 21600 0"></v:f></v:formulas><v:path o:connecttype="rect" gradientshapeok="t" o:extrusionok="f"></v:path><?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /><o:lock aspectratio="t" v:ext="edit"></o:lock></v:shapetype></SPAN><IMG style="WIDTH: 765px; HEIGHT: 371px" title="Column Level Security in Action" alt="Column Level Security in Action" src="https://code.msdn.microsoft.com/Project/Download/FileDownload.aspx?ProjectName=SecureField&amp;DownloadId=3752" width=765 height=371 mce_src="https://code.msdn.microsoft.com/Project/Download/FileDownload.aspx?ProjectName=SecureField&amp;DownloadId=3752"><BR><BR>You can read the full article at <A href="https://www.infoq.com/articles/Dressel-Gogolowicz-wss-security">https://www.infoq.com/articles/Dressel-Gogolowicz-wss-security</A>.<o:p></o:p></SPAN></P>
<P style="MARGIN: 0in 0in 10pt" class=MsoNormal><SPAN style="LINE-HEIGHT: 115%; FONT-FAMILY: 'Verdana','sans-serif'; COLOR: #080808; FONT-SIZE: 8.5pt; mso-bidi-font-family: 'Segoe UI'">The source code for the solution can be found at <A href="https://code.msdn.microsoft.com/SecureField">https://code.msdn.microsoft.com/SecureField</A>.<o:p></o:p></SPAN></P>
<P style="MARGIN: 0in 0in 10pt" class=MsoNormal><o:p><FONT size=3 face=Calibri>&nbsp;</FONT></o:p></P>]]></content:encoded>
    </item>
    <item>
      <title>Differences in programming idioms between Windows and UNIX overlooked by an ISV</title>
      <link>https://docs.microsoft.com/archive/blogs/g/differences-in-programming-idioms-between-windows-and-unix-overlooked-by-an-isv</link>
      <pubDate>Fri, 06 Jun 2008 23:04:00 GMT</pubDate>
      <dc:creator><![CDATA[Grzegorz Florek]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/g/2008/06/06/differences-in-programming-idioms-between-windows-and-unix-overlooked-by-an-isv/</guid>
      <description><![CDATA[A few months ago I worked on a project with a global ISV. The main purpose of this engagement was to...]]></description>
      <content:encoded><![CDATA[<P class=MsoNormal style="MARGIN: 0in 0in 10pt"><SPAN style="COLOR: #1f497d; mso-themecolor: text2"><FONT size=3><FONT face=Calibri>A few months ago I worked on a project with a global ISV. The main purpose of this engagement was to review the integration of their product with MOSS (Microsoft Office SharPoint Server), including BDC (Business Data Catalog). This can be a subject of a separate post especially that it was also a good use case of interoperability and integration of SharePoint and BDC with GlassFish-hosted web services. <?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /><o:p></o:p></FONT></FONT></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 10pt"><SPAN style="COLOR: #1f497d; mso-themecolor: text2"><FONT size=3><FONT face=Calibri>However, in this post I will focus on one finding that resulted from reviewing the product of this ISV from scalability perspective. <o:p></o:p></FONT></FONT></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 10pt"><FONT size=3><FONT face=Calibri><SPAN style="COLOR: #1f497d; mso-themecolor: text2">The reviewed server product works on Windows Server, but when I drilled into the architecture of one of the components, I learned that it originated in the previous generation of this product that was based on UNIX. This server component was responsible for handling requests from client applications and the ISV wanted to support hundreds of concurrent users. So I started asking questions suspecting that this component might have followed patterns characteristic for applications that originated many, many years ago in UNIX world. And I was right – this component was spinning a new OS process for each concurrent user. So when handling 200 concurrent users, there would be 200 processes created. So I explained to the ISV that this is not the best way to achieve top scalability on Windows platform. I pointed out that when</SPAN><SPAN style="COLOR: #1f497d; mso-themecolor: text2; mso-ansi-language: EN"> <SPAN lang=EN>components are migrated from UNIX to the Windows platform, there are some important differences in the OS process paradigm that need to be considered. </SPAN></SPAN><SPAN style="COLOR: #1f497d; mso-themecolor: text2">Creating a new process in Windows is a relatively expensive operation while creating a new thread is not as expensive in terms of system resources like memory and time. And the concept of a thread pool allows reusing threads, thus reducing the existing overhead of thread creation. It doesn’t mean that every multiprocess-oriented application on UNIX that is being migrated to Windows should be re-architected to use threads instead. It depends on many factors, for instance the number of processes being created, frequency of process creation etc. But it is probably a safe bet that a UNIX application that creates dozens or hundreds of processes should be rearchitected to use threads from a thread pool on Windows. More information about process and thread management in context of migration of UNIX applications to Windows can be found in <A href="https://technet.microsoft.com/en-us/library/bb497007.aspx" mce_href="https://technet.microsoft.com/en-us/library/bb497007.aspx"><SPAN style="COLOR: #1f497d; mso-themecolor: text2">this article on TechNet</SPAN></A>. A functional comparison of UNIX and Windows is covered in <A href="https://technet.microsoft.com/en-us/library/bb496993.aspx" mce_href="https://technet.microsoft.com/en-us/library/bb496993.aspx"><SPAN style="COLOR: #1f497d; mso-themecolor: text2">this article on TechNet</SPAN></A>.<o:p></o:p></SPAN></FONT></FONT></P>
<P class=MsoNormal style="MARGIN: 0in 0in 10pt"><SPAN style="COLOR: #1f497d; mso-themecolor: text2"><FONT size=3><FONT face=Calibri>In case of this ISV I actually ended up recommending not just switching to using threads from a thread pool, but to use a thin layer of WCF-based services for cross-machine communications. These services would interop through P/Invoke with the existing unmanaged code, so it wouldn’t require any significant rewrite. My recommendation was based on several factors, such as the fact the implementation of the component being reviewed was vulnerable to buffer overrun attacks, didn’t support firewalls, run with admin privileges which created additional security risk and relied on security through obscurity. <SPAN style="mso-spacerun: yes">&nbsp;</SPAN>But this is a topic for another post.<o:p></o:p></FONT></FONT></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal"><SPAN style="COLOR: #1f497d; mso-ascii-font-family: Calibri; mso-hansi-font-family: Calibri; mso-bidi-font-family: 'Times New Roman'"><FONT size=3><FONT face=Calibri>Grzegorz Gogolowicz<o:p></o:p></FONT></FONT></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal"><SPAN style="COLOR: #1f497d; mso-ascii-font-family: Calibri; mso-hansi-font-family: Calibri; mso-bidi-font-family: 'Times New Roman'"><o:p><FONT face=Calibri size=3>&nbsp;</FONT></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal"><SPAN style="COLOR: #1f497d; mso-ascii-font-family: Calibri; mso-hansi-font-family: Calibri; mso-bidi-font-family: 'Times New Roman'"><FONT size=3><FONT face=Calibri>Senior Solutions Architect <o:p></o:p></FONT></FONT></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal"><SPAN style="COLOR: #1f497d; mso-ascii-font-family: Calibri; mso-hansi-font-family: Calibri; mso-bidi-font-family: 'Times New Roman'"><FONT size=3><FONT face=Calibri>GISV Architecture Team<o:p></o:p></FONT></FONT></SPAN></P>]]></content:encoded>
    </item>
    <item>
      <title>Lesson Learned: Missing language attribute in ‘assemblyidentity’ element can cause SxS (SideBySide) application loading failure on Windows XP and Server 2003</title>
      <link>https://docs.microsoft.com/archive/blogs/g/lesson-learned-missing-language-attribute-in-assemblyidentity-element-can-cause-sxs-sidebyside-application-loading-failure-on-windows-xp-and-server-2003</link>
      <pubDate>Fri, 06 Jun 2008 19:20:00 GMT</pubDate>
      <dc:creator><![CDATA[Grzegorz Florek]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/g/2008/06/06/lesson-learned-missing-language-attribute-in-assemblyidentity-element-can-cause-sxs-sidebyside-application-loading-failure-on-windows-xp-and-server-2003/</guid>
      <description><![CDATA[When developing my Sample demonstrating ClickOnce deployment of unmanaged app with COM component...]]></description>
      <content:encoded><![CDATA[<P class=MsoNormal style="MARGIN: 0in 0in 0pt"><SPAN style="COLOR: #1f497d; mso-themecolor: text2"><FONT face=Calibri size=3>When developing my </FONT><A href="https://blogs.msdn.com/g/archive/2008/06/06/sample-demonstrating-clickonce-deployment-of-com-component-implemented-in-managed-assembly-without-using-gac-or-registry-and-without-requiring-admin-rights.aspx" mce_href="https://blogs.msdn.com/g/archive/2008/06/06/sample-demonstrating-clickonce-deployment-of-com-component-implemented-in-managed-assembly-without-using-gac-or-registry-and-without-requiring-admin-rights.aspx"><SPAN style="COLOR: #1f497d; mso-themecolor: text2"><FONT face=Calibri size=3>Sample demonstrating ClickOnce deployment of unmanaged app with COM component implemented in managed assembly without using GAC or Registry and without requiring admin rights</FONT></SPAN></A><FONT face=Calibri size=3> I first got it working on my Vista laptop. I didn’t get it right at the first attempt, but by analyzing events in Event Log and using SxSTrace tool I was able to identify and correct any problem, mostly in manifest files. Then I tried to run it on my Windows Server 2003 workstation and it didn’t work</FONT></SPAN><FONT size=3><SPAN style="COLOR: #1f497d; FONT-FAMILY: Wingdings; mso-themecolor: text2; mso-ascii-font-family: Calibri; mso-hansi-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-hansi-theme-font: minor-latin; mso-char-type: symbol; mso-symbol-font-family: Wingdings"><SPAN style="mso-char-type: symbol; mso-symbol-font-family: Wingdings">L</SPAN></SPAN><SPAN style="COLOR: #1f497d; mso-themecolor: text2"><FONT face=Calibri>. The error message said only that “This application has failed to start because the application configuration is incorrect. Reinstalling the application may fix this problem.” Not very helpful. Event log entries in the Event Log were a bit more specific and said that “Dependent Assembly AssemblyWithComComponents could not be found and Last Error was The referenced assembly is not installed on your system”.<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /><o:p></o:p></FONT></SPAN></FONT></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt"><SPAN style="COLOR: #1f497d; mso-themecolor: text2"><FONT size=3><FONT face=Calibri><SPAN style="mso-spacerun: yes">&nbsp;</SPAN>Unfortunately SxSTrace tool is not available on Windows Server 2003, so I couldn’t use it to diagnose the problem.<o:p></o:p></FONT></FONT></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt"><FONT size=3><FONT face=Calibri><SPAN style="COLOR: #1f497d; mso-themecolor: text2"><SPAN style="mso-spacerun: yes">&nbsp;</SPAN>I knew from my earlier development that typically if you don’t use consistent definition of assembly identity between the client manifest and the manifest embedded in the dependent assembly you gets the following event entry: “</SPAN><SPAN style="COLOR: #1f497d; mso-themecolor: text2; mso-bidi-font-family: 'MS Shell Dlg'">Component identity found in manifest does not match the identity of the component requested”. But I was getting a different error, so I thought that the source of the problem is not related to mismatched assembly identities. And I knew that if you made a syntax error in the manifest file, the event log entry will state it very clearly, for instance “The element assemblyIdentity2 appears as a child of element urn:schemas-microsoft-com:asm.v1^dependentAssembly which is not supported by this version of Windows”. But again, I was getting a different error. After many attempts to get it working I finally noticed that the <A href="https://msdn.microsoft.com/en-us/library/0ecdhtes.aspx" mce_href="https://msdn.microsoft.com/en-us/library/0ecdhtes.aspx"><SPAN style="COLOR: #1f497d; mso-themecolor: text2">assemblyidentity element</SPAN></A> in the client assembly had the language attribute specified as “language="neutral". But my embedded assembly didn’t! And that was the problem! Apparently SxS loader in Vista is able to match an assembly identity with “language="neutral" attribute specified with an assembly identity that doesn’t have this attribute specified. And it makes sense since “neutral” is the default value. But Windows XP and Windows Server 2003 don’t work that way. So lesson learned: ALWAYS make sure that the assemblyidentity element in the client manifest matches the embedded manifest in the dependent assembly. And if you get an error that a </SPAN><SPAN style="COLOR: #1f497d; mso-themecolor: text2">dependent assembly could not be found, make sure that the language attributes match. And always test your solution on all operating systems that you claim to support</SPAN></FONT><SPAN style="COLOR: #1f497d; FONT-FAMILY: Wingdings; mso-themecolor: text2; mso-ascii-font-family: Calibri; mso-hansi-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-hansi-theme-font: minor-latin; mso-char-type: symbol; mso-symbol-font-family: Wingdings"><SPAN style="mso-char-type: symbol; mso-symbol-font-family: Wingdings">J</SPAN></SPAN><SPAN style="COLOR: #1f497d; mso-themecolor: text2"><FONT face=Calibri>.<o:p></o:p></FONT></SPAN></FONT></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt"><SPAN style="COLOR: #1f497d; mso-themecolor: text2"><o:p><FONT face=Calibri size=3>&nbsp;</FONT></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt"><FONT size=3><SPAN style="COLOR: #1f497d; mso-themecolor: text2"><FONT face=Calibri>Hopefully next posts will be about lesson learned from doing real solutions architecture work and not from chasing mismatched attributes in manifest files</FONT></SPAN><SPAN style="COLOR: #1f497d; FONT-FAMILY: Wingdings; mso-themecolor: text2; mso-ascii-font-family: Calibri; mso-hansi-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-hansi-theme-font: minor-latin; mso-char-type: symbol; mso-symbol-font-family: Wingdings"><SPAN style="mso-char-type: symbol; mso-symbol-font-family: Wingdings">J</SPAN></SPAN><SPAN style="COLOR: #1f497d; mso-themecolor: text2"><FONT face=Calibri>.<o:p></o:p></FONT></SPAN></FONT></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt"><SPAN style="COLOR: #1f497d; mso-themecolor: text2"><o:p><FONT face=Calibri size=3>&nbsp;</FONT></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt"><SPAN style="COLOR: #1f497d; mso-themecolor: text2"><FONT size=3><FONT face=Calibri>Grzegorz Gogolowicz<o:p></o:p></FONT></FONT></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt"><SPAN style="COLOR: #1f497d; mso-themecolor: text2"><o:p><FONT face=Calibri size=3>&nbsp;</FONT></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt"><SPAN style="COLOR: #1f497d; mso-themecolor: text2"><FONT size=3><FONT face=Calibri>Senior Solutions Architect<o:p></o:p></FONT></FONT></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt"><SPAN style="COLOR: #1f497d; mso-themecolor: text2"><FONT size=3><FONT face=Calibri>GISV Architecture Team</FONT></FONT></SPAN></P>]]></content:encoded>
    </item>
    <item>
      <title>How To: ClickOnce deployment for unmanaged app with COM component in managed assembly</title>
      <link>https://docs.microsoft.com/archive/blogs/g/how-to-clickonce-deployment-for-unmanaged-app-with-com-component-in-managed-assembly</link>
      <pubDate>Fri, 06 Jun 2008 18:29:00 GMT</pubDate>
      <dc:creator><![CDATA[Grzegorz Florek]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/g/2008/06/06/how-to-clickonce-deployment-for-unmanaged-app-with-com-component-in-managed-assembly/</guid>
      <description><![CDATA[Recently I worked with a global ISV in Europe on re-architecting some of their products from...]]></description>
      <content:encoded><![CDATA[<P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal"><SPAN style="FONT-SIZE: 12pt; COLOR: #1f497d; mso-ascii-font-family: Calibri; mso-hansi-font-family: Calibri; mso-bidi-font-family: 'Times New Roman'; mso-fareast-font-family: 'Times New Roman'"><FONT face=Calibri>Recently I worked with a global ISV in Europe on re-architecting some of their products from competitive platforms to Microsoft platform. In some cases only the server side was being re-architected and the server had to support existing client applications.<SPAN style="mso-spacerun: yes">&nbsp; </SPAN>Some of these existing client applications are written in Delphi and their deployment is painful. <?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /><o:p></o:p></FONT></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal"><SPAN style="FONT-SIZE: 12pt; COLOR: #1f497d; FONT-FAMILY: 'Times New Roman','serif'; mso-fareast-font-family: 'Times New Roman'"><o:p>&nbsp;</o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal"><SPAN style="FONT-SIZE: 12pt; COLOR: #1f497d; mso-ascii-font-family: Calibri; mso-hansi-font-family: Calibri; mso-bidi-font-family: 'Times New Roman'; mso-fareast-font-family: 'Times New Roman'"><FONT face=Calibri>The ISV was aware of ClickOnce; however they assumed that ClickOnce couldn’t solve their problems, because of the following preconceptions:<o:p></o:p></FONT></SPAN></P>
<P class=MsoListParagraph style="MARGIN: auto 0in auto 0.5in; TEXT-INDENT: -0.25in; mso-list: l0 level1 lfo1"><SPAN style="COLOR: #1f497d; FONT-FAMILY: 'Calibri','sans-serif'; mso-bidi-font-family: Calibri; mso-fareast-font-family: Calibri"><SPAN style="mso-list: Ignore"><FONT size=3>-</FONT><SPAN style="FONT: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN></SPAN></SPAN><SPAN style="COLOR: #1f497d; FONT-FAMILY: 'Calibri','sans-serif'"><FONT size=3>they thought that ClickOnce couldn’t help with deployment of unmanaged applications <o:p></o:p></FONT></SPAN></P>
<P class=MsoListParagraph style="MARGIN: auto 0in auto 0.5in; TEXT-INDENT: -0.25in; mso-list: l0 level1 lfo1"><SPAN style="COLOR: #1f497d; FONT-FAMILY: 'Calibri','sans-serif'; mso-bidi-font-family: Calibri; mso-fareast-font-family: Calibri"><SPAN style="mso-list: Ignore"><FONT size=3>-</FONT><SPAN style="FONT: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN></SPAN></SPAN><SPAN style="COLOR: #1f497d; FONT-FAMILY: 'Calibri','sans-serif'"><FONT size=3>their applications uses COM components implemented in .NET and they thought that ClickOnce couldn’t help with deployment of COM components, because they thought that in order to deploy COM components users would have to have admin rights, be able to write to Windows Registry and be able to upload files to GAC.<SPAN style="mso-spacerun: yes">&nbsp; </SPAN><o:p></o:p></FONT></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal"><SPAN style="FONT-SIZE: 12pt; COLOR: #1f497d; FONT-FAMILY: 'Times New Roman','serif'; mso-fareast-font-family: 'Times New Roman'"><o:p>&nbsp;</o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal"><SPAN style="FONT-SIZE: 12pt; COLOR: #1f497d; mso-ascii-font-family: Calibri; mso-hansi-font-family: Calibri; mso-bidi-font-family: 'Times New Roman'; mso-fareast-font-family: 'Times New Roman'"><FONT face=Calibri>I clarified these misconceptions and stated that it should be possible to use ClickOnce to deploy Delphi apps with COM components implemented in .NET and that it should work even for users with no admin rights and it wouldn’t require updating Registry or placing assemblies in GAC.<o:p></o:p></FONT></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal"><SPAN style="FONT-SIZE: 12pt; COLOR: #1f497d; mso-ascii-font-family: Calibri; mso-hansi-font-family: Calibri; mso-bidi-font-family: 'Times New Roman'; mso-fareast-font-family: 'Times New Roman'"><o:p><FONT face=Calibri>&nbsp;</FONT></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal"><SPAN style="FONT-SIZE: 12pt; COLOR: #1f497d; mso-ascii-font-family: Calibri; mso-hansi-font-family: Calibri; mso-bidi-font-family: 'Times New Roman'; mso-fareast-font-family: 'Times New Roman'"><FONT face=Calibri>Individual pieces of this concept are documented; however, I couldn’t find any end-to-end solution addressing all the requirements of this ISV, so I created a sample proof of concept demonstrating the end to end scenario and wanted to share it in case someone else will find it useful as well.<SPAN style="mso-spacerun: yes">&nbsp; </SPAN>The source code of the sample is available at </FONT></SPAN><SPAN style="FONT-SIZE: 12pt; FONT-FAMILY: 'Times New Roman','serif'; mso-fareast-font-family: 'Times New Roman'"><A href="https://code.msdn.microsoft.com/COMClickOnce"><SPAN style="FONT-SIZE: 8.5pt; FONT-FAMILY: 'Verdana','sans-serif'; mso-bidi-font-family: 'Segoe UI'; mso-bidi-font-size: 11.0pt"><FONT color=#0000ff>MSDN Code Gallery</FONT></SPAN></A></SPAN><SPAN style="FONT-SIZE: 8.5pt; COLOR: #080808; FONT-FAMILY: 'Verdana','sans-serif'; mso-bidi-font-family: 'Segoe UI'; mso-fareast-font-family: 'Times New Roman'">.</SPAN><SPAN style="FONT-SIZE: 12pt; COLOR: #1f497d; mso-ascii-font-family: Calibri; mso-hansi-font-family: Calibri; mso-bidi-font-family: 'Times New Roman'; mso-fareast-font-family: 'Times New Roman'"><o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal"><SPAN style="FONT-SIZE: 12pt; COLOR: #1f497d; FONT-FAMILY: 'Times New Roman','serif'; mso-fareast-font-family: 'Times New Roman'"><o:p>&nbsp;</o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal"><SPAN style="FONT-SIZE: 12pt; COLOR: #1f497d; mso-ascii-font-family: Calibri; mso-hansi-font-family: Calibri; mso-bidi-font-family: 'Times New Roman'; mso-fareast-font-family: 'Times New Roman'"><FONT face=Calibri>My idea leverages a mechanism called registration-free activation of COM components, which is available on Windows XP SP2 and newer versions of Windows. This piece of my solution is quite well documented at MSDN and for instance there is a nice walkthrough available </FONT><A href="https://msdn.microsoft.com/en-us/library/ms973913.aspx"><FONT face=Calibri>here</FONT></A><FONT face=Calibri>. <o:p></o:p></FONT></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal"><SPAN style="FONT-SIZE: 12pt; COLOR: #1f497d; FONT-FAMILY: 'Times New Roman','serif'; mso-fareast-font-family: 'Times New Roman'"><o:p>&nbsp;</o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal"><SPAN style="FONT-SIZE: 12pt; COLOR: #1f497d; mso-ascii-font-family: Calibri; mso-hansi-font-family: Calibri; mso-bidi-font-family: 'Times New Roman'; mso-fareast-font-family: 'Times New Roman'"><FONT face=Calibri>One of the most important steps is to write a manifest for the managed assembly that exposes COM components. The manifest can be very simple – in my sample it looks like that:<o:p></o:p></FONT></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt 0.5in; LINE-HEIGHT: normal"><SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'; mso-fareast-font-family: 'Times New Roman'">&lt;?</SPAN><SPAN style="FONT-SIZE: 10pt; COLOR: #a31515; FONT-FAMILY: 'Courier New'; mso-fareast-font-family: 'Times New Roman'">xml</SPAN><SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'; mso-fareast-font-family: 'Times New Roman'"> </SPAN><SPAN style="FONT-SIZE: 10pt; COLOR: red; FONT-FAMILY: 'Courier New'; mso-fareast-font-family: 'Times New Roman'">version</SPAN><SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'; mso-fareast-font-family: 'Times New Roman'">=</SPAN><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-fareast-font-family: 'Times New Roman'">"<SPAN style="COLOR: blue">1.0</SPAN>"<SPAN style="COLOR: blue"> </SPAN><SPAN style="COLOR: red">encoding</SPAN><SPAN style="COLOR: blue">=</SPAN>"<SPAN style="COLOR: blue">UTF-8</SPAN>"<SPAN style="COLOR: blue"> </SPAN><SPAN style="COLOR: red">standalone</SPAN><SPAN style="COLOR: blue">=</SPAN>"<SPAN style="COLOR: blue">yes</SPAN>"<SPAN style="COLOR: blue">?&gt;<o:p></o:p></SPAN></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt 0.5in; LINE-HEIGHT: normal"><SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'; mso-fareast-font-family: 'Times New Roman'">&lt;</SPAN><SPAN style="FONT-SIZE: 10pt; COLOR: #a31515; FONT-FAMILY: 'Courier New'; mso-fareast-font-family: 'Times New Roman'">assembly</SPAN><SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'; mso-fareast-font-family: 'Times New Roman'"> </SPAN><SPAN style="FONT-SIZE: 10pt; COLOR: red; FONT-FAMILY: 'Courier New'; mso-fareast-font-family: 'Times New Roman'">xmlns</SPAN><SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'; mso-fareast-font-family: 'Times New Roman'">=</SPAN><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-fareast-font-family: 'Times New Roman'">"<SPAN style="COLOR: blue">urn:schemas-microsoft-com:asm.v1</SPAN>"<SPAN style="COLOR: blue"> </SPAN><SPAN style="COLOR: red">manifestVersion</SPAN><SPAN style="COLOR: blue">=</SPAN>"<SPAN style="COLOR: blue">1.0</SPAN>"<SPAN style="COLOR: blue">&gt;<o:p></o:p></SPAN></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt 0.5in; LINE-HEIGHT: normal"><SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'; mso-fareast-font-family: 'Times New Roman'">&nbsp; &lt;</SPAN><SPAN style="FONT-SIZE: 10pt; COLOR: #a31515; FONT-FAMILY: 'Courier New'; mso-fareast-font-family: 'Times New Roman'">assemblyIdentity<o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt 0.5in; LINE-HEIGHT: normal"><SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'; mso-fareast-font-family: 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN><SPAN style="FONT-SIZE: 10pt; COLOR: red; FONT-FAMILY: 'Courier New'; mso-fareast-font-family: 'Times New Roman'">name</SPAN><SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'; mso-fareast-font-family: 'Times New Roman'">=</SPAN><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-fareast-font-family: 'Times New Roman'">"<SPAN style="COLOR: blue">AssemblyWithComComponents</SPAN>"<o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt 0.5in; LINE-HEIGHT: normal"><SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'; mso-fareast-font-family: 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN><SPAN style="FONT-SIZE: 10pt; COLOR: red; FONT-FAMILY: 'Courier New'; mso-fareast-font-family: 'Times New Roman'">version</SPAN><SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'; mso-fareast-font-family: 'Times New Roman'">=</SPAN><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-fareast-font-family: 'Times New Roman'">"<SPAN style="COLOR: blue">1.0.0.0</SPAN>"<o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt 0.5in; LINE-HEIGHT: normal"><SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'; mso-fareast-font-family: 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN><SPAN style="FONT-SIZE: 10pt; COLOR: red; FONT-FAMILY: 'Courier New'; mso-fareast-font-family: 'Times New Roman'">processorArchitecture</SPAN><SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'; mso-fareast-font-family: 'Times New Roman'">=</SPAN><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-fareast-font-family: 'Times New Roman'">"<SPAN style="COLOR: blue">MSIL</SPAN>"<SPAN style="COLOR: blue"> /&gt;<o:p></o:p></SPAN></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt 0.5in; LINE-HEIGHT: normal"><SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'; mso-fareast-font-family: 'Times New Roman'">&nbsp; <SPAN style="BACKGROUND: yellow; mso-highlight: yellow">&lt;</SPAN></SPAN><SPAN style="FONT-SIZE: 10pt; BACKGROUND: yellow; COLOR: #a31515; FONT-FAMILY: 'Courier New'; mso-highlight: yellow; mso-fareast-font-family: 'Times New Roman'">clrClass<o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt 0.5in; LINE-HEIGHT: normal"><SPAN style="FONT-SIZE: 10pt; BACKGROUND: yellow; COLOR: blue; FONT-FAMILY: 'Courier New'; mso-highlight: yellow; mso-fareast-font-family: 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN><SPAN style="FONT-SIZE: 10pt; BACKGROUND: yellow; COLOR: red; FONT-FAMILY: 'Courier New'; mso-highlight: yellow; mso-fareast-font-family: 'Times New Roman'">clsid</SPAN><SPAN style="FONT-SIZE: 10pt; BACKGROUND: yellow; COLOR: blue; FONT-FAMILY: 'Courier New'; mso-highlight: yellow; mso-fareast-font-family: 'Times New Roman'">=</SPAN><SPAN style="FONT-SIZE: 10pt; BACKGROUND: yellow; FONT-FAMILY: 'Courier New'; mso-highlight: yellow; mso-fareast-font-family: 'Times New Roman'">"<SPAN style="COLOR: blue">{F1D4EF3D-7E94-4F45-887F-7CA3E76021A3}</SPAN>"<o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt 0.5in; LINE-HEIGHT: normal"><SPAN style="FONT-SIZE: 10pt; BACKGROUND: yellow; COLOR: blue; FONT-FAMILY: 'Courier New'; mso-highlight: yellow; mso-fareast-font-family: 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN><SPAN style="FONT-SIZE: 10pt; BACKGROUND: yellow; COLOR: red; FONT-FAMILY: 'Courier New'; mso-highlight: yellow; mso-fareast-font-family: 'Times New Roman'">progid</SPAN><SPAN style="FONT-SIZE: 10pt; BACKGROUND: yellow; COLOR: blue; FONT-FAMILY: 'Courier New'; mso-highlight: yellow; mso-fareast-font-family: 'Times New Roman'">=</SPAN><SPAN style="FONT-SIZE: 10pt; BACKGROUND: yellow; FONT-FAMILY: 'Courier New'; mso-highlight: yellow; mso-fareast-font-family: 'Times New Roman'">"<SPAN style="COLOR: blue">DemoNamespaceProgId.DemoNamespaceProgId</SPAN>"<o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt 0.5in; LINE-HEIGHT: normal"><SPAN style="FONT-SIZE: 10pt; BACKGROUND: yellow; COLOR: blue; FONT-FAMILY: 'Courier New'; mso-highlight: yellow; mso-fareast-font-family: 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN><SPAN style="FONT-SIZE: 10pt; BACKGROUND: yellow; COLOR: red; FONT-FAMILY: 'Courier New'; mso-highlight: yellow; mso-fareast-font-family: 'Times New Roman'">threadingModel</SPAN><SPAN style="FONT-SIZE: 10pt; BACKGROUND: yellow; COLOR: blue; FONT-FAMILY: 'Courier New'; mso-highlight: yellow; mso-fareast-font-family: 'Times New Roman'">=</SPAN><SPAN style="FONT-SIZE: 10pt; BACKGROUND: yellow; FONT-FAMILY: 'Courier New'; mso-highlight: yellow; mso-fareast-font-family: 'Times New Roman'">"<SPAN style="COLOR: blue">Both</SPAN>"<o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt 0.5in; LINE-HEIGHT: normal"><SPAN style="FONT-SIZE: 10pt; BACKGROUND: yellow; COLOR: blue; FONT-FAMILY: 'Courier New'; mso-highlight: yellow; mso-fareast-font-family: 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN><SPAN style="FONT-SIZE: 10pt; BACKGROUND: yellow; COLOR: red; FONT-FAMILY: 'Courier New'; mso-highlight: yellow; mso-fareast-font-family: 'Times New Roman'">name</SPAN><SPAN style="FONT-SIZE: 10pt; BACKGROUND: yellow; COLOR: blue; FONT-FAMILY: 'Courier New'; mso-highlight: yellow; mso-fareast-font-family: 'Times New Roman'">=</SPAN><SPAN style="FONT-SIZE: 10pt; BACKGROUND: yellow; FONT-FAMILY: 'Courier New'; mso-highlight: yellow; mso-fareast-font-family: 'Times New Roman'">"<SPAN style="COLOR: blue">DemoNamespace.DemoComponent</SPAN>"<o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt 0.5in; LINE-HEIGHT: normal"><SPAN style="FONT-SIZE: 10pt; BACKGROUND: yellow; COLOR: blue; FONT-FAMILY: 'Courier New'; mso-highlight: yellow; mso-fareast-font-family: 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN><SPAN style="FONT-SIZE: 10pt; BACKGROUND: yellow; COLOR: red; FONT-FAMILY: 'Courier New'; mso-highlight: yellow; mso-fareast-font-family: 'Times New Roman'">runtimeVersion</SPAN><SPAN style="FONT-SIZE: 10pt; BACKGROUND: yellow; COLOR: blue; FONT-FAMILY: 'Courier New'; mso-highlight: yellow; mso-fareast-font-family: 'Times New Roman'">=</SPAN><SPAN style="FONT-SIZE: 10pt; BACKGROUND: yellow; FONT-FAMILY: 'Courier New'; mso-highlight: yellow; mso-fareast-font-family: 'Times New Roman'">"<SPAN style="COLOR: blue">v2.0.50727</SPAN>"<SPAN style="COLOR: blue">&gt;<o:p></o:p></SPAN></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt 0.5in; LINE-HEIGHT: normal"><SPAN style="FONT-SIZE: 10pt; BACKGROUND: yellow; COLOR: blue; FONT-FAMILY: 'Courier New'; mso-highlight: yellow; mso-fareast-font-family: 'Times New Roman'">&nbsp; &lt;/</SPAN><SPAN style="FONT-SIZE: 10pt; BACKGROUND: yellow; COLOR: #a31515; FONT-FAMILY: 'Courier New'; mso-highlight: yellow; mso-fareast-font-family: 'Times New Roman'">clrClass</SPAN><SPAN style="FONT-SIZE: 10pt; BACKGROUND: yellow; COLOR: blue; FONT-FAMILY: 'Courier New'; mso-highlight: yellow; mso-fareast-font-family: 'Times New Roman'">&gt;</SPAN><SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'; mso-fareast-font-family: 'Times New Roman'"><o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt 0.5in; LINE-HEIGHT: normal"><SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'; mso-fareast-font-family: 'Times New Roman'">&nbsp; &lt;</SPAN><SPAN style="FONT-SIZE: 10pt; COLOR: #a31515; FONT-FAMILY: 'Courier New'; mso-fareast-font-family: 'Times New Roman'">file</SPAN><SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'; mso-fareast-font-family: 'Times New Roman'"> </SPAN><SPAN style="FONT-SIZE: 10pt; COLOR: red; FONT-FAMILY: 'Courier New'; mso-fareast-font-family: 'Times New Roman'">name</SPAN><SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'; mso-fareast-font-family: 'Times New Roman'">=</SPAN><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-fareast-font-family: 'Times New Roman'">"<SPAN style="COLOR: blue">AssemblyWithComComponents.dll</SPAN>"<SPAN style="COLOR: blue">&gt;<o:p></o:p></SPAN></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt 0.5in; LINE-HEIGHT: normal"><SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'; mso-fareast-font-family: 'Times New Roman'">&nbsp; &lt;/</SPAN><SPAN style="FONT-SIZE: 10pt; COLOR: #a31515; FONT-FAMILY: 'Courier New'; mso-fareast-font-family: 'Times New Roman'">file</SPAN><SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'; mso-fareast-font-family: 'Times New Roman'">&gt;<o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt 0.5in; LINE-HEIGHT: normal"><SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'; mso-fareast-font-family: 'Times New Roman'">&lt;/</SPAN><SPAN style="FONT-SIZE: 10pt; COLOR: #a31515; FONT-FAMILY: 'Courier New'; mso-fareast-font-family: 'Times New Roman'">assembly</SPAN><SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'; mso-fareast-font-family: 'Times New Roman'">&gt;</SPAN><SPAN style="FONT-SIZE: 12pt; COLOR: #1f497d; FONT-FAMILY: 'Times New Roman','serif'; mso-fareast-font-family: 'Times New Roman'"><o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal"><SPAN style="FONT-SIZE: 12pt; COLOR: #1f497d; FONT-FAMILY: 'Times New Roman','serif'; mso-fareast-font-family: 'Times New Roman'"><o:p>&nbsp;</o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal"><SPAN style="FONT-SIZE: 12pt; COLOR: #1f497d; mso-ascii-font-family: Calibri; mso-hansi-font-family: Calibri; mso-bidi-font-family: 'Times New Roman'; mso-fareast-font-family: 'Times New Roman'"><FONT face=Calibri>The next step is to embed this manifest as a RT_MANIFEST unmanaged resource directly into the assembly dll. In Visual Studio 2008 it can be done as easily as by creating a one line rc file:<o:p></o:p></FONT></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; TEXT-INDENT: 0.5in; LINE-HEIGHT: normal"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-fareast-font-family: 'Times New Roman'">1 24 AssemblyWithComComponents.manifest<o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal"><SPAN style="FONT-SIZE: 12pt; COLOR: #1f497d; mso-ascii-font-family: Calibri; mso-hansi-font-family: Calibri; mso-bidi-font-family: 'Times New Roman'; mso-fareast-font-family: 'Times New Roman'"><FONT face=Calibri>and setting its Build Action to “Resource” in the Solution Explorer.<o:p></o:p></FONT></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal"><SPAN style="FONT-SIZE: 12pt; COLOR: #1f497d; FONT-FAMILY: 'Times New Roman','serif'; mso-fareast-font-family: 'Times New Roman'"><o:p>&nbsp;</o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal"><SPAN style="FONT-SIZE: 12pt; COLOR: #1f497d; mso-ascii-font-family: Calibri; mso-hansi-font-family: Calibri; mso-bidi-font-family: 'Times New Roman'; mso-fareast-font-family: 'Times New Roman'"><FONT face=Calibri>The last key step is to create a manifest file for the client application (e.g., your Delphi app or a VB6 app as in my sample). In my sample this is as simple as this:<o:p></o:p></FONT></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt 0.5in; LINE-HEIGHT: normal"><SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'; mso-fareast-font-family: 'Times New Roman'">&lt;?</SPAN><SPAN style="FONT-SIZE: 10pt; COLOR: #a31515; FONT-FAMILY: 'Courier New'; mso-fareast-font-family: 'Times New Roman'">xml</SPAN><SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'; mso-fareast-font-family: 'Times New Roman'"> </SPAN><SPAN style="FONT-SIZE: 10pt; COLOR: red; FONT-FAMILY: 'Courier New'; mso-fareast-font-family: 'Times New Roman'">version</SPAN><SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'; mso-fareast-font-family: 'Times New Roman'">=</SPAN><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-fareast-font-family: 'Times New Roman'">"<SPAN style="COLOR: blue">1.0</SPAN>"<SPAN style="COLOR: blue"> </SPAN><SPAN style="COLOR: red">encoding</SPAN><SPAN style="COLOR: blue">=</SPAN>"<SPAN style="COLOR: blue">utf-8</SPAN>"<SPAN style="COLOR: blue">?&gt;<o:p></o:p></SPAN></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt 0.5in; LINE-HEIGHT: normal"><SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'; mso-fareast-font-family: 'Times New Roman'">&lt;</SPAN><SPAN style="FONT-SIZE: 10pt; COLOR: #a31515; FONT-FAMILY: 'Courier New'; mso-fareast-font-family: 'Times New Roman'">asmv1:assembly</SPAN><SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'; mso-fareast-font-family: 'Times New Roman'"> </SPAN><SPAN style="FONT-SIZE: 10pt; COLOR: red; FONT-FAMILY: 'Courier New'; mso-fareast-font-family: 'Times New Roman'">manifestVersion</SPAN><SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'; mso-fareast-font-family: 'Times New Roman'">=</SPAN><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-fareast-font-family: 'Times New Roman'">"<SPAN style="COLOR: blue">1.0</SPAN>"<SPAN style="COLOR: blue"> </SPAN><SPAN style="COLOR: red">xmlns</SPAN><SPAN style="COLOR: blue">=</SPAN>"<SPAN style="COLOR: blue">urn:schemas-microsoft-com:asm.v1</SPAN>"<SPAN style="COLOR: blue"> </SPAN><SPAN style="COLOR: red">xmlns:dsig</SPAN><SPAN style="COLOR: blue">=</SPAN>"</SPAN><SPAN style="FONT-SIZE: 12pt; FONT-FAMILY: 'Times New Roman','serif'; mso-fareast-font-family: 'Times New Roman'"><A href="https://www.w3.org/2000/09/xmldsig"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-bidi-font-size: 11.0pt"><FONT color=#0000ff>https://www.w3.org/2000/09/xmldsig#</FONT></SPAN></A></SPAN><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-fareast-font-family: 'Times New Roman'">"<SPAN style="COLOR: blue"> </SPAN><SPAN style="COLOR: red">xmlns:asmv1</SPAN><SPAN style="COLOR: blue">=</SPAN>"<SPAN style="COLOR: blue">urn:schemas-microsoft-com:asm.v1</SPAN>"<SPAN style="COLOR: blue"> </SPAN><SPAN style="COLOR: red">xmlns:asmv2</SPAN><SPAN style="COLOR: blue">=</SPAN>"<SPAN style="COLOR: blue">urn:schemas-microsoft-com:asm.v2</SPAN>"<SPAN style="COLOR: blue"> </SPAN><SPAN style="COLOR: red">xmlns:xsi</SPAN><SPAN style="COLOR: blue">=</SPAN>"</SPAN><SPAN style="FONT-SIZE: 12pt; FONT-FAMILY: 'Times New Roman','serif'; mso-fareast-font-family: 'Times New Roman'"><A href="https://www.w3.org/2001/XMLSchema-instance"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-bidi-font-size: 11.0pt"><FONT color=#0000ff>https://www.w3.org/2001/XMLSchema-instance</FONT></SPAN></A></SPAN><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-fareast-font-family: 'Times New Roman'">"<SPAN style="COLOR: blue">&gt;<o:p></o:p></SPAN></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt 0.5in; LINE-HEIGHT: normal"><SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'; mso-fareast-font-family: 'Times New Roman'">&nbsp; &lt;</SPAN><SPAN style="FONT-SIZE: 10pt; COLOR: #a31515; FONT-FAMILY: 'Courier New'; mso-fareast-font-family: 'Times New Roman'">assemblyIdentity</SPAN><SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'; mso-fareast-font-family: 'Times New Roman'"> </SPAN><SPAN style="FONT-SIZE: 10pt; COLOR: red; FONT-FAMILY: 'Courier New'; mso-fareast-font-family: 'Times New Roman'">version</SPAN><SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'; mso-fareast-font-family: 'Times New Roman'">=</SPAN><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-fareast-font-family: 'Times New Roman'">"<SPAN style="COLOR: blue">1.0.0.0</SPAN>"<SPAN style="COLOR: blue"> </SPAN><SPAN style="COLOR: red">name</SPAN><SPAN style="COLOR: blue">=</SPAN>"<SPAN style="COLOR: blue">Client.exe</SPAN>"<SPAN style="COLOR: blue">/&gt;<o:p></o:p></SPAN></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt 0.5in; LINE-HEIGHT: normal"><SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'; mso-fareast-font-family: 'Times New Roman'">&nbsp; &lt;</SPAN><SPAN style="FONT-SIZE: 10pt; COLOR: #a31515; FONT-FAMILY: 'Courier New'; mso-fareast-font-family: 'Times New Roman'">dependency</SPAN><SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'; mso-fareast-font-family: 'Times New Roman'">&gt;<o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt 0.5in; LINE-HEIGHT: normal"><SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'; mso-fareast-font-family: 'Times New Roman'">&nbsp;&nbsp;&nbsp; <SPAN style="BACKGROUND: yellow; mso-highlight: yellow">&lt;</SPAN></SPAN><SPAN style="FONT-SIZE: 10pt; BACKGROUND: yellow; COLOR: #a31515; FONT-FAMILY: 'Courier New'; mso-highlight: yellow; mso-fareast-font-family: 'Times New Roman'">dependentAssembly</SPAN><SPAN style="FONT-SIZE: 10pt; BACKGROUND: yellow; COLOR: blue; FONT-FAMILY: 'Courier New'; mso-highlight: yellow; mso-fareast-font-family: 'Times New Roman'"> &gt;<o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt 0.5in; LINE-HEIGHT: normal"><SPAN style="FONT-SIZE: 10pt; BACKGROUND: yellow; COLOR: blue; FONT-FAMILY: 'Courier New'; mso-highlight: yellow; mso-fareast-font-family: 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;</SPAN><SPAN style="FONT-SIZE: 10pt; BACKGROUND: yellow; COLOR: #a31515; FONT-FAMILY: 'Courier New'; mso-highlight: yellow; mso-fareast-font-family: 'Times New Roman'">assemblyIdentity</SPAN><SPAN style="FONT-SIZE: 10pt; BACKGROUND: yellow; COLOR: blue; FONT-FAMILY: 'Courier New'; mso-highlight: yellow; mso-fareast-font-family: 'Times New Roman'"> </SPAN><SPAN style="FONT-SIZE: 10pt; BACKGROUND: yellow; COLOR: red; FONT-FAMILY: 'Courier New'; mso-highlight: yellow; mso-fareast-font-family: 'Times New Roman'">name</SPAN><SPAN style="FONT-SIZE: 10pt; BACKGROUND: yellow; COLOR: blue; FONT-FAMILY: 'Courier New'; mso-highlight: yellow; mso-fareast-font-family: 'Times New Roman'">=</SPAN><SPAN style="FONT-SIZE: 10pt; BACKGROUND: yellow; FONT-FAMILY: 'Courier New'; mso-highlight: yellow; mso-fareast-font-family: 'Times New Roman'">"<SPAN style="COLOR: blue">AssemblyWithComComponents</SPAN>"<SPAN style="COLOR: blue"> </SPAN><SPAN style="COLOR: red">version</SPAN><SPAN style="COLOR: blue">=</SPAN>"<SPAN style="COLOR: blue">1.0.0.0</SPAN>"<SPAN style="COLOR: blue"> </SPAN><SPAN style="COLOR: red">processorArchitecture</SPAN><SPAN style="COLOR: blue">=</SPAN>"<SPAN style="COLOR: blue">MSIL</SPAN>"<SPAN style="COLOR: blue"> /&gt;</SPAN></SPAN><SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'; mso-fareast-font-family: 'Times New Roman'"><o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt 0.5in; LINE-HEIGHT: normal"><SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'; mso-fareast-font-family: 'Times New Roman'">&nbsp;&nbsp;&nbsp; &lt;/</SPAN><SPAN style="FONT-SIZE: 10pt; COLOR: #a31515; FONT-FAMILY: 'Courier New'; mso-fareast-font-family: 'Times New Roman'">dependentAssembly</SPAN><SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'; mso-fareast-font-family: 'Times New Roman'">&gt;<o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt 0.5in; LINE-HEIGHT: normal"><SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'; mso-fareast-font-family: 'Times New Roman'">&nbsp; &lt;/</SPAN><SPAN style="FONT-SIZE: 10pt; COLOR: #a31515; FONT-FAMILY: 'Courier New'; mso-fareast-font-family: 'Times New Roman'">dependency</SPAN><SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'; mso-fareast-font-family: 'Times New Roman'">&gt;<o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt 0.5in; LINE-HEIGHT: normal"><SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'; mso-fareast-font-family: 'Times New Roman'">&lt;/</SPAN><SPAN style="FONT-SIZE: 10pt; COLOR: #a31515; FONT-FAMILY: 'Courier New'; mso-fareast-font-family: 'Times New Roman'">asmv1:assembly</SPAN><SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'; mso-fareast-font-family: 'Times New Roman'">&gt;<o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal"><SPAN style="FONT-SIZE: 12pt; COLOR: #1f497d; FONT-FAMILY: 'Times New Roman','serif'; mso-fareast-font-family: 'Times New Roman'"><o:p>&nbsp;</o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal"><SPAN style="FONT-SIZE: 12pt; COLOR: #1f497d; mso-ascii-font-family: Calibri; mso-hansi-font-family: Calibri; mso-bidi-font-family: 'Times New Roman'; mso-fareast-font-family: 'Times New Roman'"><FONT face=Calibri>By having these manifest files we can use registration-free activation of COM components&nbsp;- in our case a COM component implemented in a managed assembly.<o:p></o:p></FONT></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal"><SPAN style="FONT-SIZE: 12pt; COLOR: #1f497d; FONT-FAMILY: 'Times New Roman','serif'; mso-fareast-font-family: 'Times New Roman'"><o:p>&nbsp;</o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal"><SPAN style="FONT-SIZE: 12pt; COLOR: #1f497d; mso-ascii-font-family: Calibri; mso-hansi-font-family: Calibri; mso-bidi-font-family: 'Times New Roman'; mso-fareast-font-family: 'Times New Roman'"><FONT face=Calibri>When the following components: the client application, the client manifest file and the assembly dll with the embedded manifest are deployed together (for instance using ClickOnce with a help of a managed launcher application as in my sample) we achieve the goal of exposing COM components implemented in managed code without putting the assemblies into GAC, and without touching Registry and without having admin rights. <o:p></o:p></FONT></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal"><SPAN style="FONT-SIZE: 12pt; COLOR: #1f497d; FONT-FAMILY: 'Times New Roman','serif'; mso-fareast-font-family: 'Times New Roman'"><o:p>&nbsp;</o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal"><SPAN style="FONT-SIZE: 12pt; COLOR: #1f497d; mso-ascii-font-family: Calibri; mso-hansi-font-family: Calibri; mso-bidi-font-family: 'Times New Roman'; mso-fareast-font-family: 'Times New Roman'"><FONT face=Calibri>The zip file that I uploaded to </FONT></SPAN><SPAN style="FONT-SIZE: 12pt; FONT-FAMILY: 'Times New Roman','serif'; mso-fareast-font-family: 'Times New Roman'"><A href="https://code.msdn.microsoft.com/COMClickOnce"><SPAN style="FONT-SIZE: 8.5pt; FONT-FAMILY: 'Verdana','sans-serif'; mso-bidi-font-family: 'Segoe UI'; mso-bidi-font-size: 11.0pt"><FONT color=#0000ff>MSDN Code Gallery</FONT></SPAN></A></SPAN><SPAN style="FONT-SIZE: 8.5pt; COLOR: #080808; FONT-FAMILY: 'Verdana','sans-serif'; mso-bidi-font-family: 'Segoe UI'; mso-fareast-font-family: 'Times New Roman'"> </SPAN><SPAN style="FONT-SIZE: 12pt; COLOR: #1f497d; mso-ascii-font-family: Calibri; mso-hansi-font-family: Calibri; mso-bidi-font-family: 'Times New Roman'; mso-fareast-font-family: 'Times New Roman'"><FONT face=Calibri>contains the full source code of my sample and all ClickOnce deployment files. The sample consists of:<o:p></o:p></FONT></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt 0.5in; TEXT-INDENT: -0.25in; LINE-HEIGHT: normal"><SPAN style="FONT-SIZE: 12pt; COLOR: #1f497d; mso-ascii-font-family: Calibri; mso-hansi-font-family: Calibri; mso-bidi-font-family: Calibri; mso-fareast-font-family: Calibri"><FONT face=Calibri>-</FONT></SPAN><SPAN style="FONT-SIZE: 7pt; COLOR: #1f497d; FONT-FAMILY: 'Times New Roman','serif'; mso-fareast-font-family: Calibri">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN><SPAN style="FONT-SIZE: 12pt; COLOR: #1f497d; mso-ascii-font-family: Calibri; mso-hansi-font-family: Calibri; mso-bidi-font-family: Arial; mso-fareast-font-family: 'Times New Roman'"><FONT face=Calibri>AssemblyWithComComponents project – a .NET assembly (implemented in C#) that implements a COM component,<o:p></o:p></FONT></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt 0.5in; TEXT-INDENT: -0.25in; LINE-HEIGHT: normal"><SPAN style="FONT-SIZE: 12pt; COLOR: #1f497d; mso-ascii-font-family: Calibri; mso-hansi-font-family: Calibri; mso-bidi-font-family: Calibri; mso-fareast-font-family: Calibri"><FONT face=Calibri>-</FONT></SPAN><SPAN style="FONT-SIZE: 7pt; COLOR: #1f497d; FONT-FAMILY: 'Times New Roman','serif'; mso-fareast-font-family: Calibri">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN><SPAN style="FONT-SIZE: 12pt; COLOR: #1f497d; mso-ascii-font-family: Calibri; mso-hansi-font-family: Calibri; mso-bidi-font-family: Arial; mso-fareast-font-family: 'Times New Roman'"><FONT face=Calibri>Client project - unmanaged client applications (in my sample it is a VB6 app, but it could be also a Delphi app or other unmanaged app) that use the above COM component,<o:p></o:p></FONT></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt 0.5in; TEXT-INDENT: -0.25in; LINE-HEIGHT: normal"><SPAN style="FONT-SIZE: 12pt; COLOR: #1f497d; mso-ascii-font-family: Calibri; mso-hansi-font-family: Calibri; mso-bidi-font-family: Calibri; mso-fareast-font-family: Calibri"><FONT face=Calibri>-</FONT></SPAN><SPAN style="FONT-SIZE: 7pt; COLOR: #1f497d; FONT-FAMILY: 'Times New Roman','serif'; mso-fareast-font-family: Calibri">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN><SPAN style="FONT-SIZE: 12pt; COLOR: #1f497d; mso-ascii-font-family: Calibri; mso-hansi-font-family: Calibri; mso-bidi-font-family: Arial; mso-fareast-font-family: 'Times New Roman'"><FONT face=Calibri>ClientLauncher project – a tiny managed app (implemented in C#) that simply launches the proper client application (Client.exe) and its role is to allow deploying the whole solution through ClickOnce<o:p></o:p></FONT></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt 0.5in; TEXT-INDENT: -0.25in; LINE-HEIGHT: normal"><SPAN style="FONT-SIZE: 12pt; COLOR: #1f497d; mso-ascii-font-family: Calibri; mso-hansi-font-family: Calibri; mso-bidi-font-family: Calibri; mso-fareast-font-family: Calibri"><FONT face=Calibri>-</FONT></SPAN><SPAN style="FONT-SIZE: 7pt; COLOR: #1f497d; FONT-FAMILY: 'Times New Roman','serif'; mso-fareast-font-family: Calibri">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN><SPAN style="FONT-SIZE: 12pt; COLOR: #1f497d; mso-ascii-font-family: Calibri; mso-hansi-font-family: Calibri; mso-bidi-font-family: Arial; mso-fareast-font-family: 'Times New Roman'"><FONT face=Calibri>Publish folder for ClickOnce deployment. Setup.exe from that folder can be run without admin rights and it will deploy the application using ClickOnce and then launch the client app which in turn can call a method from the COM component.<o:p></o:p></FONT></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal"><SPAN style="FONT-SIZE: 12pt; COLOR: #1f497d; FONT-FAMILY: 'Times New Roman','serif'; mso-fareast-font-family: 'Times New Roman'"><o:p>&nbsp;</o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal"><SPAN style="FONT-SIZE: 12pt; COLOR: #1f497d; mso-ascii-font-family: Calibri; mso-hansi-font-family: Calibri; mso-bidi-font-family: 'Times New Roman'; mso-fareast-font-family: 'Times New Roman'"><FONT face=Calibri>Please note that if you want to recompile the sample, in particular the unmanaged Client project, you may need first to temporarily set the “Register for COM Interop” setting in AssemblyWithComComponents project settings. Just make sure to unregister the assembly if you want to test the registration-free activation.<SPAN style="mso-spacerun: yes">&nbsp; </SPAN><o:p></o:p></FONT></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal"><SPAN style="FONT-SIZE: 12pt; COLOR: #1f497d; FONT-FAMILY: 'Times New Roman','serif'; mso-fareast-font-family: 'Times New Roman'"><o:p>&nbsp;</o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal"><SPAN style="FONT-SIZE: 12pt; COLOR: #1f497d; mso-ascii-font-family: Calibri; mso-hansi-font-family: Calibri; mso-bidi-font-family: 'Times New Roman'; mso-fareast-font-family: 'Times New Roman'"><FONT face=Calibri>The minimum requirement to leverage this approach is Windows XP SP2 or Windows Vista.<o:p></o:p></FONT></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal"><SPAN style="FONT-SIZE: 12pt; COLOR: #1f497d; mso-ascii-font-family: Calibri; mso-hansi-font-family: Calibri; mso-bidi-font-family: 'Times New Roman'; mso-fareast-font-family: 'Times New Roman'"><FONT face=Calibri>I tested it on Windows Vista SP1, Windows Server 2003 SP2 and Windows XP SP2.<o:p></o:p></FONT></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal"><SPAN style="FONT-SIZE: 12pt; COLOR: #1f497d; FONT-FAMILY: 'Times New Roman','serif'; mso-fareast-font-family: 'Times New Roman'"><o:p>&nbsp;</o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal"><SPAN style="FONT-SIZE: 12pt; COLOR: #1f497d; mso-ascii-font-family: Calibri; mso-hansi-font-family: Calibri; mso-bidi-font-family: 'Times New Roman'; mso-fareast-font-family: 'Times New Roman'"><FONT face=Calibri>When working on solution architecture with global ISVs we often help them by connecting the dots between various technologies, often by drawing boxes and lines. Sometimes we get our hands dirty and we connect the dots by writing samples that demonstrate end to end scenarios leveraging existing technologies, as in this case.<o:p></o:p></FONT></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal"><SPAN style="FONT-SIZE: 12pt; COLOR: #1f497d; FONT-FAMILY: 'Times New Roman','serif'; mso-fareast-font-family: 'Times New Roman'"><o:p>&nbsp;</o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal"><SPAN style="FONT-SIZE: 12pt; COLOR: #1f497d; mso-ascii-font-family: Calibri; mso-hansi-font-family: Calibri; mso-bidi-font-family: 'Times New Roman'; mso-fareast-font-family: 'Times New Roman'"><FONT face=Calibri>Hope you will find this sample useful,<o:p></o:p></FONT></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal"><SPAN style="FONT-SIZE: 12pt; COLOR: #1f497d; FONT-FAMILY: 'Times New Roman','serif'; mso-fareast-font-family: 'Times New Roman'"><o:p>&nbsp;</o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal"><SPAN style="FONT-SIZE: 12pt; COLOR: #1f497d; mso-ascii-font-family: Calibri; mso-hansi-font-family: Calibri; mso-bidi-font-family: 'Times New Roman'; mso-fareast-font-family: 'Times New Roman'"><FONT face=Calibri>Grzegorz Gogolowicz<o:p></o:p></FONT></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal"><SPAN style="FONT-SIZE: 12pt; COLOR: #1f497d; FONT-FAMILY: 'Times New Roman','serif'; mso-fareast-font-family: 'Times New Roman'"><o:p>&nbsp;</o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal"><SPAN style="FONT-SIZE: 12pt; COLOR: #1f497d; mso-ascii-font-family: Calibri; mso-hansi-font-family: Calibri; mso-bidi-font-family: 'Times New Roman'; mso-fareast-font-family: 'Times New Roman'"><FONT face=Calibri>Senior Solutions Architect<o:p></o:p></FONT></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal"><SPAN style="FONT-SIZE: 12pt; COLOR: #1f497d; mso-ascii-font-family: Calibri; mso-hansi-font-family: Calibri; mso-bidi-font-family: 'Times New Roman'; mso-fareast-font-family: 'Times New Roman'"><FONT face=Calibri>GISV Architecture Team<o:p></o:p></FONT></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 10pt"><o:p><FONT face=Calibri size=3>&nbsp;</FONT></o:p></P>]]></content:encoded>
    </item>
  </channel>
</rss>