[final, sorry] msi: Expand IDL file to contain all OLE automation interfaces.

Misha Koshelev mk144210 at bcm.tmc.edu
Thu Mar 1 09:37:22 CST 2007


Ok, sorry about posting patches to uncomitted patches, I have
reintegrated these changes back into my patches. The change in this
patch is the IDL file now contains all OLE automation interfaces as of
native installer version 3.0 (as opposed to 2.0). 

As a reminder this is part 2 of 4 of my patchset:

1.
http://www.winehq.org/pipermail/wine-patches/2007-February/036359.html
2. This patch
3. Next patch
4.
http://www.winehq.org/pipermail/wine-patches/2007-February/036362.html

As a reminder, these patches add JScript/VBScript support for
MSI (as the MSI specs specifically state that applications that need
this functionality must install Windows Script themselves) and partial
but easily expandable OLE automation functionality for MSI. As a proof
of concept, sufficient automation support is added to fix bug #7357

Changelog:

	* msi: Expand IDL file to contain all OLE automation interfaces.
-------------- next part --------------
From edf9c7bd15442b3b8f2ffbe1ce80333ee31dafb5 Mon Sep 17 00:00:00 2001
From: Misha Koshelev <mk144210 at bcm.tmc.edu>
Date: Wed, 28 Feb 2007 12:08:52 -0600
Subject: msi: Expand IDL file to contain all OLE automation interfaces.
---
 dlls/msi/msiserver.idl       |  873 +++++++++++++++++++++++++++++++++++++++---
 dlls/msi/msiserver_dispids.h |  180 +++++++++
 2 files changed, 993 insertions(+), 60 deletions(-)

diff --git a/dlls/msi/msiserver.idl b/dlls/msi/msiserver.idl
index 9966d90..8735b7c 100644
--- a/dlls/msi/msiserver.idl
+++ b/dlls/msi/msiserver.idl
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2007 Mike McCormack
+ * Copyright (C) 2007 Misha Koshelev
  *
  * This library is free software; you can redistribute it and/or
  * modify it under the terms of the GNU Lesser General Public
@@ -16,14 +17,21 @@
  * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
  */
 
+#include "msiserver_dispids.h"
 import "unknwn.idl";
 import "wtypes.idl";
 import "objidl.idl";
 import "oaidl.idl";
 
