Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

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

Open
wixbot opened this issue Apr 1, 2014 · 2 comments
Milestone

Comments

@wixbot
Copy link

wixbot commented Apr 1, 2014

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
Copy link
Author

wixbot commented Apr 1, 2014

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

Originally posted by erichfrazer

@wixbot
Copy link
Author

wixbot commented Apr 3, 2014

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

@wixbot wixbot added this to the v3.x milestone Dec 20, 2015
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

1 participant