You could always use the COM library if you're not comfortable with the C
API calls.  Add a COM reference to "Microsoft Windows Installer Object
Library" to your project...

Installer.get_Features and Installer.get_FeatureState look like they might
be useful.

-----Original Message-----
From: Anil Patel [mailto:apatel...@googlemail.com] 
Sent: Thursday, August 25, 2011 11: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