msi: Expand IDL file to contain all OLE automation interfaces. [PATCH 1/3]

Misha Koshelev mk144210 at bcm.tmc.edu
Sat Feb 24 00:26:16 CST 2007


This patch is the first in a series of three patches that fixes bug
#7357, adds completed support for JScript and VBScript execution from
MSI (actions 5&37 tested), and adds an initial partial (but easily
extensible) implementation of the OLE automation classes for MSI which
are basically wrappers around functions wine MSI already provides.

According to the MSDN, MSI does not provide JScript/VBScript support,
and any installers that use this must install Microsoft Script, thus
although wine does not implement scripting, this should not be a problem
as installers should install Microsoft Script on their own if they are
going to use it in MSI (and Vector NTI does). Microsoft Script 5.6
requires mfc42.dll to install properly though (fill in registry keys
including a program id for Scriptable.Dictionary), so installers that
used this would need to have mfc42.dll present.

Changelog:

	* msi: Expand IDL file to contain all OLE automation interfaces.
-------------- next part --------------
From ace5c7ed5707a03a47bfd4c6387c1c704689a501 Mon Sep 17 00:00:00 2001
From: Misha Koshelev <mk144210 at bcm.tmc.edu>
Date: Fri, 23 Feb 2007 20:02:01 -0600
Subject: msi: Expand IDL file to contain all OLE automation interfaces.
---
 dlls/msi/msiserver.idl |  917 +++++++++++++++++++++++++++++++++++++++++++++---
 1 files changed, 857 insertions(+), 60 deletions(-)

diff --git a/dlls/msi/msiserver.idl b/dlls/msi/msiserver.idl
index 9966d90..02def8e 100644
--- a/dlls/msi/msiserver.idl
+++ b/dlls/msi/msiserver.idl
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2007 Mike McCormack
+ *                    Misha Koshelev
  *
  * This library is free software; you can redistribute it and/or
  * modify it under the terms of the GNU Lesser General Public
