msi: Test how MsiConfigureProductEx locates the source package.
[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 typedef WORD LANGID;
33 cpp_quote("#endif")
34
35 [
36     uuid(7BDE2046-D03B-4ffc-B84C-A098F38CFF0B),
37     oleautomation,
38     object
39 ]
40 interface IWineMsiRemoteDatabase : IUnknown
41 {
42     HRESULT IsTablePersistent( [in] BSTR table, [out] MSICONDITION *persistent );
43     HRESULT GetPrimaryKeys( [in] BSTR table, [out] MSIHANDLE *keys );
44     HRESULT GetSummaryInformation( [in] UINT updatecount, [out] MSIHANDLE *suminfo );
45     HRESULT OpenView( [in] BSTR query, [out] MSIHANDLE *view );
46     HRESULT SetMsiHandle( [in] MSIHANDLE handle );
47 }
48
49 [
50     uuid(902B3592-9D08-4dfd-A593-D07C52546421),
51     oleautomation,
52     object
53 ]
54 interface IWineMsiRemotePackage : IUnknown
55 {
56     HRESULT SetMsiHandle( [in] MSIHANDLE handle );
57     HRESULT GetActiveDatabase( [out] MSIHANDLE *handle );
58     HRESULT GetProperty( [in] BSTR property, [out] BSTR *value, [out] DWORD *size );
59     HRESULT SetProperty( [in] BSTR property, [in] BSTR value );
60     HRESULT ProcessMessage( [in] INSTALLMESSAGE message, [in] MSIHANDLE record );
61     HRESULT DoAction( [in] BSTR action );
62     HRESULT Sequence( [in] BSTR table, [in] int sequence );
63     HRESULT GetTargetPath( [in] BSTR folder, [out] BSTR *value, [out] DWORD *size );
64     HRESULT SetTargetPath( [in] BSTR folder, [in] BSTR value );
65     HRESULT GetSourcePath( [in] BSTR folder, [out] BSTR *value, [out] DWORD *size );
66     HRESULT GetMode( [in] MSIRUNMODE mode, [out] BOOL *ret );
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 }
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_OPENDATABASE)]
156             Database *OpenDatabase(
157                     [in] BSTR DatabasePath,
158                     [in] VARIANT OpenMode);
159         [id(DISPID_INSTALLER_INSTALLPRODUCT)]
160             void InstallProduct(
161                 [in] BSTR PackagePath,
162                 [in, optional, defaultvalue("0")] BSTR PropertyValues);
163         [id(DISPID_INSTALLER_VERSION)]
164             BSTR Version();
165         [id(DISPID_INSTALLER_REGISTRYVALUE), propget]
166             BSTR RegistryValue(
167                 [in] VARIANT Root,
168                 [in] BSTR Key,
169                 [in, optional] VARIANT Value);
170         [id(DISPID_INSTALLER_PRODUCTSTATE), propget]
171             MsiInstallState ProductState(
172                 [in] BSTR Product);
173         [id(DISPID_INSTALLER_PRODUCTINFO), propget]
174             BSTR ProductInfo(
175                 [in] BSTR Product,
176                 [in] BSTR Attribute);
177         [id(DISPID_INSTALLER_PRODUCTS), propget]
178             StringList *Products();
179         [id(DISPID_INSTALLER_RELATEDPRODUCTS), propget]
180             StringList *RelatedProducts(
181                 [in] BSTR UpgradeCode);
182     }
183
184     [ uuid(000C1093-0000-0000-C000-000000000046) ]
185     dispinterface Record
186     {
187     properties:
188     methods:
189         [id(DISPID_RECORD_STRINGDATA), propget]
190             BSTR StringData([in] long Field);
191         [id(DISPID_RECORD_STRINGDATA), propput]
192             void StringData(
193                 [in] long Field,
194                 [in] BSTR rhs);
195         [id(DISPID_RECORD_INTEGERDATA), propget]
196             long IntegerData([in] long Field);
197         [id(DISPID_RECORD_INTEGERDATA), propput]
198             void IntegerData(
199                 [in] long Field,
200                 [in] long rhs);
201         [id(DISPID_RECORD_FIELDCOUNT), propget]
202             long FieldCount();
203     }
204
205     [ uuid(000C1095-0000-0000-C000-000000000046) ]
206     dispinterface StringList
207     {
208         properties:
209         methods:
210         [id(DISPID_LIST__NEWENUM)]
211             IUnknown _NewEnum();
212         [id(DISPID_LIST_ITEM), propget]
213             BSTR Item(long Index);
214         [id(DISPID_LIST_COUNT), propget]
215             long Count();
216     }
217
218     [ uuid(000C1096-0000-0000-C000-000000000046) ]
219     dispinterface RecordList
220     {
221         properties:
222         methods:
223     }
224
225     [ uuid(000C109A-0000-0000-C000-000000000046) ]
226     dispinterface UIPreview
227     {
228         properties:
229         methods:
230     }
231
232     [ uuid(000C109B-0000-0000-C000-000000000046) ]
233     dispinterface SummaryInfo
234     {
235         properties:
236         methods:
237         [id(DISPID_SUMMARYINFO_PROPERTY), propget]
238             VARIANT Property([in] long Pid);
239         [id(DISPID_SUMMARYINFO_PROPERTY), propput]
240             void Property(
241                 [in] long Pid,
242                 [in] VARIANT rhs);
243         [id(DISPID_SUMMARYINFO_PROPERTYCOUNT), propget]
244             long PropertyCount();
245     }
246
247     typedef enum {
248         msiViewModifySeek = -1,
249         msiViewModifyRefresh = 0,
250         msiViewModifyInsert = 1,
251         msiViewModifyUpdate = 2,
252         msiViewModifyAssign = 3,
253         msiViewModifyReplace = 4,
254         msiViewModifyMerge = 5,
255         msiViewModifyDelete = 6,
256         msiViewModifyInsertTemporary = 7,
257         msiViewModifyValidate = 8,
258         msiViewModifyValidateNew = 9,
259         msiViewModifyValidateField = 10,
260         msiViewModifyValidateDelete = 11,
261     } _MsiViewModify;                                /* Added underscore to avoid conflict with function name */
262
263     [ uuid(000C109C-0000-0000-C000-000000000046) ]
264     dispinterface View
265     {
266         properties:
267         methods:
268         [id(DISPID_VIEW_EXECUTE)]
269             void Execute([in, optional, defaultvalue(0)] Record *Params);
270         [id(DISPID_VIEW_FETCH)]
271             Record* Fetch();
272         [id(DISPID_VIEW_MODIFY)]
273             void Modify(
274                 [in] _MsiViewModify Mode,
275                 Record *Record);
276         [id(DISPID_VIEW_CLOSE)]
277             void Close();
278     }
279
280     [ uuid(000C109D-0000-0000-C000-000000000046) ]
281     dispinterface Database
282     {
283         properties:
284         methods:
285         [id(DISPID_DATABASE_OPENVIEW)]
286             View* OpenView([in] BSTR Sql);
287         [id(DISPID_DATABASE_SUMMARYINFORMATION), propget]
288             SummaryInfo *SummaryInformation([in, optional, defaultvalue(0)] long UpdateCount);
289     }
290
291     typedef enum {
292         msiDoActionStatusNoAction = 0,
293         msiDoActionStatusSuccess = 1,
294         msiDoActionStatusUserExit = 2,
295         msiDoActionStatusFailure = 3,
296         msiDoActionStatusSuspend = 4,
297         msiDoActionStatusFinished = 5,
298         msiDoActionStatusWrongState = 6,
299         msiDoActionStatusBadActionData = 7
300     } MsiDoActionStatus;
301
302     typedef enum {
303         msiRunModeAdmin = 0,
304         msiRunModeAdvertise = 1,
305         msiRunModeMaintenance = 2,
306         msiRunModeRollbackEnabled = 3,
307         msiRunModeLogEnabled = 4,
308         msiRunModeOperations = 5,
309         msiRunModeRebootAtEnd = 6,
310         msiRunModeRebootNow = 7,
311         msiRunModeCabinet = 8,
312         msiRunModeSourceShortNames = 9,
313         msiRunModeTargetShortNames = 10,
314         msiRunModeWindows9x = 12,
315         msiRunModeZawEnabled = 13,
316         msiRunModeScheduled = 16,
317         msiRunModeRollback = 17,
318         msiRunModeCommit = 18
319     } MsiRunMode;
320
321     typedef enum {
322         msiEvaluateConditionFalse = 0,
323         msiEvaluateConditionTrue = 1,
324         msiEvaluateConditionNone = 2,
325         msiEvaluateConditionError = 3
326     } _MsiEvaluateCondition;           /* Added underscore to avoid conflict with function name */
327
328     typedef enum {
329         msiMessageStatusError = -1,
330         msiMessageStatusNone = 0,
331         msiMessageStatusOk = 1,
332         msiMessageStatusCancel = 2,
333         msiMessageStatusAbort = 3,
334         msiMessageStatusRetry = 4,
335         msiMessageStatusIgnore = 5,
336         msiMessageStatusYes = 6,
337         msiMessageStatusNo = 7
338     } MsiMessageStatus;
339
340     typedef enum {
341         msiMessageTypeFatalExit = 0,
342         msiMessageTypeError          = 0x01000000,
343         msiMessageTypeWarning        = 0x02000000,
344         msiMessageTypeUser           = 0x03000000,
345         msiMessageTypeInfo           = 0x04000000,
346         msiMessageTypeFilesInUse     = 0x05000000,
347         msiMessageTypeResolveSource  = 0x06000000,
348         msiMessageTypeOutOfDiskSpace = 0x07000000,
349         msiMessageTypeActionStart    = 0x08000000,
350         msiMessageTypeActionData     = 0x09000000,
351         msiMessageTypeProgress       = 0x0a000000,
352         msiMessageTypeCommonData     = 0x0b000000,
353         msiMessageTypeOk = 0,
354         msiMessageTypeOkCancel = 1,
355         msiMessageTypeAbortRetryIgnore = 2,
356         msiMessageTypeYesNoCancel = 3,
357         msiMessageTypeYesNo = 4,
358         msiMessageTypeRetryCancel = 5,
359         msiMessageTypeDefault1 = 0,
360         msiMessageTypeDefault2 = 256,
361         msiMessageTypeDefault3 = 512
362     } MsiMessageType;
363
364     [ uuid(000C109E-0000-0000-C000-000000000046) ]
365     dispinterface Session
366     {
367     properties:
368     methods:
369         [id(DISPID_SESSION_INSTALLER), propget]
370             Installer *Installer();
371         [id(DISPID_SESSION_PROPERTY), propget]
372             BSTR Property([in] BSTR Name);
373         [id(DISPID_SESSION_PROPERTY), propput]
374             void Property(
375                 [in] BSTR Name,
376                 [in] BSTR rhs);
377         [id(DISPID_SESSION_LANGUAGE), propget]
378             long Language();
379         [id(DISPID_SESSION_MODE), propget]
380             VARIANT_BOOL Mode([in] MsiRunMode Flag);
381         [id(DISPID_SESSION_MODE), propput]
382             void Mode(
383                 [in] MsiRunMode Flag,
384                 [in] VARIANT_BOOL rhs);
385         [id(DISPID_SESSION_DATABASE), propget]
386             Database* Database();
387         [id(DISPID_SESSION_DOACTION)]
388             MsiDoActionStatus DoAction([in] BSTR Action);
389         [id(DISPID_SESSION_EVALUATECONDITION)]
390             _MsiEvaluateCondition EvaluateCondition([in] BSTR Expression);
391         [id(DISPID_SESSION_MESSAGE)]
392             MsiMessageStatus Message(
393                 [in] MsiMessageType Kind,
394                 [in] Record *Record);
395         [id(DISPID_SESSION_FEATURECURRENTSTATE), propget]
396             MsiInstallState FeatureCurrentState([in] BSTR Feature);
397         [id(DISPID_SESSION_FEATUREREQUESTSTATE), propget]
398             MsiInstallState FeatureRequestState([in] BSTR Feature);
399         [id(DISPID_SESSION_FEATUREREQUESTSTATE), propput]
400             void FeatureRequestState(
401                 [in] BSTR Feature,
402                 [in] MsiInstallState rhs);
403         [id(DISPID_SESSION_SETINSTALLLEVEL)]
404             void SetInstallLevel([in] long Level);
405     }
406
407     [ uuid(000C109F-0000-0000-C000-000000000046) ]
408     dispinterface FeatureInfo
409     {
410         properties:
411         methods:
412     }
413
414     [ uuid(000C10A0-0000-0000-C000-000000000046) ]
415     dispinterface Product
416     {
417         properties:
418         methods:
419     }
420
421     [ uuid(000C10A1-0000-0000-C000-000000000046) ]
422     dispinterface Patch
423     {
424         properties:
425         methods:
426     }
427 }