comctl32/rebar: Don't try to access band data before it's needed.
[wine] / dlls / msi / msiserver.idl
1 /*
2  * Copyright (C) 2007 Mike McCormack
3  * Copyright (C) 2007 Misha Koshelev
4  *
5  * This library is free software; you can redistribute it and/or
6  * modify it under the terms of the GNU Lesser General Public
7  * License as published by the Free Software Foundation; either
8  * version 2.1 of the License, or (at your option) any later version.
9  *
10  * This library is distributed in the hope that it will be useful,
11  * but WITHOUT ANY WARRANTY; without even the implied warranty of
12  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
13  * Lesser General Public License for more details.
14  *
15  * You should have received a copy of the GNU Lesser General Public
16  * License along with this library; if not, write to the Free Software
17  * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
18  */
19
20 #include "msiserver_dispids.h"
21 import "unknwn.idl";
22 import "wtypes.idl";
23 import "objidl.idl";
24 import "oaidl.idl";
25
26 cpp_quote("#if 0")
27 typedef unsigned long MSIHANDLE;
28 typedef int INSTALLMESSAGE;
29 typedef int MSICONDITION;
30 typedef int MSIRUNMODE;
31 typedef int INSTALLSTATE;
32 cpp_quote("#endif")
33
34 [
35     uuid(7BDE2046-D03B-4ffc-B84C-A098F38CFF0B),
36     oleautomation,
37     object
38 ]
39 interface IWineMsiRemoteDatabase : IUnknown
40 {
41     HRESULT IsTablePersistent( [in] BSTR table, [out] MSICONDITION *persistent );
42     HRESULT GetPrimaryKeys( [in] BSTR table, [out] MSIHANDLE *keys );
43     HRESULT GetSummaryInformation( [in] UINT updatecount, [out] MSIHANDLE *suminfo );
44     HRESULT OpenView( [in] BSTR query, [out] MSIHANDLE *view );
45     HRESULT SetMsiHandle( [in] MSIHANDLE handle );
46 }
47
48 [
49     uuid(902B3592-9D08-4dfd-A593-D07C52546421),
50     oleautomation,
51     object
52 ]
53 interface IWineMsiRemotePackage : IUnknown
54 {
55     HRESULT SetMsiHandle( [in] MSIHANDLE handle );
56     HRESULT GetActiveDatabase( [out] MSIHANDLE *handle );
57     HRESULT GetProperty( [in] BSTR property, [out] BSTR *value, [out] DWORD *size );
58     HRESULT SetProperty( [in] BSTR property, [in] BSTR value );
59     HRESULT ProcessMessage( [in] INSTALLMESSAGE message, [in] MSIHANDLE record );
60     HRESULT DoAction( [in] BSTR action );
61     HRESULT Sequence( [in] BSTR table, [in] int sequence );
62     HRESULT GetTargetPath( [in] BSTR folder, [out] BSTR *value, [out] DWORD *size );
63     HRESULT SetTargetPath( [in] BSTR folder, [in] BSTR value );
64     HRESULT GetSourcePath( [in] BSTR folder, [out] BSTR *value, [out] DWORD *size );
65     HRESULT GetMode( [in] MSIRUNMODE mode, [out] BOOL *ret );
66     HRESULT GetFeatureState( [in] BSTR feature, [out] INSTALLSTATE *installed, [out] INSTALLSTATE *action );
67     HRESULT SetFeatureState( [in] BSTR feature, [in] INSTALLSTATE state );
68     HRESULT GetComponentState( [in] BSTR component, [out] INSTALLSTATE *installed, [out] INSTALLSTATE *action );
69     HRESULT SetComponentState( [in] BSTR component, [in] INSTALLSTATE state );
70     HRESULT GetLanguage( [out] LANGID *language );
71     HRESULT SetInstallLevel( [in] int level );
72     HRESULT FormatRecord( [in] MSIHANDLE record, [out] BSTR *value );
73     HRESULT EvaluateCondition( [in] BSTR condition );
74     HRESULT GetFeatureCost( [in] BSTR feature, [in] INT cost_tree, [in] INSTALLSTATE state, [out] INT *cost);
75 }
76
77 [
78     uuid(56D58B64-8780-4c22-A8BC-8B0B29E4A9F8),
79     oleautomation,
80     object
81 ]
82 interface IWineMsiRemoteCustomAction : IUnknown
83 {
84     HRESULT GetActionInfo( [in] LPCGUID guid, [out] INT *type, [out] MSIHANDLE *handle, [out] BSTR *dllname,
85                            [out] BSTR *function, [out] IWineMsiRemotePackage **package );
86 }
87
88 [ uuid(000C1092-0000-0000-C000-000000000046), version(1.0) ]
89 library WindowsInstaller
90 {
91     dispinterface Installer;
92     dispinterface Record;
93     dispinterface Session;
94     dispinterface Database;
95     dispinterface SummaryInfo;
96     dispinterface View;
97     dispinterface UIPreview;
98     dispinterface FeatureInfo;
99     dispinterface RecordList;
100     dispinterface StringList;
101     dispinterface Product;
102     dispinterface Patch;
103
104     typedef enum {
105         msiInstallStateNotUsed = -7,
106         msiInstallStateBadConfig = -6,
107         msiInstallStateIncomplete = -5,
108         msiInstallStateSourceAbsent = -4,
109         msiInstallStateInvalidArg = -2,
110         msiInstallStateUnknown = -1,
111         msiInstallStateBroken = 0,
112         msiInstallStateAdvertised = 1,
113         msiInstallStateRemoved = 1,
114         msiInstallStateAbsent = 2,
115         msiInstallStateLocal = 3,
116         msiInstallStateSource = 4,
117         msiInstallStateDefault = 5
118     } MsiInstallState;
119
120     typedef enum {
121         msiOpenDatabaseModeReadOnly = 0,
122         msiOpenDatabaseModeTransact = 1,
123         msiOpenDatabaseModeDirect = 2,
124         msiOpenDatabaseModeCreate = 3,
125         msiOpenDatabaseModeCreateDirect = 4,
126         msiOpenDatabaseModePatchFile = 32
127     } MsiOpenDatabaseMode;
128
129     typedef enum {
130         msiUILevelNoChange = 0,
131         msiUILevelDefault = 1,
132         msiUILevelNone = 2,
133         msiUILevelBasic = 3,
134         msiUILevelReduced = 4,
135         msiUILevelFull = 5,
136         msiUILevelHideCancel = 32,
137         msiUILevelProgressOnly = 64,
138         msiUILevelEndDialog = 128,
139         msiUILevelSourceResOnly = 256
140     } MsiUILevel;
141
142     [ uuid(000C1090-0000-0000-C000-000000000046) ]
143     dispinterface Installer
144     {
145     properties:
146         [id(DISPID_INSTALLER_UILEVEL)]
147             MsiUILevel UILevel;
148     methods:
149         [id(DISPID_INSTALLER_CREATERECORD)]
150             Record *CreateRecord([in] long Count);
151         [id(DISPID_INSTALLER_OPENPACKAGE)]
152             Session* OpenPackage(
153                 [in] VARIANT PackagePath,
154                 [in, optional, defaultvalue(0)] long Options);
155         [id(DISPID_INSTALLER_OPENPRODUCT)]
156             Session* OpenProduct(
157                 [in] BSTR ProductCode);
158         [id(DISPID_INSTALLER_SUMMARYINFORMATION)]
159             SummaryInfo* SummaryInformation(
160                 [in] BSTR PackagePath,
161                 [in, optional, defaultvalue(0)] long UpdateCount);
162         [id(DISPID_INSTALLER_OPENDATABASE)]
163             Database *OpenDatabase(
164                     [in] BSTR DatabasePath,
165                     [in] VARIANT OpenMode);
166         [id(DISPID_INSTALLER_ENABLELOG)]
167             void EnableLog(
168                     [in] BSTR LogMode,
169                     [in] BSTR LogFile);
170         [id(DISPID_INSTALLER_INSTALLPRODUCT)]
171             void InstallProduct(
172                 [in] BSTR PackagePath,
173                 [in, optional, defaultvalue("0")] BSTR PropertyValues);
174         [id(DISPID_INSTALLER_VERSION)]
175             BSTR Version();
176         [id(DISPID_INSTALLER_LASTERRORRECORD)]
177             Record* LastErrorRecord();
178         [id(DISPID_INSTALLER_REGISTRYVALUE), propget]
179             BSTR RegistryValue(
180                 [in] VARIANT Root,
181                 [in] BSTR Key,
182                 [in, optional] VARIANT Value);
183         [id(DISPID_INSTALLER_ENVIRONMENT), propget]
184             BSTR Environment([in] BSTR Variable);
185         [id(DISPID_INSTALLER_ENVIRONMENT), propput]
186             void Environment(
187                 [in] BSTR Variable,
188                 [in] BSTR rhs);
189         [id(DISPID_INSTALLER_FILEATTRIBUTES)]
190             long FileAttributes([in] BSTR FilePath);
191         [id(DISPID_INSTALLER_FILESIZE)]
192             long FileSize([in] BSTR FilePath);
193         [id(DISPID_INSTALLER_FILEVERSION)]
194             BSTR FileVersion(
195                 [in] BSTR FilePath,
196                 [in, optional] VARIANT Language);
197         [id(DISPID_INSTALLER_PRODUCTSTATE), propget]
198             MsiInstallState ProductState(
199                 [in] BSTR Product);
200         [id(DISPID_INSTALLER_PRODUCTINFO), propget]
201             BSTR ProductInfo(
202                 [in] BSTR Product,
203                 [in] BSTR Attribute);
204         [id(DISPID_INSTALLER_PRODUCTS), propget]
205             StringList *Products();
206         [id(DISPID_INSTALLER_RELATEDPRODUCTS), propget]
207             StringList *RelatedProducts(
208                 [in] BSTR UpgradeCode);
209     }
210
211     [ uuid(000C1093-0000-0000-C000-000000000046) ]
212     dispinterface Record
213     {
214     properties:
215     methods:
216         [id(DISPID_RECORD_STRINGDATA), propget]
217             BSTR StringData([in] long Field);
218         [id(DISPID_RECORD_STRINGDATA), propput]
219             void StringData(
220                 [in] long Field,
221                 [in] BSTR rhs);
222         [id(DISPID_RECORD_INTEGERDATA), propget]
223             long IntegerData([in] long Field);
224         [id(DISPID_RECORD_INTEGERDATA), propput]
225             void IntegerData(
226                 [in] long Field,
227                 [in] long rhs);
228         [id(DISPID_RECORD_FIELDCOUNT), propget]
229             long FieldCount();
230     }
231
232     [ uuid(000C1095-0000-0000-C000-000000000046) ]
233     dispinterface StringList
234     {
235         properties:
236         methods:
237         [id(DISPID_LIST__NEWENUM)]
238             IUnknown _NewEnum();
239         [id(DISPID_LIST_ITEM), propget]
240             BSTR Item(long Index);
241         [id(DISPID_LIST_COUNT), propget]
242             long Count();
243     }
244
245     [ uuid(000C1096-0000-0000-C000-000000000046) ]
246     dispinterface RecordList
247     {
248         properties:
249         methods:
250     }
251
252     [ uuid(000C109A-0000-0000-C000-000000000046) ]
253     dispinterface UIPreview
254     {
255         properties:
256         methods:
257     }
258
259     [ uuid(000C109B-0000-0000-C000-000000000046) ]
260     dispinterface SummaryInfo
261     {
262         properties:
263         methods:
264         [id(DISPID_SUMMARYINFO_PROPERTY), propget]
265             VARIANT Property([in] long Pid);
266         [id(DISPID_SUMMARYINFO_PROPERTY), propput]
267             void Property(
268                 [in] long Pid,
269                 [in] VARIANT rhs);
270         [id(DISPID_SUMMARYINFO_PROPERTYCOUNT), propget]
271             long PropertyCount();
272     }
273
274     typedef enum {
275         msiViewModifySeek = -1,
276         msiViewModifyRefresh = 0,
277         msiViewModifyInsert = 1,
278         msiViewModifyUpdate = 2,
279         msiViewModifyAssign = 3,
280         msiViewModifyReplace = 4,
281         msiViewModifyMerge = 5,
282         msiViewModifyDelete = 6,
283         msiViewModifyInsertTemporary = 7,
284         msiViewModifyValidate = 8,
285         msiViewModifyValidateNew = 9,
286         msiViewModifyValidateField = 10,
287         msiViewModifyValidateDelete = 11,
288     } _MsiViewModify;                                /* Added underscore to avoid conflict with function name */
289
290     [ uuid(000C109C-0000-0000-C000-000000000046) ]
291     dispinterface View
292     {
293         properties:
294         methods:
295         [id(DISPID_VIEW_EXECUTE)]
296             void Execute([in, optional, defaultvalue(0)] Record *Params);
297         [id(DISPID_VIEW_FETCH)]
298             Record* Fetch();
299         [id(DISPID_VIEW_MODIFY)]
300             void Modify(
301                 [in] _MsiViewModify Mode,
302                 Record *Record);
303         [id(DISPID_VIEW_CLOSE)]
304             void Close();
305     }
306
307     [ uuid(000C109D-0000-0000-C000-000000000046) ]
308     dispinterface Database
309     {
310         properties:
311         methods:
312         [id(DISPID_DATABASE_OPENVIEW)]
313             View* OpenView([in] BSTR Sql);
314         [id(DISPID_DATABASE_SUMMARYINFORMATION), propget]
315             SummaryInfo *SummaryInformation([in, optional, defaultvalue(0)] long UpdateCount);
316     }
317
318     typedef enum {
319         msiDoActionStatusNoAction = 0,
320         msiDoActionStatusSuccess = 1,
321         msiDoActionStatusUserExit = 2,
322         msiDoActionStatusFailure = 3,
323         msiDoActionStatusSuspend = 4,
324         msiDoActionStatusFinished = 5,
325         msiDoActionStatusWrongState = 6,
326         msiDoActionStatusBadActionData = 7
327     } MsiDoActionStatus;
328
329     typedef enum {
330         msiRunModeAdmin = 0,
331         msiRunModeAdvertise = 1,
332         msiRunModeMaintenance = 2,
333         msiRunModeRollbackEnabled = 3,
334         msiRunModeLogEnabled = 4,
335         msiRunModeOperations = 5,
336         msiRunModeRebootAtEnd = 6,
337         msiRunModeRebootNow = 7,
338         msiRunModeCabinet = 8,
339         msiRunModeSourceShortNames = 9,
340         msiRunModeTargetShortNames = 10,
341         msiRunModeWindows9x = 12,
342         msiRunModeZawEnabled = 13,
343         msiRunModeScheduled = 16,
344         msiRunModeRollback = 17,
345         msiRunModeCommit = 18
346     } MsiRunMode;
347
348     typedef enum {
349         msiEvaluateConditionFalse = 0,
350         msiEvaluateConditionTrue = 1,
351         msiEvaluateConditionNone = 2,
352         msiEvaluateConditionError = 3
353     } _MsiEvaluateCondition;           /* Added underscore to avoid conflict with function name */
354
355     typedef enum {
356         msiMessageStatusError = -1,
357         msiMessageStatusNone = 0,
358         msiMessageStatusOk = 1,
359         msiMessageStatusCancel = 2,
360         msiMessageStatusAbort = 3,
361         msiMessageStatusRetry = 4,
362         msiMessageStatusIgnore = 5,
363         msiMessageStatusYes = 6,
364         msiMessageStatusNo = 7
365     } MsiMessageStatus;
366
367     typedef enum {
368         msiMessageTypeFatalExit = 0,
369         msiMessageTypeError          = 0x01000000,
370         msiMessageTypeWarning        = 0x02000000,
371         msiMessageTypeUser           = 0x03000000,
372         msiMessageTypeInfo           = 0x04000000,
373         msiMessageTypeFilesInUse     = 0x05000000,
374         msiMessageTypeResolveSource  = 0x06000000,
375         msiMessageTypeOutOfDiskSpace = 0x07000000,
376         msiMessageTypeActionStart    = 0x08000000,
377         msiMessageTypeActionData     = 0x09000000,
378         msiMessageTypeProgress       = 0x0a000000,
379         msiMessageTypeCommonData     = 0x0b000000,
380         msiMessageTypeOk = 0,
381         msiMessageTypeOkCancel = 1,
382         msiMessageTypeAbortRetryIgnore = 2,
383         msiMessageTypeYesNoCancel = 3,
384         msiMessageTypeYesNo = 4,
385         msiMessageTypeRetryCancel = 5,
386         msiMessageTypeDefault1 = 0,
387         msiMessageTypeDefault2 = 256,
388         msiMessageTypeDefault3 = 512
389     } MsiMessageType;
390
391     [ uuid(000C109E-0000-0000-C000-000000000046) ]
392     dispinterface Session
393     {
394     properties:
395     methods:
396         [id(DISPID_SESSION_INSTALLER), propget]
397             Installer *Installer();
398         [id(DISPID_SESSION_PROPERTY), propget]
399             BSTR Property([in] BSTR Name);
400         [id(DISPID_SESSION_PROPERTY), propput]
401             void Property(
402                 [in] BSTR Name,
403                 [in] BSTR rhs);
404         [id(DISPID_SESSION_LANGUAGE), propget]
405             long Language();
406         [id(DISPID_SESSION_MODE), propget]
407             VARIANT_BOOL Mode([in] MsiRunMode Flag);
408         [id(DISPID_SESSION_MODE), propput]
409             void Mode(
410                 [in] MsiRunMode Flag,
411                 [in] VARIANT_BOOL rhs);
412         [id(DISPID_SESSION_DATABASE), propget]
413             Database* Database();
414         [id(DISPID_SESSION_DOACTION)]
415             MsiDoActionStatus DoAction([in] BSTR Action);
416         [id(DISPID_SESSION_EVALUATECONDITION)]
417             _MsiEvaluateCondition EvaluateCondition([in] BSTR Expression);
418         [id(DISPID_SESSION_MESSAGE)]
419             MsiMessageStatus Message(
420                 [in] MsiMessageType Kind,
421                 [in] Record *Record);
422         [id(DISPID_SESSION_FEATURECURRENTSTATE), propget]
423             MsiInstallState FeatureCurrentState([in] BSTR Feature);
424         [id(DISPID_SESSION_FEATUREREQUESTSTATE), propget]
425             MsiInstallState FeatureRequestState([in] BSTR Feature);
426         [id(DISPID_SESSION_FEATUREREQUESTSTATE), propput]
427             void FeatureRequestState(
428                 [in] BSTR Feature,
429                 [in] MsiInstallState rhs);
430         [id(DISPID_SESSION_SETINSTALLLEVEL)]
431             void SetInstallLevel([in] long Level);
432     }
433
434     [ uuid(000C109F-0000-0000-C000-000000000046) ]
435     dispinterface FeatureInfo
436     {
437         properties:
438         methods:
439     }
440
441     [ uuid(000C10A0-0000-0000-C000-000000000046) ]
442     dispinterface Product
443     {
444         properties:
445         methods:
446     }
447
448     [ uuid(000C10A1-0000-0000-C000-000000000046) ]
449     dispinterface Patch
450     {
451         properties:
452         methods:
453     }
454 }