@@ -21,9 +22,16 @@ 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)
+]
 library WindowsInstaller
 {
+    /* TLib : */    /* TLib : OLE Automation : {00020430-0000-0000-C000-000000000046} */
+    importlib("stdole2.tlb");
+
+    /* Forward declare all types defined in this typelib */
     dispinterface Installer;
     dispinterface Record;
     dispinterface Session;
@@ -37,87 +45,876 @@ 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
-    {
+    /* All enumerations */
+
+    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 {
+        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 {
+        msiDatabaseStateRead = 0,
+        msiDatabaseStateWrite = 1
+    } MsiDatabaseState;
+
+    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;
+
+    typedef
+    enum {
+        msiTransformErrorNone = 0,
+        msiTransformErrorAddExistingRow = 1,
+        msiTransformErrorDeleteNonExistingRow = 2,
+        msiTransformErrorAddExistingTable = 4,
+        msiTransformErrorDeleteNonExistingTable = 8,
+        msiTransformErrorUpdateNonExistingRow = 16,
+        msiTransformErrorChangeCodePage = 32,
+        msiTransformErrorViewTransform = 256
+    } MsiTransformError;
+
+    typedef
+    enum {
+        msiEvaluateConditionFalse = 0,
+        msiEvaluateConditionTrue = 1,
+        msiEvaluateConditionNone = 2,
+        msiEvaluateConditionError = 3
+    } _MsiEvaluateCondition;  /* Added underscore to avoid conflict with function name */
+
+    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;
+
+    typedef
+    enum {
+        msiDoActionStatusNoAction = 0,
+        msiDoActionStatusSuccess = 1,
+        msiDoActionStatusUserExit = 2,
+        msiDoActionStatusFailure = 3,
+        msiDoActionStatusSuspend = 4,
+        msiDoActionStatusFinished = 5,
+        msiDoActionStatusWrongState = 6,
+        msiDoActionStatusBadActionData = 7
+    } MsiDoActionStatus;
+
+    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 {
+        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 {
+        msiCostTreeSelfOnly = 0,
+        msiCostTreeChildren = 1,
+        msiCostTreeParents = 2
+    } MsiCostTree;
+
+    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 {
+        msiInstallContextFirstVisible = 0,
+        msiInstallContextUserManaged = 1,
+        msiInstallContextUser = 2,
+        msiInstallContextMachine = 4,
+        msiInstallContextAllUserManaged = 8
+    } MsiInstallContext;
+
+    typedef
+    enum {
+        msiInstallSourceTypeUnknown = 0,
+        msiInstallSourceTypeNetwork = 1,
+        msiInstallSourceTypeURL = 2,
+        msiInstallSourceTypeMedia = 4
+    } MsiInstallSourceType;
+
+    typedef enum {
+	  msiDatabaseNullInteger = 0x80000000 /* -2147483648 from oleview, but widl makes it into two "-"'s 
+					       * which screws up msiserver.h */
+    } Constants;
+
+    typedef
+    enum {
+        msiOpenDatabaseModeReadOnly = 0,
+        msiOpenDatabaseModeTransact = 1,
+        msiOpenDatabaseModeDirect = 2,
+        msiOpenDatabaseModeCreate = 3,
+        msiOpenDatabaseModeCreateDirect = 4,
+        msiOpenDatabaseModePatchFile = 32
+    } MsiOpenDatabaseMode;
+
+    typedef
+    enum {
+        msiSignatureOptionInvalidHashFatal = 1
+    } MsiSignatureOption;
+
+    /*
+     * Now the interfaces.
+     */
+
+    [
+      uuid(000C1090-0000-0000-C000-000000000046),
+    ]
+    dispinterface Installer {
+        properties:
+            [id(0x00000006)]
+            MsiUILevel UILevel;
+        methods:
+            [id(0x00000001)]
+            Record* CreateRecord([in] long Count);
+            [id(0x00000002)]
+            Session* OpenPackage(
+                            [in] VARIANT PackagePath, 
+                            [in, optional, defaultvalue(0)] long Options);
+            [id(0x00000003)]
+            Session* OpenProduct([in] BSTR ProductCode);
+            [id(0x00000004)]
+            Database* OpenDatabase(
+                            [in] BSTR DatabasePath, 
+                            [in] VARIANT OpenMode);
+            [id(0x00000005), propget]
+            SummaryInfo* SummaryInformation(
+                            [in] BSTR PackagePath, 
+                            [in, optional, defaultvalue(0)] long UpdateCount);
+            [id(0x00000007)]
+            void EnableLog(
+                            [in] BSTR LogMode, 
+                            [in] BSTR LogFile);
+            [id(0x00000008)]
+            void InstallProduct(
+                            [in] BSTR PackagePath, 
+                            [in, optional, defaultvalue("0")] BSTR PropertyValues);
+            [id(0x00000009), propget]
+            BSTR Version();
+            [id(0x0000000a)]
+            Record* LastErrorRecord();
+            [id(0x0000000b)]
+            BSTR RegistryValue(
+                            [in] VARIANT Root, 
+                            [in] BSTR Key, 
+                            [in, optional] VARIANT Value);
+            [id(0x0000000d)]
+            long FileAttributes([in] BSTR FilePath);
+            [id(0x0000000f)]
+            long FileSize([in] BSTR FilePath);
+            [id(0x00000010)]
+            BSTR FileVersion(
+                            [in] BSTR FilePath, 
+                            [in, optional] VARIANT Language);
+            [id(0x0000000c), propget]
+            BSTR Environment([in] BSTR Variable);
+            [id(0x0000000c), propput]
+            void Environment(
+                            [in] BSTR Variable, 
+                            [in] BSTR rhs);
+            [id(0x00000011), propget]
+            MsiInstallState ProductState([in] BSTR Product);
+            [id(0x00000012), propget]
+            BSTR ProductInfo(
+                            [in] BSTR Product, 
+                            [in] BSTR Attribute);
+            [id(0x00000013)]
+            void ConfigureProduct(
+                            [in] BSTR Product, 
+                            [in] long InstallLevel, 
+                            [in] MsiInstallState InstallState);
+            [id(0x00000014)]
+            void ReinstallProduct(
+                            [in] BSTR Product, 
+                            [in] MsiReinstallMode ReinstallMode);
+            [id(0x00000015)]
+            void CollectUserInfo([in] BSTR Product);
+            [id(0x00000016)]
+            void ApplyPatch(
+                            [in] BSTR PatchPackage, 
+                            [in] BSTR InstallPackage, 
+                            [in] MsiInstallType InstallType, 
+                            [in] BSTR CommandLine);
+            [id(0x00000017), propget]
+            BSTR FeatureParent(
+                            [in] BSTR Product, 
+                            [in] BSTR Feature);
+            [id(0x00000018), propget]
+            MsiInstallState FeatureState(
+                            [in] BSTR Product, 
+                            [in] BSTR Feature);
+            [id(0x00000019)]
+            void UseFeature(
+                            [in] BSTR Product, 
+                            [in] BSTR Feature, 
+                            [in] MsiInstallMode InstallMode);
+            [id(0x0000001a), propget]
+            long FeatureUsageCount(
+                            [in] BSTR Product, 
+                            [in] BSTR Feature);
+            [id(0x0000001b), propget]
+            DATE FeatureUsageDate(
+                            [in] BSTR Product, 
+                            [in] BSTR Feature);
+            [id(0x0000001c)]
+            void ConfigureFeature(
+                            [in] BSTR Product, 
+                            [in] BSTR Feature, 
+                            [in] MsiInstallState InstallState);
+            [id(0x0000001d)]
+            void ReinstallFeature(
+                            [in] BSTR Product, 
+                            [in] BSTR Feature, 
+                            [in] MsiReinstallMode ReinstallMode);
+            [id(0x0000001e)]
+            BSTR ProvideComponent(
+                            [in] BSTR Product, 
+                            [in] BSTR Feature, 
+                            [in] BSTR Component, 
+                            [in] long InstallMode);
+            [id(0x0000001f), propget]
+            BSTR ComponentPath(
+                            [in] BSTR Product, 
+                            [in] BSTR Component);
+            [id(0x00000020)]
+            BSTR ProvideQualifiedComponent(
+                            [in] BSTR Category, 
+                            [in] BSTR Qualifier, 
+                            [in] long InstallMode);
+            [id(0x00000021), propget]
+            BSTR QualifierDescription(
+                            [in] BSTR Category, 
+                            [in] BSTR Qualifier);
+            [id(0x00000022), propget]
+            StringList* ComponentQualifiers([in] BSTR Category);
+            [id(0x00000023), propget]
+            StringList* Products();
+            [id(0x00000024), propget]
+            StringList* Features([in] BSTR Product);
+            [id(0x00000025), propget]
+            StringList* Components();
+            [id(0x00000026), propget]
+            StringList* ComponentClients([in] BSTR Component);
+            [id(0x00000027), propget]
+            StringList* Patches([in] BSTR Product);
+            [id(0x00000028), propget]
+            StringList* RelatedProducts([in] BSTR UpgradeCode);
+            [id(0x00000029), propget]
+            BSTR PatchInfo(
+                            [in] BSTR Patch, 
+                            [in] BSTR Attribute);
+            [id(0x0000002a), propget]
+            BSTR PatchTransforms(
+                            [in] BSTR Product, 
+                            [in] BSTR Patch);
+            [id(0x0000002b)]
+            void AddSource(
+                            [in] BSTR Product, 
+                            [in] BSTR User, 
+                            [in] BSTR Source);
+            [id(0x0000002c)]
+            void ClearSourceList(
+                            [in] BSTR Product, 
+                            [in] BSTR User);
+            [id(0x0000002d)]
+            void ForceSourceListResolution(
+                            [in] BSTR Product, 
+                            [in] BSTR User);
+            [id(0x0000002e), propget]
+            Record* GetShortcutTarget([in] BSTR ShortcutPath);
+            [id(0x0000002f)]
+            Record* FileHash(
+                            [in] BSTR FilePath, 
+                            [in] long Options);
+            [id(0x00000030)]
+            SAFEARRAY(unsigned char) FileSignatureInfo(
+                            [in] BSTR FilePath, 
+                            [in] long Options, 
+                            [in] MsiSignatureInfo Format);
+            [id(0x00000031)]
+            void RemovePatches(
+                            [in] BSTR PatchList, 
+                            [in] BSTR Product, 
+                            [in] MsiInstallType UninstallType, 
+                            [in, optional, defaultvalue("0")] BSTR PropertyList);
+            [id(0x00000033)]
+            void ApplyMultiplePatches(
+                            [in] BSTR PatchPackage, 
+                            [in] BSTR Product, 
+                            [in] BSTR PropertiesList);
+            [id(0x00000035), propget]
+            HRESULT Product(
+                            [in] BSTR Product, 
+                            [in] BSTR UserSid, 
+                            [in] MsiInstallContext iContext, 
+                            [out, retval] Product** retval);
+            [id(0x00000038), propget]
+            HRESULT Patch(
+                            [in] BSTR PatchCode, 
+                            [in] BSTR ProductCode, 
+                            [in] BSTR UserSid, 
+                            [in] MsiInstallContext iContext, 
+                            [out, retval] Patch** retval);
+            [id(0x00000034), propget]
+            RecordList* ProductsEx(
+                            [in] BSTR Product, 
+                            [in] BSTR UserSid, 
+                            [in] long Contexts);
+            [id(0x00000037), propget]
+            RecordList* PatchesEx(
+                            [in] BSTR Product, 
+                            [in] BSTR UserSid, 
+                            [in] long Contexts, 
+                            [in] long filter);
+            [id(0x00000039)]
+            BSTR ExtractPatchXMLData([in] BSTR PatchPath);
+    };
+
+
+    [
+      uuid(000C1093-0000-0000-C000-000000000046)
+    ]
+    dispinterface Record {
+        properties:
+        methods:
+            [id(0x00000001), propget]
+            BSTR StringData([in] long Field);
+            [id(0x00000001), propput]
+            void StringData(
+                            [in] long Field, 
+                            [in] BSTR rhs);
+            [id(0x00000002), propget]
+            long IntegerData([in] long Field);
+            [id(0x00000002), propput]
+            void IntegerData(
+                            [in] long Field, 
+                            [in] long rhs);
+            [id(0x00000003)]
+            void SetStream(
+                            [in] long Field, 
+                            [in] BSTR FilePath);
+            [id(0x00000004)]
+            BSTR ReadStream(
+                            [in] long Field, 
+                            [in] long Length, 
+                            [in] MsiReadStream Format);
+            [id(00000000), propget]
+            long FieldCount();
+            [id(0x00000006), propget]
+            VARIANT_BOOL IsNull([in] long Field);
+            [id(0x00000005), propget]
+            long DataSize([in] long Field);
+            [id(0x00000007)]
+            void ClearData();
+            [id(0x00000008)]
+            BSTR FormatText();
+    };
+
+
+    [
+      uuid(000C109E-0000-0000-C000-000000000046)
+    ]
+    dispinterface Session {
         properties:
         methods:
-    }
+            [id(0x00000001), propget]
+            Installer* Installer();
+            [id(0x00000002), propget]
+            BSTR Property([in] BSTR Name);
+            [id(0x00000002), propput]
+            void Property(
+                            [in] BSTR Name, 
+                            [in] BSTR rhs);
+            [id(0x00000003), propget]
+            long Language();
+            [id(0x00000004), propget]
+            VARIANT_BOOL Mode([in] MsiRunMode Flag);
+            [id(0x00000004), propput]
+            void Mode(
+                            [in] MsiRunMode Flag, 
+                            [in] VARIANT_BOOL rhs);
+            [id(0x00000005), propget]
+            Database* Database();
+            [id(0x00000006), propget]
+            BSTR SourcePath([in] BSTR Folder);
+            [id(0x00000007), propget]
+            BSTR TargetPath([in] BSTR Folder);
+            [id(0x00000007), propput]
+            void TargetPath(
+                            [in] BSTR Folder, 
+                            [in] BSTR rhs);
+            [id(0x00000008)]
+            MsiDoActionStatus DoAction([in] BSTR Action);
+            [id(0x00000009)]
+            MsiDoActionStatus Sequence(
+                            [in] BSTR Table, 
+                            [in, optional] VARIANT Mode);
+            [id(0x0000000a)]
+            _MsiEvaluateCondition EvaluateCondition([in] BSTR Expression);
+            [id(0x0000000b)]
+            BSTR FormatRecord([in] Record* Record);
+            [id(0x0000000c)]
+            MsiMessageStatus Message(
+                            [in] MsiMessageType Kind, 
+                            [in] Record* Record);
+            [id(0x0000000d), propget]
+            MsiInstallState FeatureCurrentState([in] BSTR Feature);
+            [id(0x0000000e), propget]
+            MsiInstallState FeatureRequestState([in] BSTR Feature);
+            [id(0x0000000e), propput]
+            void FeatureRequestState(
+                            [in] BSTR Feature, 
+                            [in] MsiInstallState rhs);
+            [id(0x0000000f), propget]
+            long FeatureValidStates([in] BSTR Feature);
+            [id(0x00000010), propget]
+            long FeatureCost(
+                            [in] BSTR Feature, 
+                            [in] MsiCostTree CostTree, 
+                            [in] MsiInstallState State);
+            [id(0x00000011), propget]
+            MsiInstallState ComponentCurrentState([in] BSTR Component);
+            [id(0x00000012), propget]
+            MsiInstallState ComponentRequestState([in] BSTR Component);
+            [id(0x00000012), propput]
+            void ComponentRequestState(
+                            [in] BSTR Component, 
+                            [in] MsiInstallState rhs);
+            [id(0x00000013)]
+            void SetInstallLevel([in] long Level);
+            [id(0x00000014), propget]
+            VARIANT_BOOL VerifyDiskSpace();
+            [id(0x00000015), propget]
+            BSTR ProductProperty([in] BSTR Property);
+            [id(0x00000016), propget]
+            FeatureInfo* FeatureInfo([in] BSTR Feature);
+            [id(0x00000017), propget]
+            RecordList* ComponentCosts(
+                            [in] BSTR Component, 
+                            [in] MsiInstallState State);
+    };
 
-    [ uuid(000C1096-0000-0000-C000-000000000046) ]
-    dispinterface RecordList
-    {
+
+    [
+      uuid(000C109D-0000-0000-C000-000000000046)
+    ]
+    dispinterface Database {
         properties:
         methods:
-    }
+            [id(0x00000001), propget]
+            MsiDatabaseState DatabaseState();
+            [id(0x00000002), propget]
+            SummaryInfo* SummaryInformation([in, optional, defaultvalue(0)] long UpdateCount);
+            [id(0x00000003)]
+            View* OpenView([in] BSTR Sql);
+            [id(0x00000004)]
+            void Commit();
+            [id(0x00000005), propget]
+            Record* PrimaryKeys([in] BSTR Table);
+            [id(0x00000006)]
+            void Import(
+                            [in] BSTR Folder, 
+                            [in] BSTR File);
+            [id(0x00000007)]
+            void Export(
+                            [in] BSTR Table, 
+                            [in] BSTR Folder, 
+                            [in] BSTR File);
+            [id(0x00000008)]
+            VARIANT_BOOL Merge(
+                            [in] Database* Database, 
+                            [in, optional, defaultvalue("0")] BSTR ErrorTable);
+            [id(0x00000009)]
+            VARIANT_BOOL GenerateTransform(
+                            [in] Database* ReferenceDatabase, 
+                            [in, optional, defaultvalue("0")] BSTR TransformFile);
+            [id(0x0000000a)]
+            void ApplyTransform(
+                            [in] BSTR TransformFile, 
+                            [in] MsiTransformError ErrorConditions);
+            [id(0x0000000b)]
+            UIPreview* EnableUIPreview();
+            [id(0x0000000c), propget]
+            _MsiEvaluateCondition TablePersistent([in] BSTR Table);
+            [id(0x0000000d)]
+            void CreateTransformSummaryInfo(
+                            [in] Database* ReferenceDatabase, 
+                            [in] BSTR TransformFile, 
+                            [in] MsiTransformError ErrorConditions, 
+                            [in] MsiTransformValidation Validation);
+    };
+
 
-    [ uuid(000C109A-0000-0000-C000-000000000046) ]
-    dispinterface UIPreview
-    {
+    [
+      uuid(000C109B-0000-0000-C000-000000000046)
+    ]
+    dispinterface SummaryInfo {
         properties:
         methods:
-    }
+            [id(0x00000001), propget]
+            VARIANT Property([in] long Pid);
+            [id(0x00000001), propput]
+            void Property(
+                            [in] long Pid, 
+                            [in] VARIANT rhs);
+            [id(0x00000002), propget]
+            long PropertyCount();
+            [id(0x00000003)]
+            void Persist();
+    };
 
-    [ uuid(000C109B-0000-0000-C000-000000000046) ]
-    dispinterface SummaryInfo
-    {
+    [
+      uuid(000C109C-0000-0000-C000-000000000046)
+    ]
+    dispinterface View {
         properties:
         methods:
-    }
+            [id(0x00000001)]
+            void Execute([in, optional, defaultvalue(0)] Record* Params);
+            [id(0x00000002)]
+            Record* Fetch();
+            [id(0x00000003)]
+            void Modify(
+                            [in] _MsiViewModify Mode, 
+                            Record* Record);
+            [id(0x00000005), propget]
+            Record* ColumnInfo([in] MsiColumnInfo Info);
+            [id(0x00000004)]
+            void Close();
+            [id(0x00000006)]
+            BSTR GetError();
+    };
 
-    [ uuid(000C109C-0000-0000-C000-000000000046) ]
-    dispinterface View
-    {
+    [
+      uuid(000C109A-0000-0000-C000-000000000046)
+    ]
+    dispinterface UIPreview {
         properties:
         methods:
-    }
+            [id(0x00000001), propget]
+            BSTR Property([in] BSTR Name);
+            [id(0x00000001), propput]
+            void Property(
+                            [in] BSTR Name, 
+                            [in] BSTR rhs);
+            [id(0x00000002)]
+            void ViewDialog([in] BSTR Dialog);
+            [id(0x00000003)]
+            void ViewBillboard(
+                            [in] BSTR Control, 
+                            [in] BSTR Billboard);
+    };
 
-    [ uuid(000C109D-0000-0000-C000-000000000046) ]
-    dispinterface Database
-    {
+    [
+      uuid(000C109F-0000-0000-C000-000000000046)
+    ]
+    dispinterface FeatureInfo {
         properties:
+            [id(0x00000003)]
+            long Attributes;
         methods:
-    }
-
-    [ uuid(000C109E-0000-0000-C000-000000000046) ]
-    dispinterface Session
-    {
-    properties:
-    methods:
-    }
-
-    [ uuid(000C109F-0000-0000-C000-000000000046) ]
-    dispinterface FeatureInfo
-    {
+            [id(0x00000001), propget]
+            BSTR Title();
+            [id(0x00000002), propget]
+            BSTR Description();
+    };
+
+    [
+      uuid(000C1096-0000-0000-C000-000000000046)
+    ]
+    dispinterface RecordList {
         properties:
         methods:
-    }
+            [id(0xfffffffc)]
+            IUnknown* _NewEnum();
+            [id(00000000), propget]
+            Record* Item(long Index);
+            [id(0x00000001), propget]
+            long Count();
+    };
 
-    [ uuid(000C10A0-0000-0000-C000-000000000046) ]
-    dispinterface Product
-    {
+
+    [
+      uuid(000C1095-0000-0000-C000-000000000046)
+    ]
+    dispinterface StringList {
         properties:
         methods:
-    }
+            [id(0xfffffffc)]
+            IUnknown* _NewEnum();
+            [id(00000000), propget]
+            BSTR Item(long Index);
+            [id(0x00000001), propget]
+            long Count();
+    };
 
-    [ uuid(000C10A1-0000-0000-C000-000000000046) ]
-    dispinterface Patch
-    {
+    [
+      uuid(000C10A0-0000-0000-C000-000000000046)
+    ]
+    dispinterface Product {
         properties:
         methods:
-    }
-}
+            [id(0x00000001), propget]
+            HRESULT ProductCode([out, retval] BSTR* retval);
+            [id(0x00000002), propget]
+            HRESULT UserSid([out, retval] BSTR* retval);
+            [id(0x00000003), propget]
+            HRESULT Context([out, retval] MsiInstallContext* retval);
+            [id(0x00000004), propget]
+            HRESULT State([out, retval] MsiInstallState* retval);
+            [id(0x00000005), propget]
+            HRESULT InstallProperty(
+                            [in] BSTR Name, 
+                            [out, retval] BSTR* retval);
+            [id(0x00000006), propget]
+            HRESULT ComponentState(
+                            [in] BSTR Component, 
+                            [out, retval] MsiInstallState* retval);
+            [id(0x00000007), propget]
+            HRESULT FeatureState(
+                            [in] BSTR Feature, 
+                            [out, retval] MsiInstallState* retval);
+            [id(0x0000000e), propget]
+            HRESULT Sources(
+                            [in] long SourceType, 
+                            [out, retval] StringList** retval);
+            [id(0x0000000f), propget]
+            HRESULT MediaDisks([out, retval] RecordList** retval);
+            [id(0x00000008)]
+            HRESULT SourceListAddSource(
+                            [in] MsiInstallSourceType iSourceType, 
+                            [in] BSTR Source, 
+                            [in] long dwIndex);
+            [id(0x00000009)]
+            HRESULT SourceListAddMediaDisk(
+                            [in] long dwDiskId, 
+                            [in] BSTR VolumeLabel, 
+                            [in] BSTR DiskPrompt);
+            [id(0x0000000a)]
+            HRESULT SourceListClearSource(
+                            [in] MsiInstallSourceType iSourceType, 
+                            [in] BSTR Source);
+            [id(0x0000000b)]
+            HRESULT SourceListClearMediaDisk([in] long iDiskId);
+            [id(0x0000000c)]
+            HRESULT SourceListClearAll([in] MsiInstallSourceType iSourceType);
+            [id(0x0000000d)]
+            HRESULT SourceListForceResolution();
+            [id(0x00000010), propget]
+            HRESULT SourceListInfo(
+                            [in] BSTR Property, 
+                            [out, retval] BSTR* retval);
+            [id(0x00000010), propput]
+            HRESULT SourceListInfo(
+                            [in] BSTR Property, 
+                            [in] BSTR retval);
+    };
+
+
+    [
+      uuid(000C10A1-0000-0000-C000-000000000046)
+    ]
+    dispinterface Patch {
+        properties:
+        methods:
+            [id(0x00000001), propget]
+            HRESULT PatchCode([out, retval] BSTR* retval);
+            [id(0x00000002), propget]
+            HRESULT ProductCode([out, retval] BSTR* retval);
+            [id(0x00000003), propget]
+            HRESULT UserSid([out, retval] BSTR* retval);
+            [id(0x00000004), propget]
+            HRESULT Context([out, retval] MsiInstallContext* retval);
+            [id(0x00000005), propget]
+            HRESULT State([out, retval] MsiInstallState* retval);
+            [id(0x0000000c), propget]
+            HRESULT Sources(
+                            [in] long SourceType, 
+                            [out, retval] StringList** retval);
+            [id(0x0000000d), propget]
+            HRESULT MediaDisks([out, retval] RecordList** retval);
+            [id(0x00000006)]
+            HRESULT SourceListAddSource(
+                            [in] MsiInstallSourceType iSourceType, 
+                            [in] BSTR Source, 
+                            [in] long dwIndex);
+            [id(0x00000007)]
+            HRESULT SourceListAddMediaDisk(
+                            [in] long dwDiskId, 
+                            [in] BSTR VolumeLabel, 
+                            [in] BSTR DiskPrompt);
+            [id(0x00000008)]
+            HRESULT SourceListClearSource(
+                            [in] MsiInstallSourceType iSourceType, 
+                            [in] BSTR Source);
+            [id(0x00000009)]
+            HRESULT SourceListClearMediaDisk([in] long iDiskId);
+            [id(0x0000000a)]
+            HRESULT SourceListClearAll([in] MsiInstallSourceType iSourceType);
+            [id(0x0000000b)]
+            HRESULT SourceListForceResolution();
+            [id(0x0000000e), propget]
+            HRESULT SourceListInfo(
+                            [in] BSTR Property, 
+                            [out, retval] BSTR* retval);
+            [id(0x0000000e), propput]
+            HRESULT SourceListInfo(
+                            [in] BSTR Property, 
+                            [in] BSTR retval);
+            [id(0x0000000f), propget]
+            HRESULT PatchProperty(
+                            [in] BSTR Property, 
+                            [out, retval] BSTR* Value);
+    };
+};
+
+
+
-- 
1.4.1



More information about the wine-patches mailing list