msi: automation: Installer::Products, verify HeapAlloc return value.
[wine] / dlls / msi / msiserver.idl
1 /*
2  * Copyright (C) 2007 Mike McCormack
3  *
4  * This library is free software; you can redistribute it and/or
5  * modify it under the terms of the GNU Lesser General Public
6  * License as published by the Free Software Foundation; either
7  * version 2.1 of the License, or (at your option) any later version.
8  *
9  * This library is distributed in the hope that it will be useful,
10  * but WITHOUT ANY WARRANTY; without even the implied warranty of
11  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
12  * Lesser General Public License for more details.
13  *
14  * You should have received a copy of the GNU Lesser General Public
15  * License along with this library; if not, write to the Free Software
16  * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
17  */
18
19 #include "msiserver_dispids.h"
20 import "unknwn.idl";
21 import "wtypes.idl";
22 import "objidl.idl";
23 import "oaidl.idl";
24
25 [ uuid(000C1092-0000-0000-C000-000000000046), version(1.0) ]
26 library WindowsInstaller
27 {
28     dispinterface Installer;
29     dispinterface Record;
30     dispinterface Session;
31     dispinterface Database;
32     dispinterface SummaryInfo;
33     dispinterface View;
34     dispinterface UIPreview;
35     dispinterface FeatureInfo;
36     dispinterface RecordList;
37     dispinterface StringList;
38     dispinterface Product;
39     dispinterface Patch;
40
41     typedef enum {
42         msiInstallStateNotUsed = -7,
43         msiInstallStateBadConfig = -6,
44         msiInstallStateIncomplete = -5,
45         msiInstallStateSourceAbsent = -4,
46         msiInstallStateInvalidArg = -2,
47         msiInstallStateUnknown = -1,
48         msiInstallStateBroken = 0,
49         msiInstallStateAdvertised = 1,
50         msiInstallStateRemoved = 1,
51         msiInstallStateAbsent = 2,
52         msiInstallStateLocal = 3,
53         msiInstallStateSource = 4,
54         msiInstallStateDefault = 5
55     } MsiInstallState;
56
57     [ uuid(000C1090-0000-0000-C000-000000000046) ]
58     dispinterface Installer
59     {
60     properties:
61     methods:
62         [id(DISPID_INSTALLER_CREATERECORD)]
63             Record *CreateRecord([in] long Count);
64         [id(DISPID_INSTALLER_OPENPACKAGE)]
65             Session* OpenPackage(
66                 [in] VARIANT PackagePath,
67                 [in, optional, defaultvalue(0)] long Options);
68         [id(DISPID_INSTALLER_INSTALLPRODUCT)]
69             void InstallProduct(
70                 [in] BSTR PackagePath,
71                 [in, optional, defaultvalue("0")] BSTR PropertyValues);
72         [id(DISPID_INSTALLER_REGISTRYVALUE), propget]
73             BSTR RegistryValue(
74                 [in] VARIANT Root,
75                 [in] BSTR Key,
76                 [in, optional] VARIANT Value);
77         [id(DISPID_INSTALLER_PRODUCTSTATE), propget]
78             MsiInstallState ProductState(
79                 [in] BSTR Product);
80         [id(DISPID_INSTALLER_PRODUCTS), propget]
81             StringList *Products();
82         [id(DISPID_INSTALLER_RELATEDPRODUCTS), propget]
83             StringList *RelatedProducts(
84                 [in] BSTR UpgradeCode);
85     }
86
87     [ uuid(000C1093-0000-0000-C000-000000000046) ]
88     dispinterface Record
89     {
90     properties:
91     methods:
92         [id(DISPID_RECORD_STRINGDATA), propget]
93             BSTR StringData([in] long Field);
94         [id(DISPID_RECORD_STRINGDATA), propput]
95             void StringData(
96                 [in] long Field,
97                 [in] BSTR rhs);
98         [id(DISPID_RECORD_INTEGERDATA), propget]
99             long IntegerData([in] long Field);
100         [id(DISPID_RECORD_INTEGERDATA), propput]
101             void IntegerData(
102                 [in] long Field,
103                 [in] long rhs);
104         [id(DISPID_RECORD_FIELDCOUNT), propget]
105             long FieldCount();
106     }
107
108     [ uuid(000C1095-0000-0000-C000-000000000046) ]
109     dispinterface StringList
110     {
111         properties:
112         methods:
113         [id(DISPID_STRINGLIST_ITEM), propget]
114             BSTR Item(long Index);
115         [id(DISPID_STRINGLIST_COUNT), propget]
116             long Count();
117     }
118
119     [ uuid(000C1096-0000-0000-C000-000000000046) ]
120     dispinterface RecordList
121     {
122         properties:
123         methods:
124     }
125
126     [ uuid(000C109A-0000-0000-C000-000000000046) ]
127     dispinterface UIPreview
128     {
129         properties:
130         methods:
131     }
132
133     [ uuid(000C109B-0000-0000-C000-000000000046) ]
134     dispinterface SummaryInfo
135     {
136         properties:
137         methods:
138     }
139
140     typedef enum {
141         msiViewModifySeek = -1,
142         msiViewModifyRefresh = 0,
143         msiViewModifyInsert = 1,
144         msiViewModifyUpdate = 2,
145         msiViewModifyAssign = 3,
146         msiViewModifyReplace = 4,
147         msiViewModifyMerge = 5,
148         msiViewModifyDelete = 6,
149         msiViewModifyInsertTemporary = 7,
150         msiViewModifyValidate = 8,
151         msiViewModifyValidateNew = 9,
152         msiViewModifyValidateField = 10,
153         msiViewModifyValidateDelete = 11,
154     } _MsiViewModify;                                /* Added underscore to avoid conflict with function name */
155
156     [ uuid(000C109C-0000-0000-C000-000000000046) ]
157     dispinterface View
158     {
159         properties:
160         methods:
161         [id(DISPID_VIEW_EXECUTE)]
162             void Execute([in, optional, defaultvalue(0)] Record *Params);
163         [id(DISPID_VIEW_FETCH)]
164             Record* Fetch();
165         [id(DISPID_VIEW_MODIFY)]
166             void Modify(
167                 [in] _MsiViewModify Mode,
168                 Record *Record);
169         [id(DISPID_VIEW_CLOSE)]
170             void Close();
171     }
172
173     [ uuid(000C109D-0000-0000-C000-000000000046) ]
174     dispinterface Database
175     {
176         properties:
177         methods:
178         [id(DISPID_DATABASE_OPENVIEW)]
179             View* OpenView([in] BSTR Sql);
180     }
181
182     typedef enum {
183         msiDoActionStatusNoAction = 0,
184         msiDoActionStatusSuccess = 1,
185         msiDoActionStatusUserExit = 2,
186         msiDoActionStatusFailure = 3,
187         msiDoActionStatusSuspend = 4,
188         msiDoActionStatusFinished = 5,
189         msiDoActionStatusWrongState = 6,
190         msiDoActionStatusBadActionData = 7
191     } MsiDoActionStatus;
192
193     typedef enum {
194         msiRunModeAdmin = 0,
195         msiRunModeAdvertise = 1,
196         msiRunModeMaintenance = 2,
197         msiRunModeRollbackEnabled = 3,
198         msiRunModeLogEnabled = 4,
199         msiRunModeOperations = 5,
200         msiRunModeRebootAtEnd = 6,
201         msiRunModeRebootNow = 7,
202         msiRunModeCabinet = 8,
203         msiRunModeSourceShortNames = 9,
204         msiRunModeTargetShortNames = 10,
205         msiRunModeWindows9x = 12,
206         msiRunModeZawEnabled = 13,
207         msiRunModeScheduled = 16,
208         msiRunModeRollback = 17,
209         msiRunModeCommit = 18
210     } MsiRunMode;
211
212     typedef enum {
213         msiEvaluateConditionFalse = 0,
214         msiEvaluateConditionTrue = 1,
215         msiEvaluateConditionNone = 2,
216         msiEvaluateConditionError = 3
217     } _MsiEvaluateCondition;           /* Added underscore to avoid conflict with function name */
218
219     [ uuid(000C109E-0000-0000-C000-000000000046) ]
220     dispinterface Session
221     {
222     properties:
223     methods:
224         [id(DISPID_SESSION_INSTALLER), propget]
225             Installer *Installer();
226         [id(DISPID_SESSION_PROPERTY), propget]
227             BSTR Property([in] BSTR Name);
228         [id(DISPID_SESSION_PROPERTY), propput]
229             void Property(
230                 [in] BSTR Name,
231                 [in] BSTR rhs);
232         [id(DISPID_SESSION_LANGUAGE), propget]
233             long Language();
234         [id(DISPID_SESSION_MODE), propget]
235             VARIANT_BOOL Mode([in] MsiRunMode Flag);
236         [id(DISPID_SESSION_MODE), propput]
237             void Mode(
238                 [in] MsiRunMode Flag,
239                 [in] VARIANT_BOOL rhs);
240         [id(DISPID_SESSION_DATABASE), propget]
241             Database* Database();
242         [id(DISPID_SESSION_DOACTION)]
243             MsiDoActionStatus DoAction([in] BSTR Action);
244         [id(DISPID_SESSION_EVALUATECONDITION)]
245             _MsiEvaluateCondition EvaluateCondition([in] BSTR Expression);
246         [id(DISPID_SESSION_FEATURECURRENTSTATE), propget]
247             MsiInstallState FeatureCurrentState([in] BSTR Feature);
248         [id(DISPID_SESSION_FEATUREREQUESTSTATE), propget]
249             MsiInstallState FeatureRequestState([in] BSTR Feature);
250         [id(DISPID_SESSION_FEATUREREQUESTSTATE), propput]
251             void FeatureRequestState(
252                 [in] BSTR Feature,
253                 [in] MsiInstallState rhs);
254         [id(DISPID_SESSION_SETINSTALLLEVEL)]
255             void SetInstallLevel([in] long Level);
256     }
257
258     [ uuid(000C109F-0000-0000-C000-000000000046) ]
259     dispinterface FeatureInfo
260     {
261         properties:
262         methods:
263     }
264
265     [ uuid(000C10A0-0000-0000-C000-000000000046) ]
266     dispinterface Product
267     {
268         properties:
269         methods:
270     }
271
272     [ uuid(000C10A1-0000-0000-C000-000000000046) ]
273     dispinterface Patch
274     {
275         properties:
276         methods:
277     }
278 }