msi: Directly pass the disk id to installfiles_cb.
[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] LPCWSTR table, [out] MSICONDITION *persistent );
42     HRESULT GetPrimaryKeys( [in] LPCWSTR table, [out] MSIHANDLE *keys );
43     HRESULT GetSummaryInformation( [in] UINT updatecount, [out] MSIHANDLE *suminfo );
44     HRESULT OpenView( [in] LPCWSTR 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 SetMode( [in] MSIRUNMODE mode, [in] BOOL state );
67     HRESULT GetFeatureState( [in] BSTR feature, [out] INSTALLSTATE *installed, [out] INSTALLSTATE *action );
68     HRESULT SetFeatureState( [in] BSTR feature, [in] INSTALLSTATE state );
69     HRESULT GetComponentState( [in] BSTR component, [out] INSTALLSTATE *installed, [out] INSTALLSTATE *action );
70     HRESULT SetComponentState( [in] BSTR component, [in] INSTALLSTATE state );
71     HRESULT GetLanguage( [out] LANGID *language );
72     HRESULT SetInstallLevel( [in] int level );
73     HRESULT FormatRecord( [in] MSIHANDLE record, [out] BSTR *value );
74     HRESULT EvaluateCondition( [in] BSTR condition );
75     HRESULT GetFeatureCost( [in] BSTR feature, [in] INT cost_tree, [in] INSTALLSTATE state, [out] INT *cost);
76 }
77
78 [
79     uuid(56D58B64-8780-4c22-A8BC-8B0B29E4A9F8),
80     oleautomation,
81     object
82 ]
83 interface IWineMsiRemoteCustomAction : IUnknown
84 {
85     HRESULT GetActionInfo( [in] LPCGUID guid, [out] INT *type, [out] MSIHANDLE *handle, [out] BSTR *dllname,
86                            [out] BSTR *function, [out] IWineMsiRemotePackage **package );
87 }
88
89 [ uuid(000C1092-0000-0000-C000-000000000046), version(1.0) ]
90 library WindowsInstaller
91 {
92     dispinterface Installer;
93     dispinterface Record;
94     dispinterface Session;
95     dispinterface Database;
96     dispinterface SummaryInfo;
97     dispinterface View;
98     dispinterface UIPreview;
99     dispinterface FeatureInfo;
100     dispinterface RecordList;
101     dispinterface StringList;
102     dispinterface Product;
103     dispinterface Patch;
104
105     typedef enum {
106         msiInstallStateNotUsed = -7,
107         msiInstallStateBadConfig = -6,
108         msiInstallStateIncomplete = -5,
109         msiInstallStateSourceAbsent = -4,
110         msiInstallStateInvalidArg = -2,
111         msiInstallStateUnknown = -1,
112         msiInstallStateBroken = 0,
113         msiInstallStateAdvertised = 1,
114         msiInstallStateRemoved = 1,
115         msiInstallStateAbsent = 2,
116         msiInstallStateLocal = 3,
117         msiInstallStateSource = 4,
118         msiInstallStateDefault = 5
119     } MsiInstallState;
120
121     typedef enum {
122         msiOpenDatabaseModeReadOnly = 0,
123         msiOpenDatabaseModeTransact = 1,
124         msiOpenDatabaseModeDirect = 2,
125         msiOpenDatabaseModeCreate = 3,
126         msiOpenDatabaseModeCreateDirect = 4,
127         msiOpenDatabaseModePatchFile = 32
128     } MsiOpenDatabaseMode;
129
130     typedef enum {
131         msiUILevelNoChange = 0,
132         msiUILevelDefault = 1,
133         msiUILevelNone = 2,
134         msiUILevelBasic = 3,
135         msiUILevelReduced = 4,
136         msiUILevelFull = 5,
137         msiUILevelHideCancel = 32,
138         msiUILevelProgressOnly = 64,
139         msiUILevelEndDialog = 128,
140         msiUILevelSourceResOnly = 256
141     } MsiUILevel;
142
143     [ uuid(000C1090-0000-0000-C000-000000000046) ]
144     dispinterface Installer
145     {
146     properties:
147         [id(DISPID_INSTALLER_UILEVEL)]
148             MsiUILevel UILevel;
149     methods:
150         [id(DISPID_INSTALLER_CREATERECORD)]
151             Record *CreateRecord([in] long Count);
152         [id(DISPID_INSTALLER_OPENPACKAGE)]
153             Session* OpenPackage(
154                 [in] VARIANT PackagePath,
155                 [in, optional, defaultvalue(0)] long Options);
156         [id(DISPID_INSTALLER_OPENPRODUCT)]
157             Session* OpenProduct(
158                 [in] BSTR ProductCode);
159         [id(DISPID_INSTALLER_SUMMARYINFORMATION)]
160             SummaryInfo* SummaryInformation(
161                 [in] BSTR PackagePath,
162                 [in, optional, defaultvalue(0)] long UpdateCount);
163         [id(DISPID_INSTALLER_OPENDATABASE)]
164             Database *OpenDatabase(
165                     [in] BSTR DatabasePath,
166                     [in] VARIANT OpenMode);
167         [id(DISPID_INSTALLER_ENABLELOG)]
168             void EnableLog(
169                     [in] BSTR LogMode,
170                     [in] BSTR LogFile);
171         [id(DISPID_INSTALLER_INSTALLPRODUCT)]
172             void InstallProduct(
173                 [in] BSTR PackagePath,
174                 [in, optional, defaultvalue("0")] BSTR PropertyValues);
175         [id(DISPID_INSTALLER_VERSION)]
176             BSTR Version();
177         [id(DISPID_INSTALLER_LASTERRORRECORD)]
178             Record* LastErrorRecord();
179         [id(DISPID_INSTALLER_REGISTRYVALUE), propget]
180             BSTR RegistryValue(
181                 [in] VARIANT Root,
182                 [in] BSTR Key,
183                 [in, optional] VARIANT Value);
184         [id(DISPID_INSTALLER_ENVIRONMENT), propget]
185             BSTR Environment([in] BSTR Variable);
186         [id(DISPID_INSTALLER_ENVIRONMENT), propput]
187             void Environment(
188                 [in] BSTR Variable,
189                 [in] BSTR rhs);
190         [id(DISPID_INSTALLER_FILEATTRIBUTES)]
191             long FileAttributes([in] BSTR FilePath);
192         [id(DISPID_INSTALLER_FILESIZE)]
193             long FileSize([in] BSTR FilePath);
194         [id(DISPID_INSTALLER_FILEVERSION)]
195             BSTR FileVersion(
196                 [in] BSTR FilePath,
197                 [in, optional] VARIANT Language);
198         [id(DISPID_INSTALLER_PRODUCTSTATE), propget]
199             MsiInstallState ProductState(
200                 [in] BSTR Product);
201         [id(DISPID_INSTALLER_PRODUCTINFO), propget]
202             BSTR ProductInfo(
203                 [in] BSTR Product,
204                 [in] BSTR Attribute);
205         [id(DISPID_INSTALLER_PRODUCTS), propget]
206             StringList *Products();
207         [id(DISPID_INSTALLER_RELATEDPRODUCTS), propget]
208             StringList *RelatedProducts(
209                 [in] BSTR UpgradeCode);
210     }
211
212     [ uuid(000C1093-0000-0000-C000-000000000046) ]
213     dispinterface Record
214     {
215     properties:
216     methods:
217         [id(DISPID_RECORD_STRINGDATA), propget]
218             BSTR StringData([in] long Field);
219         [id(DISPID_RECORD_STRINGDATA), propput]
220             void StringData(
221                 [in] long Field,
222                 [in] BSTR rhs);
223         [id(DISPID_RECORD_INTEGERDATA), propget]
224             long IntegerData([in] long Field);
225         [id(DISPID_RECORD_INTEGERDATA), propput]
226             void IntegerData(
227                 [in] long Field,
228                 [in] long rhs);
229         [id(DISPID_RECORD_FIELDCOUNT), propget]
230             long FieldCount();
231     }
232
233     [ uuid(000C1095-0000-0000-C000-000000000046) ]
234     dispinterface StringList
235     {
236         properties:
237         methods:
238         [id(DISPID_LIST__NEWENUM)]
239             IUnknown _NewEnum();
240         [id(DISPID_LIST_ITEM), propget]
241             BSTR Item(long Index);
242         [id(DISPID_LIST_COUNT), propget]
243             long Count();
244     }
245
246     [ uuid(000C1096-0000-0000-C000-000000000046) ]
247     dispinterface RecordList
248     {
249         properties:
250         methods:
251     }
252
253     [ uuid(000C109A-0000-0000-C000-000000000046) ]
254     dispinterface UIPreview
255     {
256         properties:
257         methods:
258     }
259
260     [ uuid(000C109B-0000-0000-C000-000000000046) ]
261     dispinterface SummaryInfo
262     {
263         properties:
264         methods:
265         [id(DISPID_SUMMARYINFO_PROPERTY), propget]
266             VARIANT Property([in] long Pid);
267         [id(DISPID_SUMMARYINFO_PROPERTY), propput]
268             void Property(
269                 [in] long Pid,
270                 [in] VARIANT rhs);
271         [id(DISPID_SUMMARYINFO_PROPERTYCOUNT), propget]
272             long PropertyCount();
273     }
274
275     typedef enum {
276         msiViewModifySeek = -1,
277         msiViewModifyRefresh = 0,
278         msiViewModifyInsert = 1,
279         msiViewModifyUpdate = 2,
280         msiViewModifyAssign = 3,
281         msiViewModifyReplace = 4,
282         msiViewModifyMerge = 5,
283         msiViewModifyDelete = 6,
284         msiViewModifyInsertTemporary = 7,
285         msiViewModifyValidate = 8,
286         msiViewModifyValidateNew = 9,
287         msiViewModifyValidateField = 10,
288         msiViewModifyValidateDelete = 11,
289     } _MsiViewModify;                                /* Added underscore to avoid conflict with function name */
290
291     [ uuid(000C109C-0000-0000-C000-000000000046) ]
292     dispinterface View
293     {
294         properties:
295         methods:
296         [id(DISPID_VIEW_EXECUTE)]
297             void Execute([in, optional, defaultvalue(0)] Record *Params);
298         [id(DISPID_VIEW_FETCH)]
299             Record* Fetch();
300         [id(DISPID_VIEW_MODIFY)]
301             void Modify(
302                 [in] _MsiViewModify Mode,
303                 Record *Record);
304         [id(DISPID_VIEW_CLOSE)]
305             void Close();
306     }
307
308     [ uuid(000C109D-0000-0000-C000-000000000046) ]
309     dispinterface Database
310     {
311         properties:
312         methods:
313         [id(DISPID_DATABASE_OPENVIEW)]
314             View* OpenView([in] BSTR Sql);
315         [id(DISPID_DATABASE_SUMMARYINFORMATION), propget]
316             SummaryInfo *SummaryInformation([in, optional, defaultvalue(0)] long UpdateCount);
317     }
318
319     typedef enum {
320         msiDoActionStatusNoAction = 0,
321         msiDoActionStatusSuccess = 1,
322         msiDoActionStatusUserExit = 2,
323         msiDoActionStatusFailure = 3,
324         msiDoActionStatusSuspend = 4,
325         msiDoActionStatusFinished = 5,
326         msiDoActionStatusWrongState = 6,
327         msiDoActionStatusBadActionData = 7
328     } MsiDoActionStatus;
329
330     typedef enum {
331         msiRunModeAdmin = 0,
332         msiRunModeAdvertise = 1,
333         msiRunModeMaintenance = 2,
334         msiRunModeRollbackEnabled = 3,
335         msiRunModeLogEnabled = 4,
336         msiRunModeOperations = 5,
337         msiRunModeRebootAtEnd = 6,
338         msiRunModeRebootNow = 7,
339         msiRunModeCabinet = 8,
340         msiRunModeSourceShortNames = 9,
341         msiRunModeTargetShortNames = 10,
342         msiRunModeWindows9x = 12,
343         msiRunModeZawEnabled = 13,
344         msiRunModeScheduled = 16,
345         msiRunModeRollback = 17,
346         msiRunModeCommit = 18
347     } MsiRunMode;
348
349     typedef enum {
350         msiEvaluateConditionFalse = 0,
351         msiEvaluateConditionTrue = 1,
352         msiEvaluateConditionNone = 2,
353         msiEvaluateConditionError = 3
354     } _MsiEvaluateCondition;           /* Added underscore to avoid conflict with function name */
355
356     typedef enum {
357         msiMessageStatusError = -1,
358         msiMessageStatusNone = 0,
359         msiMessageStatusOk = 1,
360         msiMessageStatusCancel = 2,
361         msiMessageStatusAbort = 3,
362         msiMessageStatusRetry = 4,
363         msiMessageStatusIgnore = 5,
364         msiMessageStatusYes = 6,
365         msiMessageStatusNo = 7
366     } MsiMessageStatus;
367
368     typedef enum {
369         msiMessageTypeFatalExit = 0,
370         msiMessageTypeError          = 0x01000000,
371         msiMessageTypeWarning        = 0x02000000,
372         msiMessageTypeUser           = 0x03000000,
373         msiMessageTypeInfo           = 0x04000000,
374         msiMessageTypeFilesInUse     = 0x05000000,
375         msiMessageTypeResolveSource  = 0x06000000,
376         msiMessageTypeOutOfDiskSpace = 0x07000000,
377         msiMessageTypeActionStart    = 0x08000000,
378         msiMessageTypeActionData     = 0x09000000,
379         msiMessageTypeProgress       = 0x0a000000,
380         msiMessageTypeCommonData     = 0x0b000000,
381         msiMessageTypeOk = 0,
382         msiMessageTypeOkCancel = 1,
383         msiMessageTypeAbortRetryIgnore = 2,
384         msiMessageTypeYesNoCancel = 3,
385         msiMessageTypeYesNo = 4,
386         msiMessageTypeRetryCancel = 5,
387         msiMessageTypeDefault1 = 0,
388         msiMessageTypeDefault2 = 256,
389         msiMessageTypeDefault3 = 512
390     } MsiMessageType;
391
392     [ uuid(000C109E-0000-0000-C000-000000000046) ]
393     dispinterface Session
394     {
395     properties:
396     methods:
397         [id(DISPID_SESSION_INSTALLER), propget]
398             Installer *Installer();
399         [id(DISPID_SESSION_PROPERTY), propget]
400             BSTR Property([in] BSTR Name);
401         [id(DISPID_SESSION_PROPERTY), propput]
402             void Property(
403                 [in] BSTR Name,
404                 [in] BSTR rhs);
405         [id(DISPID_SESSION_LANGUAGE), propget]
406             long Language();
407         [id(DISPID_SESSION_MODE), propget]
408             VARIANT_BOOL Mode([in] MsiRunMode Flag);
409         [id(DISPID_SESSION_MODE), propput]
410             void Mode(
411                 [in] MsiRunMode Flag,
412                 [in] VARIANT_BOOL rhs);
413         [id(DISPID_SESSION_DATABASE), propget]
414             Database* Database();
415         [id(DISPID_SESSION_DOACTION)]
416             MsiDoActionStatus DoAction([in] BSTR Action);
417         [id(DISPID_SESSION_EVALUATECONDITION)]
418             _MsiEvaluateCondition EvaluateCondition([in] BSTR Expression);
419         [id(DISPID_SESSION_MESSAGE)]
420             MsiMessageStatus Message(
421                 [in] MsiMessageType Kind,
422                 [in] Record *Record);
423         [id(DISPID_SESSION_FEATURECURRENTSTATE), propget]
424             MsiInstallState FeatureCurrentState([in] BSTR Feature);
425         [id(DISPID_SESSION_FEATUREREQUESTSTATE), propget]
426             MsiInstallState FeatureRequestState([in] BSTR Feature);
427         [id(DISPID_SESSION_FEATUREREQUESTSTATE), propput]
428             void FeatureRequestState(
429                 [in] BSTR Feature,
430                 [in] MsiInstallState rhs);
431         [id(DISPID_SESSION_SETINSTALLLEVEL)]
432             void SetInstallLevel([in] long Level);
433     }
434
435     [ uuid(000C109F-0000-0000-C000-000000000046) ]
436     dispinterface FeatureInfo
437     {
438         properties:
439         methods:
440     }
441
442     [ uuid(000C10A0-0000-0000-C000-000000000046) ]
443     dispinterface Product
444     {
445         properties:
446         methods:
447     }
448
449     [ uuid(000C10A1-0000-0000-C000-000000000046) ]
450     dispinterface Patch
451     {
452         properties:
453         methods:
454     }
455 }