msi: Expand IDL file to contain XP automation interfaces.

Misha Koshelev mk144210 at bcm.tmc.edu
Mon Feb 26 20:00:44 CST 2007


This applies on top of my other msi patches. This expands the IDL file
to contain all the OLE automation interfaces that are present in Windows
XP MS Installer that are not contained in the Windows 98 freely
downloadable MS Installer.

Changelog:

	* msi: Expand IDL file to contain XP automation interfaces.
-------------- next part --------------
From 50a5e7b67c07e68dfb7bda121a7922292854290b Mon Sep 17 00:00:00 2001
From: Misha Koshelev <mk144210 at bcm.tmc.edu>
Date: Mon, 26 Feb 2007 19:58:50 -0600
Subject: msi: Expand IDL file to contain XP automation interfaces.
---
 dlls/msi/msiserver.idl       |  177 ++++++++++++++++++++++++++++++++++++++++++
 dlls/msi/msiserver_dispids.h |   40 +++++++++
 2 files changed, 215 insertions(+), 2 deletions(-)

diff --git a/dlls/msi/msiserver.idl b/dlls/msi/msiserver.idl
index 136242d..1931d27 100644
--- a/dlls/msi/msiserver.idl
+++ b/dlls/msi/msiserver.idl
@@ -42,6 +42,8 @@ library WindowsInstaller
     dispinterface FeatureInfo;
     dispinterface RecordList;
     dispinterface StringList;
+    dispinterface Product;
+    dispinterface Patch;
     
     typedef enum {
         msiUILevelNoChange = 0,
@@ -127,6 +129,14 @@ library WindowsInstaller
         msiRunModeCommit = 18
     } MsiRunMode;
 
