wixtoolset / issues

WiX Toolset Issues Tracker
http://wixtoolset.org/
129 stars 24 forks source link

Heat incorrectly creates file that causes (wrong) CNDL0044: The class element's Server Attribute was not found #4371

Open wixbot opened 10 years ago

wixbot commented 10 years ago

I am heat/harvesting a self-registering DirectShow DLL, that registers filters in their own ClassID/Typelib locations, but I'm also registering Audio DMOs and Video Capture filters in the devenum's Video Capture location in the registry. My DLL necessarily calls AMovieDllRegisterServer and CLSID_FilterMapper's RegisterFilter( ), both of which I think ensure some default CLSID's are in the registry, which Heat (correctly) detects as needing to be necessary to the registry, but the fragment heat creates in the wxs file is ... I guess ... wrong.

here's the DirectShow C++ code fragment:

REGFILTER2 RegFilter = {0};
RegFilter.dwVersion = 1;
RegFilter.dwMerit = MERIT_UNLIKELY; // Filter merit
RegFilter.cPins = 2;
RegFilter.rgPins = &sudDepthDeconverterPins[0];

ATL::CComPtr< IFilterMapper2 > pMapper;
hr = pMapper.CoCreateInstance( CLSID_FilterMapper );

    hr = pMapper->RegisterFilter(
        CLSID_KinectDepthDeconverter,             // clsid
        L"Kinect Depth Deconverter",             // name
        NULL,                               // moniker
        &CLSID_LegacyAmFilterCategory,    // category
        NULL,                               // instance data for creating the moniker name
        &RegFilter );

and this causes the registry value HKEY_CLASSES_ROOT\CLSID{860BB310-5D01-11D0-BD3B-00A0C911CE86} to necessarily be there (although this is not my video capture filter), but it puts my video capture filter's CLSID under that key, in: HKEY_CLASSES_ROOT\CLSID{860BB310-5D01-11D0-BD3B-00A0C911CE86}\Instance{44A8B5C7-13B6-4211-BD40-35B629D9E6DF}

which causes this harvested heat code to be generated:

<Fragment>
    <ComponentGroup Id="StagecraftClient_Component">
        <Component Id="cmp858D0E2FB7D1F199449766C6BF7345A7" Directory="dir95B1AC49E4EE3261175218994006CC80" Guid="*">
            <Class Id="{083863F1-70DE-11D0-BD40-00A0C911CE86}" />     <<-GENERATES CNDL0044
            <Class Id="{860BB310-5D01-11D0-BD3B-00A0C911CE86}" />    <<-GENERATES CNDL0044
            <File Id="fil980440307536CA3CBDF7CFEAF164971C" KeyPath="yes" Source="SourceDir\x86\KinectVidCap.dll">
                <Class Id="{06634536-D2E8-4923-AD79-A4524252C7EF}" Context="InprocServer32" Description="KinectTemporalDepthProcessor" ThreadingModel="both" />

Originally opened by erichfrazer

wixbot commented 10 years ago

won't hold my breath for a fix...

Originally posted by erichfrazer

wixbot commented 10 years ago

AssignedTo changed from wixsupport to ` Releasechanged fromv3.8tov3.x`