Sign Up

Sign Up to our social questions and Answers Engine to ask questions, answer people’s questions, and connect with other people.

Have an account? Sign In

Have an account? Sign In Now

Sign In

Login to our social questions & Answers Engine to ask questions answer people’s questions & connect with other people.

Sign Up Here

Forgot Password?

Don't have account, Sign Up Here

Forgot Password

Lost your password? Please enter your email address. You will receive a link and will create a new password via email.

Have an account? Sign In Now

You must login to ask a question.

Forgot Password?

Need An Account, Sign Up Here

Please briefly explain why you feel this question should be reported.

Please briefly explain why you feel this answer should be reported.

Please briefly explain why you feel this user should be reported.

Sign InSign Up

The Archive Base

The Archive Base Logo The Archive Base Logo

The Archive Base Navigation

  • Home
  • SEARCH
  • About Us
  • Blog
  • Contact Us
Search
Ask A Question

Mobile menu

Close
Ask a Question
  • Home
  • Add group
  • Groups page
  • Feed
  • User Profile
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Buy Points
  • Users
  • Help
  • Buy Theme
  • SEARCH
Home/ Questions/Q 6709701
In Process

The Archive Base Latest Questions

Editorial Team
  • 0
Editorial Team
Asked: May 26, 20262026-05-26T07:54:47+00:00 2026-05-26T07:54:47+00:00

Background: Our application is a plugin for a much larger application. Everything we create

  • 0

Background:

Our application is a plugin for a much larger application. Everything we create are DLL files that the larger application hooks to. Because of this our .NET (C#), DLL files must be registered for a COM interface.

We have a working InstallShield project, but for many reasons which I won’t go into here, we wish to migrate it to WiX. The only thing left to be done for the installer is to register our DLL files for COM.

Problems

Here is a sample component with a single DLL file.

<Component Id="MyComponent" Guid="COMPONENT-GUID" SharedDllRefCount="yes" >
    <File Id="MyDLL.dll" Name="MyDLL.dll" KeyPath="yes" Assembly=".net" 
          AssemblyManifest="MyDLL.dll" AssemblyApplication="MyDLL.dll" />
</Component>

As per the accepted answer of How do you register a Win32 COM DLL file in WiX 3?, it is recommended to add SelfRegCost=1 to the File tag. This results in an error during install:

Module C:\Program files\Product\MyDll.dll failed to register. HRESULT -2147024769. Contact your support personnel.

The second answer in the same question (by Rob Menshing) recommends against this approach, but to add inside the file tag this:

<Class Id="PUT-CLSID-HERE" Context="InprocServer32" ThreadingModel="apartment" Description="Your server description">
        <ProgId Id="Your.Server.1" Description="Your ProgId description">
            <ProgId Id="Your.Server" Description="Your ProgId description" />
        </ProgId>
    </Class>

    <Class Id="PUT-PROXY-CLSID-HERE" Context="InprocServer32" ThreadingModel="both" Description="Your server Proxies, assuming you have them">
        <Interface Id="PUT-INTERFACEID-HERE" Name="IInterface1" />
        <Interface Id="PUT-INTERFACEID-HERE" Name="IInterface2" />
        <Interface Id="PUT-INTERFACEID-HERE" Name="IInterface3" />
        <Interface Id="PUT-INTERFACEID-HERE" Name="IInterface4" />
    </Class>

I am a bit confused as to put in as the CLSID ids. I put in a generated GUID and installed it. It installed fine, but the larger application could not find the DLL files. (I used the interface tags generated from heat.exe.)

Another approach found in the same question (by Adan Tegen) recommends using
heat.exe file myDll.dll -out my.wxs

Using the output, I add this to the File tag:

<TypeLib Id="Another Guid" Language="0" MagorVersion="1">
    <!--Interfaces generated from heat.exe-->
</TypeLib>

Every way I have tried to register .NET for COM has failed and after reading so many questions about the topic I am no closer to knowing the correct way of doing it. What should I do? Why is this such a difficult task when everything else in WiX has been fairly simple?

I should mention that the original InstallShield project created a custom action that would call regasm.exe. If all else fails that could be a possibility, but I would rather do things right.

I just found that heat.exe file myDll.dll -scom -o myDll.wxs outputs registry values similar to what I need. Now, how do I reference the newly created component inside the DLL component?

  • 1 1 Answer
  • 0 Views
  • 0 Followers
  • 0
Share
  • Facebook
  • Report

Leave an answer
Cancel reply

You must login to add an answer.

Forgot Password?

Need An Account, Sign Up Here

1 Answer

  • Voted
  • Oldest
  • Recent
  • Random
  1. Editorial Team
    Editorial Team
    2026-05-26T07:54:48+00:00Added an answer on May 26, 2026 at 7:54 am

    I just found that heat.exe file myDll.dll -scom -o myDll.wxs outputs registry values similar to what I need.

    Are you sure about -scom there? AFAIK, that option actually suppresses COM registration!

    Now how do I reference the newly created component inside the DLL component?

    The component generated by heat.exe already includes a File element for the DLL. So it actually contains everything needed to install and register the DLL file. You don’t need the original “DLL component”.

    If you need to put the file and its COM registration in separate components, then you will have to remove the File element from the component generated by heat.exe.

    Also, components cannot reference other components. You can have references between ComponentGroups though, something that we use heavily in our wixlibs to model dependencies, but that’s a rather advanced use case.

    • 0
    • Reply
    • Share
      Share
      • Share on Facebook
      • Share on Twitter
      • Share on LinkedIn
      • Share on WhatsApp
      • Report

Sidebar

Related Questions

We have an application that downloads some files in the background. Our application pops
Background Our Eclipse RCP 3.6-based application lets people drag files in for storage/processing. This
We are writing unit tests for our ASP.NET application that run against a test
First some background: VB.NET 2005 Application that accesses a MS-SQL back-end, using multiple Web
Background: Our web app uses the jquery.constrain.js plugin to handle data entry in some
Let me start off with a bit of background. This morning one of our
Background WCF Stack, Data Access Implemented in Entity Framework, Simple ASP.NET Front End This
Our application has a background thread which spawns a process through System.Diagnostics.Process : Process.Start(
We use Wix to build an installer for our .NET application and are just
Background: Our C# application generates and executes queries to several types of databases (Oracle,

Explore

  • Home
  • Add group
  • Groups page
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Users
  • Help
  • SEARCH

Footer

© 2021 The Archive Base. All Rights Reserved
With Love by The Archive Base

Insert/edit link

Enter the destination URL

Or link to existing content

    No search term specified. Showing recent items. Search or use up and down arrow keys to select an item.