ac442dbd0766fe0d4a777e257d26f10739ba8189
[reactos.git] / reactos / dll / win32 / 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 }