Feature Requests item #1468663, was opened at 2006-04-11 18:15
Message generated for change (Comment added) made by kmierzejewski
You can respond by visiting: 
https://sourceforge.net/tracker/?func=detail&atid=642717&aid=1468663&group_id=105970

Please note that this message will contain a full copy of the comment thread,
including the initial issue submission, for this request,
not just the latest update.
Category: harvester (heat)
Group: None
Status: Open
Priority: 5
Private: No
Submitted By: danbien (danbien)
Assigned to: Nobody/Anonymous (nobody)
Summary: Add RGS support to Heat

Initial Comment:
add ability to consume rgs files to tallow

----------------------------------------------------------------------

Comment By: kamol (kmierzejewski)
Date: 2007-12-17 12:28

Message:
Logged In: YES 
user_id=1961683
Originator: NO

.rgs are not the best choice, because they can contain more externally
defined variables, not just MODULE. I stopped using .rgs files some time
ago, instead I use an .idl file to define the class and interface
registration. I use some custom attributes to define ProgId, ThreadingModel
etc. This information compiled by MIDL into a .tlb file. I developed a tool
which uses it to create a .wxi. The .wxi can be included under a <wix:File>
element. It has a lot of advanteges:
all class/interface stuff is gathered in one place - .idl.
all the information can be automatically extracted and translated into a
.wxi file.
it can be done in a build step, because the generated .wxi doesn't need
any work before it's used.

examples:
.idl:
[
        uuid(AAAAAAAA-AAAA-AAAA-AAAA-AAAAAAAAAAAA),
        helpstring("Type Library Description")
]
library LibraryName
{
[
        uuid(AAAAAAAA-AAAA-AAAA-AAAA-AAAAAAAAAAAA),
        helpstring("Class Description"),
        vi_progid("VersionIndependentProgID"),
        threading("ThreadingModel")
]
coclass ClassName
{
        [default] interface IUnknown;
}; 

};
can be automatically converted into .wxi:

<?xml version="1.0" encoding="utf-8" standalone="no"?>
<Include>
        <TypeLib Id="{AAAAAAAA-AAAA-AAAA-AAAA-AAAAAAAAAAAA}" Language="0"
MajorVersion="1" MinorVersion="0" Description="Type Library Description">
                <Class Id="{AAAAAAAA-AAAA-AAAA-AAAA-AAAAAAAAAAAA}" 
Description="Class
Description" Context="InprocServer32" ThreadingModel="ThreadingModel">
                        <ProgId Id="VersionIndependentProgID.([EMAIL 
PROTECTED])"
Description="Class Description">
                                <ProgId Id="VersionIndependentProgID" 
Description="Class
Description"/>
                        </ProgId>
                        <?define
VersionIndependentProgID={AAAAAAAA-AAAA-AAAA-AAAA-AAAAAAAAAAAA}?>
                </Class>
        
        </TypeLib>
</Include>

which is included in a <wix:File> element:
.wxs:
<File Name="...">
        <?include "sample.wxi"?>
</File>

The <?define?> processing instruction is can be used in the .wxs file to
define some more registry entries (for example ImplementedCategories as
they are not known by WiX):

<RegistryKey Root="HKCR"
Key="CLSID\$(var.VersionIndependentProgId)\Implemented
Categories\!(wix.SomeCategoryId)"
                                Action="createAndRemoveOnUninstall"/>
                        
I developed a tool implementing the tlb->wxi transform as described above.
It has some options to define the custom attributes (threading,vi_progid
etc.) if they are not present in the .tlb. The <?define?>s are also
inserted optionally. The tool also handles proxy registration for
interfaces.

If the WiX developers are interested, I can share my work.

----------------------------------------------------------------------

Comment By: Mike Dimmick (mikedimmick)
Date: 2006-09-22 01:28

Message:
Logged In: YES 
user_id=1040952

For those unaware, an .rgs file is used by ATL projects 
generated by Visual Studio to store registry information 
used by self-registration (it's compiled into a resource in 
the DLL).

I support this idea as it would be better to pull this 
information from the source rather than trying to reverse-
engineer DllSelfRegister.

The ATL Registry parser does support extensible 
dictionaries, so heat/tallow would potentially have to give 
up if an unrecognised macro was encountered (basically 
anything but the default MODULE for ATL 3.0), or emit a 
warning.

----------------------------------------------------------------------

Comment By: Derek (derekc)
Date: 2006-04-21 09:05

Message:
Logged In: YES 
user_id=518766

Are there any good docs covering the file format or APIs for
RGS files?  Whoever works on this will need some sort of
specification or docs to work against.

----------------------------------------------------------------------

Comment By: Derek (derekc)
Date: 2006-04-14 18:33

Message:
Logged In: YES 
user_id=518766

Updating category to Heat since Tallow will not be recieving
any further attention.

----------------------------------------------------------------------

You can respond by visiting: 
https://sourceforge.net/tracker/?func=detail&atid=642717&aid=1468663&group_id=105970

-------------------------------------------------------------------------
This SF.net email is sponsored by: Microsoft
Defy all challenges. Microsoft(R) Visual Studio 2005.
http://clk.atdmt.com/MRT/go/vse0120000070mrt/direct/01/
_______________________________________________
WiX-devs mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/wix-devs

Reply via email to