I don't really do C# programming. However those nice Wix people have already
done it for you.
Look at the DTF help file in Wix for the ComponentInstallation class.

Something like new ComponentInstallation("<your component
code>").Product.Features would enumerate your installed features.


-----Original Message-----
From: Anil Patel [mailto:apatel...@googlemail.com] 
Sent: 25 August 2011 12:12
To: General discussion for Windows Installer XML toolset.
Subject: Re: [WiX-users] Identifying Features that have been installed

Hi Peter,

Really appreciate your feedback on this.

The MsiGetEnumsFeatues() is defined as

UINT MsiEnumFeatures(
  __in   LPCTSTR szProduct,
  __in   DWORD iFeatureIndex,
  __out  LPTSTR lpFeatureBuf,
  __out  LPTSTR lpParentBuf
);

So to get the product code, I found this code

        [DllImport("msi", CharSet = CharSet.Auto)]
        static extern int MsiGetProductCode(string component, StringBuilder
buffer);

        public static string GetProductCode(string component)
        {
            StringBuilder productCodeStringBuilder = new StringBuilder(512);
            switch (MsiGetProductCode(component, productCodeStringBuilder))
            {
                case ERROR_SUCCESS:
                    return productCodeStringBuilder.ToString();
                // *Please* don't actually just throw an exception like
this.
                // Throw the relevent exception based on the error code
returned.
                case ERROR_BAD_CONFIGURATION:
                    throw new Exception("The configuration data is
corrupt.");
                case ERROR_INSTALL_FAILURE:
                    throw new Exception("The product code could not be
determined.");
                case ERROR_INVALID_PARAMETER:
                    throw new Exception("An invalid parameter was passed to
the function.");
                case ERROR_UNKNOWN_COMPONENT:
                    throw new Exception("The specified component is
unknown.");
                default:
                    throw new Exception();
            }
        }

The problem is thay symbolic constants in the switch statement (eg
ERROR_INVALID_PARAMETER which are uints) aren't recognised so error on
compile.

Do you know how I can resolve these. I'm assuming there might be an Enum for
them but I can't locate them.

Again any help would be appreciated.

Regards,
Anil.


On Thu, Aug 25, 2011 at 11:13 AM, Peter Shirtcliffe
<pshirtcli...@sdl.com>wrote:

> MsiEnumFeatures()
> http://msdn.microsoft.com/en-us/library/aa370098%28v=vs.85%29.aspx
>
>
> -----Original Message-----
> From: Anil Patel [mailto:apatel...@googlemail.com]
> Sent: 25 August 2011 11:08
> To: General discussion for Windows Installer XML toolset.
> Subject: [WiX-users] Identifying Features that have been installed
>
> Hello,
>
> I have a configuration program that is run manually by a user (following a
> new install or a change to an existing installation) which allows the user
> to configure the installed features.
>
> There is a requirement to disable the configuration of features not
> installed by the user.
>
> The question is, is there a way for the configuration program to identify
> which featues have been installed?
>
> I could record this data into the registry during the install and remove it
> when a feature is uninstalled but I just wondered if there was any other
> way
> of doing this.
>
> Thank you for your time.
>
>
> Regards,
> Anil.
>
>
-----------------------------------------------------------------------------
> -
> EMC VNX: the world's simplest storage, starting under $10K
> The only unified storage solution that offers unified management
> Up to 160% more powerful than alternatives and 25% more efficient.
> Guaranteed. http://p.sf.net/sfu/emc-vnx-dev2dev
> _______________________________________________
> WiX-users mailing list
> WiX-users@lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/wix-users
> SDL PLC confidential, all rights reserved.
> If you are not the intended recipient of this mail SDL requests and
> requires that you delete it without acting upon or copying any of its
> contents, and we further request that you advise us.
> SDL PLC is a public limited company registered in England and Wales.
>  Registered number: 02675207.
> Registered address: Globe House, Clivemont Road, Maidenhead, Berkshire SL6
> 7DY, UK.
>
>
>
>
-----------------------------------------------------------------------------
-
> EMC VNX: the world's simplest storage, starting under $10K
> The only unified storage solution that offers unified management
> Up to 160% more powerful than alternatives and 25% more efficient.
> Guaranteed. http://p.sf.net/sfu/emc-vnx-dev2dev
> _______________________________________________
> WiX-users mailing list
> WiX-users@lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/wix-users
>
-----------------------------------------------------------------------------
-
EMC VNX: the world's simplest storage, starting under $10K
The only unified storage solution that offers unified management 
Up to 160% more powerful than alternatives and 25% more efficient. 
Guaranteed. http://p.sf.net/sfu/emc-vnx-dev2dev
_______________________________________________
WiX-users mailing list
WiX-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/wix-users

------------------------------------------------------------------------------
EMC VNX: the world's simplest storage, starting under $10K
The only unified storage solution that offers unified management 
Up to 160% more powerful than alternatives and 25% more efficient. 
Guaranteed. http://p.sf.net/sfu/emc-vnx-dev2dev
_______________________________________________
WiX-users mailing list
WiX-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/wix-users

Reply via email to