+    typedef enum {
+        msiInstallContextFirstVisible = 0,
+        msiInstallContextUserManaged = 1,
+        msiInstallContextUser = 2,
+        msiInstallContextMachine = 4,
+        msiInstallContextAllUserManaged = 8
+    } MsiInstallContext;
+
     [
         uuid(000C1090-0000-0000-C000-000000000046),
         helpcontext(0x00002328)
@@ -300,6 +310,43 @@ library WindowsInstaller
                 [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]
+            HRESULT Product(
+                [in] BSTR Product, 
+                [in] BSTR UserSid, 
+                [in] MsiInstallContext iContext, 
+                [out, retval] Product** retval);
+        [id(DISPID_INSTALLER_PATCH), propget]
+            HRESULT Patch(
+                [in] BSTR PatchCode, 
+                [in] BSTR ProductCode, 
+                [in] BSTR UserSid, 
+                [in] MsiInstallContext iContext, 
+                [out, retval] Patch** retval);
+        [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);
     };
 
     [
@@ -698,8 +745,134 @@ library WindowsInstaller
     };
 
     typedef enum {
-        msiDatabaseNullInteger = 0x80000000  /* -2147483648 from oleview, but widl makes it into two "-"'s 
-  				              * which screws up msiserver.h */
+        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]
+            HRESULT ProductCode([out, retval] BSTR* retval);
+        [id(DISPID_PRODUCT_USERSID), propget]
+            HRESULT UserSid([out, retval] BSTR* retval);
+        [id(DISPID_PRODUCT_CONTEXT), propget]
+            HRESULT Context([out, retval] MsiInstallContext* retval);
+        [id(DISPID_PRODUCT_STATE), propget]
+            HRESULT State([out, retval] MsiInstallState* retval);
+        [id(DISPID_PRODUCT_INSTALLPROPERTY), propget]
+            HRESULT InstallProperty(
+                [in] BSTR Name, 
+                [out, retval] BSTR* retval); 
+        [id(DISPID_PRODUCT_COMPONENTSTATE), propget]
+            HRESULT ComponentState(
+                [in] BSTR Component, 
+                [out, retval] MsiInstallState* retval);
+        [id(DISPID_PRODUCT_FEATURESTATE), propget]
+            HRESULT FeatureState(
+                [in] BSTR Feature, 
+                [out, retval] MsiInstallState* retval); 
+        [id(DISPID_PRODUCT_SOURCES), propget]
+            HRESULT Sources(
+                [in] long SourceType, 
+                [out, retval] StringList** retval); 
+        [id(DISPID_PRODUCT_MEDIADISKS), propget]
+            HRESULT MediaDisks([out, retval] RecordList** retval); 
+        [id(DISPID_PRODUCT_SOURCELISTADDSOURCE)]
+            HRESULT SourceListAddSource(
+                [in] MsiInstallSourceType iSourceType, 
+                [in] BSTR Source, 
+                [in] long dwIndex);
+        [id(DISPID_PRODUCT_SOURCELISTADDMEDIADISK)]
+            HRESULT SourceListAddMediaDisk(
+                [in] long dwDiskId, 
+                [in] BSTR VolumeLabel, 
+                [in] BSTR DiskPrompt);
+        [id(DISPID_PRODUCT_SOURCELISTCLEARSOURCE)]
+            HRESULT SourceListClearSource(
+                [in] MsiInstallSourceType iSourceType, 
+                [in] BSTR Source);
+        [id(DISPID_PRODUCT_SOURCELISTCLEARMEDIADISK)]
+            HRESULT SourceListClearMediaDisk([in] long iDiskId);
+        [id(DISPID_PRODUCT_SOURCELISTCLEARALL)]
+            HRESULT SourceListClearAll([in] MsiInstallSourceType iSourceType);
+        [id(DISPID_PRODUCT_SOURCELISTFORCERESOLUTION)]
+            HRESULT SourceListForceResolution();
+        [id(DISPID_PRODUCT_SOURCELISTINFO), propget]
+            HRESULT SourceListInfo(
+                [in] BSTR Property, 
+                [out, retval] BSTR* retval);
+        [id(DISPID_PRODUCT_SOURCELISTINFO), propput]
+            HRESULT SourceListInfo(
+                [in] BSTR Property, 
+                [in] BSTR retval);
+    };
+
+    [
+        uuid(000C10A1-0000-0000-C000-000000000046),
+        helpcontext(0x000023aa)
+    ]
+    dispinterface Patch {
+        properties:
+        methods:
+        [id(DISPID_PATCH_PATCHCODE), propget]
+            HRESULT PatchCode([out, retval] BSTR* retval);
+        [id(DISPID_PATCH_PRODUCTCODE), propget]
+            HRESULT ProductCode([out, retval] BSTR* retval);
+        [id(DISPID_PATCH_USERSID), propget]
+            HRESULT UserSid([out, retval] BSTR* retval);
+        [id(DISPID_PATCH_CONTEXT), propget]
+            HRESULT Context([out, retval] MsiInstallContext* retval);
+        [id(DISPID_PATCH_STATE), propget]
+            HRESULT State([out, retval] MsiInstallState* retval);
+        [id(DISPID_PATCH_SOURCES), propget]
+            HRESULT Sources(
+                [in] long SourceType, 
+                [out, retval] StringList** retval);
+        [id(DISPID_PATCH_MEDIADISKS), propget]
+            HRESULT MediaDisks([out, retval] RecordList** retval);
+        [id(DISPID_PATCH_SOURCELISTADDSOURCE)]
+            HRESULT SourceListAddSource(
+                [in] MsiInstallSourceType iSourceType, 
+                [in] BSTR Source, 
+                [in] long dwIndex);
+        [id(DISPID_PATCH_SOURCELISTADDMEDIADISK)]
+            HRESULT SourceListAddMediaDisk(
+                [in] long dwDiskId, 
+                [in] BSTR VolumeLabel, 
+                [in] BSTR DiskPrompt);
+        [id(DISPID_PATCH_SOURCELISTCLEARSOURCE)]
+            HRESULT SourceListClearSource(
+                [in] MsiInstallSourceType iSourceType, 
+                [in] BSTR Source);
+        [id(DISPID_PATCH_SOURCELISTCLEARMEDIADISK)]
+            HRESULT SourceListClearMediaDisk([in] long iDiskId);
+        [id(DISPID_PATCH_SOURCELISTCLEARALL)]
+            HRESULT SourceListClearAll([in] MsiInstallSourceType iSourceType);
+        [id(DISPID_PATCH_SOURCELISTFORCERESOLUTION)]
+            HRESULT SourceListForceResolution();
+        [id(DISPID_PATCH_SOURCELISTINFO), propget]
+            HRESULT SourceListInfo(
+                [in] BSTR Property, 
+                [out, retval] BSTR* retval);
+        [id(DISPID_PATCH_SOURCELISTINFO), propput]
+            HRESULT SourceListInfo(
+                [in] BSTR Property, 
+                [in] BSTR retval);
+        [id(DISPID_PATCH_PATCHPROPERTY), propget]
+            HRESULT PatchProperty(
+                [in] BSTR Property, 
+                [out, retval] BSTR* Value);
+    };
+
+    typedef enum {
+        msiDatabaseNullInteger = -2147483648
     } Constants;
 
     typedef enum {
diff --git a/dlls/msi/msiserver_dispids.h b/dlls/msi/msiserver_dispids.h
index db39ec0..093efb0 100644
--- a/dlls/msi/msiserver_dispids.h
+++ b/dlls/msi/msiserver_dispids.h
@@ -63,6 +63,13 @@ #define DISPID_INSTALLER_FORCESOURCELIST
 #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
@@ -138,3 +145,36 @@ #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