-[ uuid(000C1092-0000-0000-C000-000000000046), version(1.0) ]
+[
+    uuid(000C1092-0000-0000-C000-000000000046),
+    version(1.0),
+    helpstring("Microsoft Windows Installer Object Library")
+]
 library WindowsInstaller
 {
+    /* TLib :
+     * Forward declare all types defined in this typelib */
     dispinterface Installer;
     dispinterface Record;
     dispinterface Session;
@@ -37,87 +45,832 @@ library WindowsInstaller
     dispinterface Product;
     dispinterface Patch;
 
-    [ uuid(000C1090-0000-0000-C000-000000000046) ]
-    dispinterface Installer
-    {
-    properties:
-    methods:
-    }
-
-    [ uuid(000C1093-0000-0000-C000-000000000046) ]
-    dispinterface Record
-    {
-    properties:
-    methods:
-    }
-
-    [ uuid(000C1095-0000-0000-C000-000000000046) ]
-    dispinterface StringList
-    {
+    typedef enum {
+        msiUILevelNoChange = 0,
+        msiUILevelDefault = 1,
+        msiUILevelNone = 2,
+        msiUILevelBasic = 3,
+        msiUILevelReduced = 4,
+        msiUILevelFull = 5,
+        msiUILevelHideCancel = 32,
+        msiUILevelProgressOnly = 64,
+        msiUILevelEndDialog = 128,
+        msiUILevelSourceResOnly = 256
+    } MsiUILevel;
+
+    typedef enum {
+        msiInstallStateNotUsed = -7,
+        msiInstallStateBadConfig = -6,
+        msiInstallStateIncomplete = -5,
+        msiInstallStateSourceAbsent = -4,
+        msiInstallStateInvalidArg = -2,
+        msiInstallStateUnknown = -1,
+        msiInstallStateBroken = 0,
+        msiInstallStateAdvertised = 1,
+        msiInstallStateRemoved = 1,
+        msiInstallStateAbsent = 2,
+        msiInstallStateLocal = 3,
+        msiInstallStateSource = 4,
+        msiInstallStateDefault = 5
+    } MsiInstallState;
+
+    typedef enum {
+        msiReinstallModeFileMissing = 2,
+        msiReinstallModeFileOlderVersion = 4,
+        msiReinstallModeFileEqualVersion = 8,
+        msiReinstallModeFileExact = 16,
+        msiReinstallModeFileVerify = 32,
+        msiReinstallModeFileReplace = 64,
+        msiReinstallModeMachineData = 128,
+        msiReinstallModeUserData = 256,
+        msiReinstallModeShortcut = 512,
+        msiReinstallModePackage = 1024
+    } MsiReinstallMode;
+
+    typedef enum {
+        msiInstallTypeDefault = 0,
+        msiInstallTypeNetworkImage = 1,
+        msiInstallTypeSingleInstance = 2
+    } MsiInstallType;
+
+    typedef enum {
+        msiInstallModeNoSourceResolution = -3,
+        msiInstallModeNoDetection = -2,
+        msiInstallModeExisting = -1,
+        msiInstallModeDefault = 0
+    } MsiInstallMode;
+
+    typedef enum {
+        msiSignatureInfoCertificate = 0,
+        msiSignatureInfoHash = 1
+    } MsiSignatureInfo;
+
+    typedef enum {
+        msiReadStreamInteger = 0,
+        msiReadStreamBytes = 1,
+        msiReadStreamAnsi = 2,
+        msiReadStreamDirect = 3
+    } MsiReadStream;
+
+    typedef enum {
+        msiRunModeAdmin = 0,
+        msiRunModeAdvertise = 1,
+        msiRunModeMaintenance = 2,
+        msiRunModeRollbackEnabled = 3,
+        msiRunModeLogEnabled = 4,
+        msiRunModeOperations = 5,
+        msiRunModeRebootAtEnd = 6,
+        msiRunModeRebootNow = 7,
+        msiRunModeCabinet = 8,
+        msiRunModeSourceShortNames = 9,
+        msiRunModeTargetShortNames = 10,
+        msiRunModeWindows9x = 12,
+        msiRunModeZawEnabled = 13,
+        msiRunModeScheduled = 16,
+        msiRunModeRollback = 17,
+        msiRunModeCommit = 18
+    } MsiRunMode;
+
+    typedef enum {
+        msiInstallContextFirstVisible = 0,
+        msiInstallContextUserManaged = 1,
+        msiInstallContextUser = 2,
+        msiInstallContextMachine = 4,
+        msiInstallContextAllUserManaged = 8
+    } MsiInstallContext;
+
+    [
+        uuid(000C1090-0000-0000-C000-000000000046),
+        helpcontext(0x00002328)
+    ]
+    dispinterface Installer {
         properties:
+        [id(DISPID_INSTALLER_UILEVEL)]
+            MsiUILevel UILevel;
         methods:
-    }
+        [id(DISPID_INSTALLER_CREATERECORD)]
+            Record* CreateRecord([in] long Count);
+        [id(DISPID_INSTALLER_OPENPACKAGE)]
+            Session* OpenPackage(
+                [in] VARIANT PackagePath,
+                [in, optional, defaultvalue(0)] long Options);
+        [id(DISPID_INSTALLER_OPENPRODUCT)]
+            Session* OpenProduct([in] BSTR ProductCode);
+        [id(DISPID_INSTALLER_OPENDATABASE)]
+            Database* OpenDatabase(
+                [in] BSTR DatabasePath,
+                [in] VARIANT OpenMode);
+        [id(DISPID_INSTALLER_SUMMARYINFORMATION), propget]
+            SummaryInfo* SummaryInformation(
+                [in] BSTR PackagePath,
+                [in, optional, defaultvalue(0)] long UpdateCount);
+        [id(DISPID_INSTALLER_ENABLELOG)]
+            void EnableLog(
+                [in] BSTR LogMode,
+                [in] BSTR LogFile);
+        [id(DISPID_INSTALLER_INSTALLPRODUCT)]
+            void InstallProduct(
+                [in] BSTR PackagePath,
+                [in, optional, defaultvalue("0")] BSTR PropertyValues);
+        [id(DISPID_INSTALLER_VERSION), propget]
+            BSTR Version();
+        [id(DISPID_INSTALLER_LASTERRORRECORD)]
+            Record* LastErrorRecord();
+        [id(DISPID_INSTALLER_REGISTRYVALUE)]
+            BSTR RegistryValue(
+                [in] VARIANT Root,
+                [in] BSTR Key,
+                [in, optional] VARIANT Value);
+        [id(DISPID_INSTALLER_FILEATTRIBUTES)]
+            long FileAttributes([in] BSTR FilePath);
+        [id(DISPID_INSTALLER_FILESIZE)]
+            long FileSize([in] BSTR FilePath);
+        [id(DISPID_INSTALLER_FILEVERSION)]
+            BSTR FileVersion(
+                [in] BSTR FilePath,
+                [in, optional] VARIANT Language);
+        [id(DISPID_INSTALLER_ENVIRONMENT), propget]
+            BSTR Environment([in] BSTR Variable);
+        [id(DISPID_INSTALLER_ENVIRONMENT), propput]
+            void Environment(
+                [in] BSTR Variable,
+                [in] BSTR rhs);
+        [id(DISPID_INSTALLER_PRODUCTSTATE), propget]
+            MsiInstallState ProductState([in] BSTR Product);
+        [id(DISPID_INSTALLER_PRODUCTINFO), propget]
+            BSTR ProductInfo(
+                [in] BSTR Product,
+                [in] BSTR Attribute);
+        [id(DISPID_INSTALLER_CONFIGUREPRODUCT)]
+            void ConfigureProduct(
+                [in] BSTR Product,
+                [in] long InstallLevel,
+                [in] MsiInstallState InstallState);
+        [id(DISPID_INSTALLER_REINSTALLPRODUCT)]
+            void ReinstallProduct(
+                [in] BSTR Product,
+                [in] MsiReinstallMode ReinstallMode);
+        [id(DISPID_INSTALLER_COLLECTUSERINFO)]
+            void CollectUserInfo([in] BSTR Product);
+        [id(DISPID_INSTALLER_APPLYPATCH)]
+            void ApplyPatch(
+                [in] BSTR PatchPackage,
+                [in] BSTR InstallPackage,
+                [in] MsiInstallType InstallType,
+                [in] BSTR CommandLine);
+        [id(DISPID_INSTALLER_FEATUREPARENT), propget]
+            BSTR FeatureParent(
+                [in] BSTR Product,
+                [in] BSTR Feature);
+        [id(DISPID_INSTALLER_FEATURESTATE), propget]
+            MsiInstallState FeatureState(
+                [in] BSTR Product,
+                [in] BSTR Feature);
+        [id(DISPID_INSTALLER_USEFEATURE)]
+            void UseFeature(
+                [in] BSTR Product,
+                [in] BSTR Feature,
+                [in] MsiInstallMode InstallMode);
+        [id(DISPID_INSTALLER_FEATUREUSAGECOUNT), propget]
+            long FeatureUsageCount(
+                [in] BSTR Product,
+                [in] BSTR Feature);
+        [id(DISPID_INSTALLER_FEATUREUSAGEDATE), propget]
+            DATE FeatureUsageDate(
+                [in] BSTR Product,
+                [in] BSTR Feature);
+        [id(DISPID_INSTALLER_CONFIGUREFEATURE)]
+            void ConfigureFeature(
+                [in] BSTR Product,
+                [in] BSTR Feature,
+                [in] MsiInstallState InstallState);
+        [id(DISPID_INSTALLER_REINSTALLFEATURE)]
+            void ReinstallFeature(
+                [in] BSTR Product,
+                [in] BSTR Feature,
+                [in] MsiReinstallMode ReinstallMode);
+        [id(DISPID_INSTALLER_PROVIDECOMPONENT)]
+            BSTR ProvideComponent(
+                [in] BSTR Product,
+                [in] BSTR Feature,
+                [in] BSTR Component,
+                [in] long InstallMode);
+        [id(DISPID_INSTALLER_COMPONENTPATH), propget]
+            BSTR ComponentPath(
+                [in] BSTR Product,
+                [in] BSTR Component);
+        [id(DISPID_INSTALLER_PROVIDEQUALIFIEDCOMPONENT)]
+            BSTR ProvideQualifiedComponent(
+                [in] BSTR Category,
+                [in] BSTR Qualifier,
+                [in] long InstallMode);
+        [id(DISPID_INSTALLER_QUALIFIERDESCRIPTION), propget]
+            BSTR QualifierDescription(
+                [in] BSTR Category,
+                [in] BSTR Qualifier);
+        [id(DISPID_INSTALLER_COMPONENTQUALIFIERS), propget]
+            StringList* ComponentQualifiers([in] BSTR Category);
+        [id(DISPID_INSTALLER_PRODUCTS), propget]
+            StringList* Products();
+        [id(DISPID_INSTALLER_FEATURES), propget]
+            StringList* Features([in] BSTR Product);
+        [id(DISPID_INSTALLER_COMPONENTS), propget]
+            StringList* Components();
+        [id(DISPID_INSTALLER_COMPONENTCLIENTS), propget]
+            StringList* ComponentClients([in] BSTR Component);
+        [id(DISPID_INSTALLER_PATCHES), propget]
+            StringList* Patches([in] BSTR Product);
+        [id(DISPID_INSTALLER_RELATEDPRODUCTS), propget]
+            StringList* RelatedProducts([in] BSTR UpgradeCode);
+        [id(DISPID_INSTALLER_PATCHINFO), propget]
+            BSTR PatchInfo(
+                [in] BSTR Patch,
+                [in] BSTR Attribute);
+        [id(DISPID_INSTALLER_PATCHTRANSFORMS), propget]
+            BSTR PatchTransforms(
+                [in] BSTR Product,
+                [in] BSTR Patch);
+        [id(DISPID_INSTALLER_ADDSOURCE)]
+            void AddSource(
+                [in] BSTR Product,
+                [in] BSTR User,
+                [in] BSTR Source);
+        [id(DISPID_INSTALLER_CLEARSOURCELIST)]
+            void ClearSourceList(
+                [in] BSTR Product,
+                [in] BSTR User);
+        [id(DISPID_INSTALLER_FORCESOURCELISTRESOLUTION)]
+            void ForceSourceListResolution(
+                [in] BSTR Product,
+                [in] BSTR User);
+        [id(DISPID_INSTALLER_GETSHORTCUTTARGET), propget]
+            Record* GetShortcutTarget([in] BSTR ShortcutPath);
+        [id(DISPID_INSTALLER_FILEHASH)]
+            Record* FileHash(
+                [in] BSTR FilePath,
+                [in] long Options);
+        [id(DISPID_INSTALLER_FILESIGNATUREINFO)]
+            SAFEARRAY(unsigned char) FileSignatureInfo(
+                [in] BSTR FilePath,
+                [in] long Options,
+                [in] MsiSignatureInfo Format);
+        [id(DISPID_INSTALLER_REMOVEPATCHES)]
+            void RemovePatches(
+                [in] BSTR PatchList,
+                [in] BSTR Product,
+                [in] MsiInstallType UninstallType,
+                [in, optional, defaultvalue("0")] BSTR PropertyList);
+        [id(DISPID_INSTALLER_APPLYMULTIPLEPATCHES)]
+            void ApplyMultiplePatches(
+                [in] BSTR PatchPackage,
+                [in] BSTR Product,
+                [in] BSTR PropertiesList);
+        [id(DISPID_INSTALLER_PRODUCT), propget]
+            Product* Product(
+                [in] BSTR Product,
+                [in] BSTR UserSid,
+                [in] MsiInstallContext iContext);
+        [id(DISPID_INSTALLER_PATCH), propget]
+            Patch* Patch(
+                [in] BSTR PatchCode,
+                [in] BSTR ProductCode,
+                [in] BSTR UserSid,
+                [in] MsiInstallContext iContext);
+        [id(DISPID_INSTALLER_PRODUCTSEX), propget]
+            RecordList* ProductsEx(
+                [in] BSTR Product,
+                [in] BSTR UserSid,
+                [in] long Contexts);
+        [id(DISPID_INSTALLER_PATCHESEX), propget]
+            RecordList* PatchesEx(
+                [in] BSTR Product,
+                [in] BSTR UserSid,
+                [in] long Contexts,
+                [in] long filter);
+        [id(DISPID_INSTALLER_EXTRACTPATCHXMLDATA)]
+            BSTR ExtractPatchXMLData([in] BSTR PatchPath);
+    };
 
-    [ uuid(000C1096-0000-0000-C000-000000000046) ]
-    dispinterface RecordList
-    {
+    [
+        uuid(000C1093-0000-0000-C000-000000000046),
+        helpcontext(0x00002454)
+    ]
+    dispinterface Record {
         properties:
         methods:
-    }
+        [id(DISPID_RECORD_STRINGDATA), propget]
+            BSTR StringData([in] long Field);
+        [id(DISPID_RECORD_STRINGDATA), propput]
+            void StringData(
+                [in] long Field,
+                [in] BSTR rhs);
+        [id(DISPID_RECORD_INTEGERDATA), propget]
+            long IntegerData([in] long Field);
+        [id(DISPID_RECORD_INTEGERDATA), propput]
+            void IntegerData(
+                [in] long Field,
+                [in] long rhs);
+        [id(DISPID_RECORD_SETSTREAM)]
+            void SetStream(
+                [in] long Field,
+                [in] BSTR FilePath);
+        [id(DISPID_RECORD_READSTREAM)]
+            BSTR ReadStream(
+                [in] long Field,
+                [in] long Length,
+                [in] MsiReadStream Format);
+        [id(DISPID_RECORD_FIELDCOUNT), propget]
+            long FieldCount();
+        [id(DISPID_RECORD_ISNULL), propget]
+            VARIANT_BOOL IsNull([in] long Field);
+        [id(DISPID_RECORD_DATASIZE), propget]
+            long DataSize([in] long Field);
+        [id(DISPID_RECORD_CLEARDATA)]
+            void ClearData();
+        [id(DISPID_RECORD_FORMATTEXT)]
+            BSTR FormatText();
+    };
 
-    [ uuid(000C109A-0000-0000-C000-000000000046) ]
-    dispinterface UIPreview
-    {
+    typedef enum {
+        msiDoActionStatusNoAction = 0,
+        msiDoActionStatusSuccess = 1,
+        msiDoActionStatusUserExit = 2,
+        msiDoActionStatusFailure = 3,
+        msiDoActionStatusSuspend = 4,
+        msiDoActionStatusFinished = 5,
+        msiDoActionStatusWrongState = 6,
+        msiDoActionStatusBadActionData = 7
+    } MsiDoActionStatus;
+
+    typedef enum {
+        msiEvaluateConditionFalse = 0,
+        msiEvaluateConditionTrue = 1,
+        msiEvaluateConditionNone = 2,
+        msiEvaluateConditionError = 3
+    } _MsiEvaluateCondition; /* Added underscore to avoid conflict with function name */
+
+    typedef enum {
+        msiMessageStatusError = -1,
+        msiMessageStatusNone = 0,
+        msiMessageStatusOk = 1,
+        msiMessageStatusCancel = 2,
+        msiMessageStatusAbort = 3,
+        msiMessageStatusRetry = 4,
+        msiMessageStatusIgnore = 5,
+        msiMessageStatusYes = 6,
+        msiMessageStatusNo = 7
+    } MsiMessageStatus;
+
+    typedef enum {
+        msiMessageTypeFatalExit = 0,
+        msiMessageTypeError = 16777216,
+        msiMessageTypeWarning = 33554432,
+        msiMessageTypeUser = 50331648,
+        msiMessageTypeInfo = 67108864,
+        msiMessageTypeFilesInUse = 83886080,
+        msiMessageTypeResolveSource = 100663296,
+        msiMessageTypeOutOfDiskSpace = 117440512,
+        msiMessageTypeActionStart = 134217728,
+        msiMessageTypeActionData = 150994944,
+        msiMessageTypeProgress = 167772160,
+        msiMessageTypeCommonData = 184549376,
+        msiMessageTypeOk = 0,
+        msiMessageTypeOkCancel = 1,
+        msiMessageTypeAbortRetryIgnore = 2,
+        msiMessageTypeYesNoCancel = 3,
+        msiMessageTypeYesNo = 4,
+        msiMessageTypeRetryCancel = 5,
+        msiMessageTypeDefault1 = 0,
+        msiMessageTypeDefault2 = 256,
+        msiMessageTypeDefault3 = 512
+    } MsiMessageType;
+
+    typedef enum {
+        msiCostTreeSelfOnly = 0,
+        msiCostTreeChildren = 1,
+        msiCostTreeParents = 2
+    } MsiCostTree;
+
+    typedef enum {
+        msiDatabaseStateRead = 0,
+        msiDatabaseStateWrite = 1
+    } MsiDatabaseState;
+
+    [
+        uuid(000C109E-0000-0000-C000-000000000046),
+        helpcontext(0x000025e4)
+    ]
+    dispinterface Session {
         properties:
         methods:
-    }
+        [id(DISPID_SESSION_INSTALLER), propget]
+            Installer* Installer();
+        [id(DISPID_SESSION_PROPERTY), propget]
+            BSTR Property([in] BSTR Name);
+        [id(DISPID_SESSION_PROPERTY), propput]
+            void Property(
+                [in] BSTR Name,
+                [in] BSTR rhs);
+        [id(DISPID_SESSION_LANGUAGE), propget]
+            long Language();
+        [id(DISPID_SESSION_MODE), propget]
+            VARIANT_BOOL Mode([in] MsiRunMode Flag);
+        [id(DISPID_SESSION_MODE), propput]
+            void Mode(
+                [in] MsiRunMode Flag,
+                [in] VARIANT_BOOL rhs);
+        [id(DISPID_SESSION_DATABASE), propget]
+            Database* Database();
+        [id(DISPID_SESSION_SOURCEPATH), propget]
+            BSTR SourcePath([in] BSTR Folder);
+        [id(DISPID_SESSION_TARGETPATH), propget]
+            BSTR TargetPath([in] BSTR Folder);
+        [id(DISPID_SESSION_TARGETPATH), propput]
+            void TargetPath(
+                [in] BSTR Folder,
+                [in] BSTR rhs);
+        [id(DISPID_SESSION_DOACTION)]
+            MsiDoActionStatus DoAction([in] BSTR Action);
+        [id(DISPID_SESSION_SEQUENCE)]
+            MsiDoActionStatus Sequence(
+                [in] BSTR Table,
+                [in, optional] VARIANT Mode);
+        [id(DISPID_SESSION_EVALUATECONDITION)]
+            _MsiEvaluateCondition EvaluateCondition([in] BSTR Expression);
+        [id(DISPID_SESSION_FORMATRECORD)]
+            BSTR FormatRecord([in] Record* Record);
+        [id(DISPID_SESSION_MESSAGE)]
+            MsiMessageStatus Message(
+                [in] MsiMessageType Kind,
+                [in] Record* Record);
+        [id(DISPID_SESSION_FEATURECURRENTSTATE), propget]
+            MsiInstallState FeatureCurrentState([in] BSTR Feature);
+        [id(DISPID_SESSION_FEATUREREQUESTSTATE), propget]
+            MsiInstallState FeatureRequestState([in] BSTR Feature);
+        [id(DISPID_SESSION_FEATUREREQUESTSTATE), propput]
+            void FeatureRequestState(
+                [in] BSTR Feature,
+                [in] MsiInstallState rhs);
+        [id(DISPID_SESSION_FEATUREVALIDSTATES), propget]
+            long FeatureValidStates([in] BSTR Feature);
+        [id(DISPID_SESSION_FEATURECOST), propget]
+            long FeatureCost(
+                [in] BSTR Feature,
+                [in] MsiCostTree CostTree,
+                [in] MsiInstallState State);
+        [id(DISPID_SESSION_COMPONENTCURRENTSTATE), propget]
+            MsiInstallState ComponentCurrentState([in] BSTR Component);
+        [id(DISPID_SESSION_COMPONENTREQUESTSTATE), propget]
+            MsiInstallState ComponentRequestState([in] BSTR Component);
+        [id(DISPID_SESSION_COMPONENTREQUESTSTATE), propput]
+            void ComponentRequestState(
+                [in] BSTR Component,
+                [in] MsiInstallState rhs);
+        [id(DISPID_SESSION_SETINSTALLLEVEL)]
+            void SetInstallLevel([in] long Level);
+        [id(DISPID_SESSION_VERIFYDISKSPACE), propget]
+            VARIANT_BOOL VerifyDiskSpace();
+        [id(DISPID_SESSION_PRODUCTPROPERTY), propget]
+            BSTR ProductProperty([in] BSTR Property);
+        [id(DISPID_SESSION_FEATUREINFO), propget]
+            FeatureInfo* FeatureInfo([in] BSTR Feature);
+        [id(DISPID_SESSION_COMPONENTCOSTS), propget]
+            RecordList* ComponentCosts(
+                [in] BSTR Component,
+                [in] MsiInstallState State);
+    };
+
+    typedef enum {
+        msiTransformErrorNone = 0,
+        msiTransformErrorAddExistingRow = 1,
+        msiTransformErrorDeleteNonExistingRow = 2,
+        msiTransformErrorAddExistingTable = 4,
+        msiTransformErrorDeleteNonExistingTable = 8,
+        msiTransformErrorUpdateNonExistingRow = 16,
+        msiTransformErrorChangeCodePage = 32,
+        msiTransformErrorViewTransform = 256
+    } MsiTransformError;
+
+    typedef enum {
+        msiTransformValidationNone = 0,
+        msiTransformValidationLanguage = 1,
+        msiTransformValidationProduct = 2,
+        msiTransformValidationPlatform = 4,
+        msiTransformValidationMajorVer = 8,
+        msiTransformValidationMinorVer = 16,
+        msiTransformValidationUpdateVer = 32,
+        msiTransformValidationLess = 64,
+        msiTransformValidationLessOrEqual = 128,
+        msiTransformValidationEqual = 256,
+        msiTransformValidationGreaterOrEqual = 512,
+        msiTransformValidationGreater = 1024,
+        msiTransformValidationUpgradeCode = 2048
+    } MsiTransformValidation;
 
-    [ uuid(000C109B-0000-0000-C000-000000000046) ]
-    dispinterface SummaryInfo
-    {
+    [
+        uuid(000C109D-0000-0000-C000-000000000046),
+        helpcontext(0x0000251c)
+    ]
+    dispinterface Database {
         properties:
         methods:
-    }
+        [id(DISPID_DATABASE_DATABASESTATE), propget]
+            MsiDatabaseState DatabaseState();
+        [id(DISPID_DATABASE_SUMMARYINFORMATION), propget]
+            SummaryInfo* SummaryInformation([in, optional, defaultvalue(0)] long UpdateCount);
+        [id(DISPID_DATABASE_OPENVIEW)]
+            View* OpenView([in] BSTR Sql);
+        [id(DISPID_DATABASE_COMMIT)]
+            void Commit();
+        [id(DISPID_DATABASE_PRIMARYKEYS), propget]
+            Record* PrimaryKeys([in] BSTR Table);
+        [id(DISPID_DATABASE_IMPORT)]
+            void Import(
+                [in] BSTR Folder,
+                [in] BSTR File);
+        [id(DISPID_DATABASE_EXPORT)]
+            void Export(
+                [in] BSTR Table,
+                [in] BSTR Folder,
+                [in] BSTR File);
+        [id(DISPID_DATABASE_MERGE)]
+            VARIANT_BOOL Merge(
+                [in] Database* Database,
+                [in, optional, defaultvalue("0")] BSTR ErrorTable);
+        [id(DISPID_DATABASE_GENERATETRANSFORM)]
+            VARIANT_BOOL GenerateTransform(
+                [in] Database* ReferenceDatabase,
+                [in, optional, defaultvalue("0")] BSTR TransformFile);
+        [id(DISPID_DATABASE_APPLYTRANSFORM)]
+            void ApplyTransform(
+                [in] BSTR TransformFile,
+                [in] MsiTransformError ErrorConditions);
+        [id(DISPID_DATABASE_ENABLEUIPREVIEW)]
+            UIPreview* EnableUIPreview();
+        [id(DISPID_DATABASE_TABLEPERSISTENT), propget]
+            _MsiEvaluateCondition TablePersistent([in] BSTR Table);
+        [id(DISPID_DATABASE_CREATETRANSFORMSUMMARYINFO)]
+            void CreateTransformSummaryInfo(
+                [in] Database* ReferenceDatabase,
+                [in] BSTR TransformFile,
+                [in] MsiTransformError ErrorConditions,
+                [in] MsiTransformValidation Validation);
+    };
 
-    [ uuid(000C109C-0000-0000-C000-000000000046) ]
-    dispinterface View
-    {
+    [
+        uuid(000C109B-0000-0000-C000-000000000046),
+        helpcontext(0x00002580)
+    ]
+    dispinterface SummaryInfo {
         properties:
         methods:
-    }
+        [id(DISPID_SUMMARYINFO_PROPERTY), propget]
+            VARIANT Property([in] long Pid);
+        [id(DISPID_SUMMARYINFO_PROPERTY), propput]
+            void Property(
+                [in] long Pid,
+                [in] VARIANT rhs);
+        [id(DISPID_SUMMARYINFO_PROPERTYCOUNT), propget]
+            long PropertyCount();
+        [id(DISPID_SUMMARYINFO_PERSIST)]
+            void Persist();
+    };
 
-    [ uuid(000C109D-0000-0000-C000-000000000046) ]
-    dispinterface Database
-    {
+    typedef enum {
+        msiViewModifySeek = -1,
+        msiViewModifyRefresh = 0,
+        msiViewModifyInsert = 1,
+        msiViewModifyUpdate = 2,
+        msiViewModifyAssign = 3,
+        msiViewModifyReplace = 4,
+        msiViewModifyMerge = 5,
+        msiViewModifyDelete = 6,
+        msiViewModifyInsertTemporary = 7,
+        msiViewModifyValidate = 8,
+        msiViewModifyValidateNew = 9,
+        msiViewModifyValidateField = 10,
+        msiViewModifyValidateDelete = 11
+    } _MsiViewModify; /* Added underscore to avoid conflict with MsiViewModify function in msiquery.h */
+
+    typedef enum {
+        msiColumnInfoNames = 0,
+        msiColumnInfoTypes = 1
+    } MsiColumnInfo;
+
+    [
+        uuid(000C109C-0000-0000-C000-000000000046),
+        helpcontext(0x000024b8)
+    ]
+    dispinterface View {
+        properties:
+        methods:
+        [id(DISPID_VIEW_EXECUTE)]
+            void Execute([in, optional, defaultvalue(0)] Record* Params);
+        [id(DISPID_VIEW_FETCH)]
+            Record* Fetch();
+        [id(DISPID_VIEW_MODIFY)]
+            void Modify(
+                [in] _MsiViewModify Mode,
+                Record* Record);
+        [id(DISPID_VIEW_COLUMNINFO), propget]
+            Record* ColumnInfo([in] MsiColumnInfo Info);
+        [id(DISPID_VIEW_CLOSE)]
+            void Close();
+        [id(DISPID_VIEW_GETERROR)]
+            BSTR GetError();
+    };
+
+    [
+        uuid(000C109A-0000-0000-C000-000000000046),
+        helpcontext(0x00002648)
+    ]
+    dispinterface UIPreview {
+        properties:
+        methods:
+        [id(DISPID_UIPREVIEW_PROPERTY), propget]
+            BSTR Property([in] BSTR Name);
+        [id(DISPID_UIPREVIEW_PROPERTY), propput]
+            void Property(
+                [in] BSTR Name,
+                [in] BSTR rhs);
+        [id(DISPID_UIPREVIEW_VIEWDIALOG)]
+            void ViewDialog([in] BSTR Dialog);
+        [id(DISPID_UIPREVIEW_VIEWBILLBOARD)]
+            void ViewBillboard(
+                [in] BSTR Control,
+                [in] BSTR Billboard);
+    };
+
+    [
+        uuid(000C109F-0000-0000-C000-000000000046),
+        helpcontext(0x0000238c)
+    ]
+    dispinterface FeatureInfo {
         properties:
+        [id(DISPID_FEATUREINFO_ATTRIBUTES)]
+            long Attributes;
         methods:
-    }
-
-    [ uuid(000C109E-0000-0000-C000-000000000046) ]
-    dispinterface Session
-    {
-    properties:
-    methods:
-    }
-
-    [ uuid(000C109F-0000-0000-C000-000000000046) ]
-    dispinterface FeatureInfo
-    {
+        [id(DISPID_FEATUREINFO_TITLE), propget]
+            BSTR Title();
+        [id(DISPID_FEATUREINFO_DESCRIPTION), propget]
+            BSTR Description();
+    };
+
+    [
+        uuid(000C1096-0000-0000-C000-000000000046),
+        helpcontext(0x000023f3)
+    ]
+    dispinterface RecordList {
+        properties:
+        methods:
+        [id(DISPID_RECORDLIST__NEWENUM)]
+            IUnknown _NewEnum();
+        [id(DISPID_RECORDLIST_ITEM), propget]
+            Record* Item(long Index);
+        [id(DISPID_RECORDLIST_COUNT), propget]
+            long Count();
+    };
+
+    [
+        uuid(000C1095-0000-0000-C000-000000000046),
+        helpcontext(0x000023f0)
+    ]
+    dispinterface StringList {
         properties:
         methods:
-    }
+        [id(DISPID_STRINGLIST__NEWENUM)]
+            IUnknown _NewEnum();
+        [id(DISPID_STRINGLIST_ITEM), propget]
+            BSTR Item(long Index);
+        [id(DISPID_STRINGLIST_COUNT), propget]
+            long Count();
+    };
 
-    [ uuid(000C10A0-0000-0000-C000-000000000046) ]
-    dispinterface Product
-    {
+    typedef enum {
+        msiInstallSourceTypeUnknown = 0,
+        msiInstallSourceTypeNetwork = 1,
+        msiInstallSourceTypeURL = 2,
+        msiInstallSourceTypeMedia = 4
+    } MsiInstallSourceType;
+
+    [
+        uuid(000C10A0-0000-0000-C000-000000000046),
+        helpcontext(0x00002396)
+    ]
+    dispinterface Product {
         properties:
         methods:
-    }
+        [id(DISPID_PRODUCT_PRODUCTCODE), propget]
+            BSTR ProductCode();
+        [id(DISPID_PRODUCT_USERSID), propget]
+            BSTR UserSid();
+        [id(DISPID_PRODUCT_CONTEXT), propget]
+            MsiInstallContext Context();
+        [id(DISPID_PRODUCT_STATE), propget]
+            MsiInstallState State();
+        [id(DISPID_PRODUCT_INSTALLPROPERTY), propget]
+            BSTR InstallProperty([in] BSTR Name);
+        [id(DISPID_PRODUCT_COMPONENTSTATE), propget]
+            MsiInstallState ComponentState([in] BSTR Component);
+        [id(DISPID_PRODUCT_FEATURESTATE), propget]
+            MsiInstallState FeatureState([in] BSTR Feature);
+        [id(DISPID_PRODUCT_SOURCES), propget]
+            StringList* Sources([in] long SourceType);
+        [id(DISPID_PRODUCT_MEDIADISKS), propget]
+            RecordList* MediaDisks();
+        [id(DISPID_PRODUCT_SOURCELISTADDSOURCE)]
+            void SourceListAddSource(
+                [in] MsiInstallSourceType iSourceType,
+                [in] BSTR Source,
+                [in] long dwIndex);
+        [id(DISPID_PRODUCT_SOURCELISTADDMEDIADISK)]
+            void SourceListAddMediaDisk(
+                [in] long dwDiskId,
+                [in] BSTR VolumeLabel,
+                [in] BSTR DiskPrompt);
+        [id(DISPID_PRODUCT_SOURCELISTCLEARSOURCE)]
+            void SourceListClearSource(
+                [in] MsiInstallSourceType iSourceType,
+                [in] BSTR Source);
+        [id(DISPID_PRODUCT_SOURCELISTCLEARMEDIADISK)]
+            void SourceListClearMediaDisk([in] long iDiskId);
+        [id(DISPID_PRODUCT_SOURCELISTCLEARALL)]
+            void SourceListClearAll([in] MsiInstallSourceType iSourceType);
+        [id(DISPID_PRODUCT_SOURCELISTFORCERESOLUTION)]
+            void SourceListForceResolution();
+        [id(DISPID_PRODUCT_SOURCELISTINFO), propget]
+            BSTR SourceListInfo([in] BSTR Property);
+        [id(DISPID_PRODUCT_SOURCELISTINFO), propput]
+            void SourceListInfo(
+                [in] BSTR Property,
+                [in] BSTR retval);
+    };
 
-    [ uuid(000C10A1-0000-0000-C000-000000000046) ]
-    dispinterface Patch
-    {
+    [
+        uuid(000C10A1-0000-0000-C000-000000000046),
+        helpcontext(0x000023aa)
+    ]
+    dispinterface Patch {
         properties:
         methods:
-    }
-}
+        [id(DISPID_PATCH_PATCHCODE), propget]
+            BSTR PatchCode();
+        [id(DISPID_PATCH_PRODUCTCODE), propget]
+            BSTR ProductCode();
+        [id(DISPID_PATCH_USERSID), propget]
+            BSTR UserSid();
+        [id(DISPID_PATCH_CONTEXT), propget]
+            MsiInstallContext Context();
+        [id(DISPID_PATCH_STATE), propget]
+            MsiInstallState State();
+        [id(DISPID_PATCH_SOURCES), propget]
+            StringList* Sources([in] long SourceType);
+        [id(DISPID_PATCH_MEDIADISKS), propget]
+            RecordList* MediaDisks();
+        [id(DISPID_PATCH_SOURCELISTADDSOURCE)]
+            void SourceListAddSource(
+                [in] MsiInstallSourceType iSourceType,
+                [in] BSTR Source,
+                [in] long dwIndex);
+        [id(DISPID_PATCH_SOURCELISTADDMEDIADISK)]
+            void SourceListAddMediaDisk(
+                [in] long dwDiskId,
+                [in] BSTR VolumeLabel,
+                [in] BSTR DiskPrompt);
+        [id(DISPID_PATCH_SOURCELISTCLEARSOURCE)]
+            void SourceListClearSource(
+                [in] MsiInstallSourceType iSourceType,
+                [in] BSTR Source);
+        [id(DISPID_PATCH_SOURCELISTCLEARMEDIADISK)]
+            void SourceListClearMediaDisk([in] long iDiskId);
+        [id(DISPID_PATCH_SOURCELISTCLEARALL)]
+            void SourceListClearAll([in] MsiInstallSourceType iSourceType);
+        [id(DISPID_PATCH_SOURCELISTFORCERESOLUTION)]
+            void SourceListForceResolution();
+        [id(DISPID_PATCH_SOURCELISTINFO), propget]
+            BSTR SourceListInfo([in] BSTR Property);
+        [id(DISPID_PATCH_SOURCELISTINFO), propput]
+            void SourceListInfo(
+                [in] BSTR Property,
+                [in] BSTR retval);
+        [id(DISPID_PATCH_PATCHPROPERTY), propget]
+            BSTR PatchProperty([in] BSTR Property);
+    };
+
+    typedef enum {
+        msiDatabaseNullInteger = -2147483648
+    } Constants;
+
+    typedef enum {
+        msiOpenDatabaseModeReadOnly = 0,
+        msiOpenDatabaseModeTransact = 1,
+        msiOpenDatabaseModeDirect = 2,
+        msiOpenDatabaseModeCreate = 3,
+        msiOpenDatabaseModeCreateDirect = 4,
+        msiOpenDatabaseModePatchFile = 32
+    } MsiOpenDatabaseMode;
+
+    typedef enum {
+        msiSignatureOptionInvalidHashFatal = 1
+    } MsiSignatureOption;
+};
diff --git a/dlls/msi/msiserver_dispids.h b/dlls/msi/msiserver_dispids.h
new file mode 100644
index 0000000..093efb0
--- /dev/null
+++ b/dlls/msi/msiserver_dispids.h
@@ -0,0 +1,180 @@
+/*
+ * Copyright (C) 2007 Misha Koshelev
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+#define DISPID_INSTALLER_UILEVEL 6
+#define DISPID_INSTALLER_CREATERECORD 1
+#define DISPID_INSTALLER_OPENPACKAGE 2
+#define DISPID_INSTALLER_OPENPRODUCT 3
+#define DISPID_INSTALLER_OPENDATABASE 4
+#define DISPID_INSTALLER_SUMMARYINFORMATION 5
+#define DISPID_INSTALLER_ENABLELOG 7
+#define DISPID_INSTALLER_INSTALLPRODUCT 8
+#define DISPID_INSTALLER_VERSION 9
+#define DISPID_INSTALLER_LASTERRORRECORD 10
+#define DISPID_INSTALLER_REGISTRYVALUE 11
+#define DISPID_INSTALLER_FILEATTRIBUTES 13
+#define DISPID_INSTALLER_FILESIZE 15
+#define DISPID_INSTALLER_FILEVERSION 16
+#define DISPID_INSTALLER_ENVIRONMENT 12
+#define DISPID_INSTALLER_PRODUCTSTATE 17
+#define DISPID_INSTALLER_PRODUCTINFO 18
+#define DISPID_INSTALLER_CONFIGUREPRODUCT 19
+#define DISPID_INSTALLER_REINSTALLPRODUCT 20
+#define DISPID_INSTALLER_COLLECTUSERINFO 21
+#define DISPID_INSTALLER_APPLYPATCH 22
+#define DISPID_INSTALLER_FEATUREPARENT 23
+#define DISPID_INSTALLER_FEATURESTATE 24
+#define DISPID_INSTALLER_USEFEATURE 25
+#define DISPID_INSTALLER_FEATUREUSAGECOUNT 26
+#define DISPID_INSTALLER_FEATUREUSAGEDATE 27
+#define DISPID_INSTALLER_CONFIGUREFEATURE 28
+#define DISPID_INSTALLER_REINSTALLFEATURE 29
+#define DISPID_INSTALLER_PROVIDECOMPONENT 30
+#define DISPID_INSTALLER_COMPONENTPATH 31
+#define DISPID_INSTALLER_PROVIDEQUALIFIEDCOMPONENT 32
+#define DISPID_INSTALLER_QUALIFIERDESCRIPTION 33
+#define DISPID_INSTALLER_COMPONENTQUALIFIERS 34
+#define DISPID_INSTALLER_PRODUCTS 35
+#define DISPID_INSTALLER_FEATURES 36
+#define DISPID_INSTALLER_COMPONENTS 37
+#define DISPID_INSTALLER_COMPONENTCLIENTS 38
+#define DISPID_INSTALLER_PATCHES 39
+#define DISPID_INSTALLER_RELATEDPRODUCTS 40
+#define DISPID_INSTALLER_PATCHINFO 41
+#define DISPID_INSTALLER_PATCHTRANSFORMS 42
+#define DISPID_INSTALLER_ADDSOURCE 43
+#define DISPID_INSTALLER_CLEARSOURCELIST 44
+#define DISPID_INSTALLER_FORCESOURCELISTRESOLUTION 45
+#define DISPID_INSTALLER_GETSHORTCUTTARGET 46
+#define DISPID_INSTALLER_FILEHASH 47
+#define DISPID_INSTALLER_FILESIGNATUREINFO 48
+#define DISPID_INSTALLER_REMOVEPATCHES 49
+#define DISPID_INSTALLER_APPLYMULTIPLEPATCHES 51
+#define DISPID_INSTALLER_PRODUCT 53
+#define DISPID_INSTALLER_PATCH 56
+#define DISPID_INSTALLER_PRODUCTSEX 52
+#define DISPID_INSTALLER_PATCHESEX 55
+#define DISPID_INSTALLER_EXTRACTPATCHXMLDATA 57
+
+#define DISPID_RECORD_STRINGDATA 1
+#define DISPID_RECORD_INTEGERDATA 2
+#define DISPID_RECORD_SETSTREAM 3
+#define DISPID_RECORD_READSTREAM 4
+#define DISPID_RECORD_FIELDCOUNT 0
+#define DISPID_RECORD_ISNULL 6
+#define DISPID_RECORD_DATASIZE 5
+#define DISPID_RECORD_CLEARDATA 7
+#define DISPID_RECORD_FORMATTEXT 8
+
+#define DISPID_SESSION_INSTALLER 1
+#define DISPID_SESSION_PROPERTY 2
+#define DISPID_SESSION_LANGUAGE 3
+#define DISPID_SESSION_MODE 4
+#define DISPID_SESSION_DATABASE 5
+#define DISPID_SESSION_SOURCEPATH 6
+#define DISPID_SESSION_TARGETPATH 7
+#define DISPID_SESSION_DOACTION 8
+#define DISPID_SESSION_SEQUENCE 9
+#define DISPID_SESSION_EVALUATECONDITION 10
+#define DISPID_SESSION_FORMATRECORD 11
+#define DISPID_SESSION_MESSAGE 12
+#define DISPID_SESSION_FEATURECURRENTSTATE 13
+#define DISPID_SESSION_FEATUREREQUESTSTATE 14
+#define DISPID_SESSION_FEATUREVALIDSTATES 15
+#define DISPID_SESSION_FEATURECOST 16
+#define DISPID_SESSION_COMPONENTCURRENTSTATE 17
+#define DISPID_SESSION_COMPONENTREQUESTSTATE 18
+#define DISPID_SESSION_SETINSTALLLEVEL 19
+#define DISPID_SESSION_VERIFYDISKSPACE 20
+#define DISPID_SESSION_PRODUCTPROPERTY 21
+#define DISPID_SESSION_FEATUREINFO 22
+#define DISPID_SESSION_COMPONENTCOSTS 23
+
+#define DISPID_DATABASE_DATABASESTATE 1
+#define DISPID_DATABASE_SUMMARYINFORMATION 2
+#define DISPID_DATABASE_OPENVIEW 3
+#define DISPID_DATABASE_COMMIT 4
+#define DISPID_DATABASE_PRIMARYKEYS 5
+#define DISPID_DATABASE_IMPORT 6
+#define DISPID_DATABASE_EXPORT 7
+#define DISPID_DATABASE_MERGE 8
+#define DISPID_DATABASE_GENERATETRANSFORM 9
+#define DISPID_DATABASE_APPLYTRANSFORM 10
+#define DISPID_DATABASE_ENABLEUIPREVIEW 11
+#define DISPID_DATABASE_TABLEPERSISTENT 12
+#define DISPID_DATABASE_CREATETRANSFORMSUMMARYINFO 13
+
+#define DISPID_SUMMARYINFO_PROPERTY 1
+#define DISPID_SUMMARYINFO_PROPERTYCOUNT 2
+#define DISPID_SUMMARYINFO_PERSIST 3
+
+#define DISPID_VIEW_EXECUTE 1
+#define DISPID_VIEW_FETCH 2
+#define DISPID_VIEW_MODIFY 3
+#define DISPID_VIEW_COLUMNINFO 5
+#define DISPID_VIEW_CLOSE 4
+#define DISPID_VIEW_GETERROR 6
+
+#define DISPID_UIPREVIEW_PROPERTY 1
+#define DISPID_UIPREVIEW_VIEWDIALOG 2
+#define DISPID_UIPREVIEW_VIEWBILLBOARD 3
+
+#define DISPID_FEATUREINFO_ATTRIBUTES 3
+#define DISPID_FEATUREINFO_TITLE 1
+#define DISPID_FEATUREINFO_DESCRIPTION 2
+
+#define DISPID_RECORDLIST__NEWENUM -4
+#define DISPID_RECORDLIST_ITEM 0
+#define DISPID_RECORDLIST_COUNT 1
+
+#define DISPID_STRINGLIST__NEWENUM -4
+#define DISPID_STRINGLIST_ITEM 0
+#define DISPID_STRINGLIST_COUNT 1
+
+#define DISPID_PRODUCT_PRODUCTCODE 1
+#define DISPID_PRODUCT_USERSID 2
+#define DISPID_PRODUCT_CONTEXT 3
+#define DISPID_PRODUCT_STATE 4
+#define DISPID_PRODUCT_INSTALLPROPERTY 5
+#define DISPID_PRODUCT_COMPONENTSTATE 6
+#define DISPID_PRODUCT_FEATURESTATE 7
+#define DISPID_PRODUCT_SOURCES 14
+#define DISPID_PRODUCT_MEDIADISKS 15
+#define DISPID_PRODUCT_SOURCELISTADDSOURCE 8
+#define DISPID_PRODUCT_SOURCELISTADDMEDIADISK 9
+#define DISPID_PRODUCT_SOURCELISTCLEARSOURCE 10
+#define DISPID_PRODUCT_SOURCELISTCLEARMEDIADISK 11
+#define DISPID_PRODUCT_SOURCELISTCLEARALL 12
+#define DISPID_PRODUCT_SOURCELISTFORCERESOLUTION 13
+#define DISPID_PRODUCT_SOURCELISTINFO 16
+
+#define DISPID_PATCH_PATCHCODE 1
+#define DISPID_PATCH_PRODUCTCODE 2
+#define DISPID_PATCH_USERSID 3
+#define DISPID_PATCH_CONTEXT 4
+#define DISPID_PATCH_STATE 5
+#define DISPID_PATCH_SOURCES 12
+#define DISPID_PATCH_MEDIADISKS 13
+#define DISPID_PATCH_SOURCELISTADDSOURCE 6
+#define DISPID_PATCH_SOURCELISTADDMEDIADISK 7
+#define DISPID_PATCH_SOURCELISTCLEARSOURCE 8
+#define DISPID_PATCH_SOURCELISTCLEARMEDIADISK 9
+#define DISPID_PATCH_SOURCELISTCLEARALL 10
+#define DISPID_PATCH_SOURCELISTFORCERESOLUTION 11
+#define DISPID_PATCH_SOURCELISTINFO 14
+#define DISPID_PATCH_PATCHPROPERTY 15
-- 
1.4.1



More information about the wine-patches mailing list