2 * Copyright (C) 2007 Mike McCormack
3 * Copyright (C) 2007 Misha Koshelev
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.
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.
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
20 #include "msiserver_dispids.h"
27 typedef unsigned long MSIHANDLE;
28 typedef int INSTALLMESSAGE;
29 typedef int MSICONDITION;
30 typedef int MSIRUNMODE;
31 typedef int INSTALLSTATE;
35 uuid(7BDE2046-D03B-4ffc-B84C-A098F38CFF0B),
39 interface IWineMsiRemoteDatabase : IUnknown
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 );
49 uuid(902B3592-9D08-4dfd-A593-D07C52546421),
53 interface IWineMsiRemotePackage : IUnknown
55 HRESULT SetMsiHandle( [in] MSIHANDLE handle );
56 HRESULT GetActiveDatabase( [out] MSIHANDLE *handle );
57 HRESULT GetProperty( [in] BSTR property, [out, size_is(*size)] BSTR value, [in, 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, size_is(*size)] BSTR value, [in, out] DWORD *size );
63 HRESULT SetTargetPath( [in] BSTR folder, [in] BSTR value );
64 HRESULT GetSourcePath( [in] BSTR folder, [out, size_is(*size)] BSTR value, [in, 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 HRESULT EnumComponentCosts( [in] BSTR component, [in] DWORD index, [in] INSTALLSTATE state,
77 [out, size_is(*buflen)] BSTR drive, [in, out] DWORD *buflen, [out] INT *cost, [out] INT *temp );
81 uuid(56D58B64-8780-4c22-A8BC-8B0B29E4A9F8),
85 interface IWineMsiRemoteCustomAction : IUnknown
87 HRESULT GetActionInfo( [in] LPCGUID guid, [out] INT *type, [out] MSIHANDLE *handle, [out] BSTR *dllname,
88 [out] BSTR *function, [out] IWineMsiRemotePackage **package );
92 uuid(000c101c-0000-0000-c000-000000000046),
96 interface IMsiServer : IUnknown
102 uuid(000c101d-0000-0000-c000-000000000046),
106 interface IMsiMessage : IUnknown
112 uuid(000c1025-0000-0000-c000-000000000046),
116 interface IMsiCustomAction : IUnknown
122 uuid(000c1033-0000-0000-c000-000000000046),
126 interface IMsiRemoteAPI : IUnknown
132 helpstring("Msi install server"),
133 progid("IMsiServer"),
134 uuid(000c101c-0000-0000-c000-000000000046)
136 coclass MsiServer { interface IMsiServer; }
139 helpstring("Microsoft Windows Installer Message RPC"),
140 progid("WindowsInstaller.Message"),
141 uuid(000c101d-0000-0000-c000-000000000046)
143 coclass MsiServerMessage { interface IMsiMessage; }
147 uuid(000c103e-0000-0000-c000-000000000046)
149 coclass PSFactoryBuffer { interface IPSFactoryBuffer; }
152 uuid(000c1082-0000-0000-c000-000000000046)
154 coclass MsiTransform { }
157 uuid(000c1084-0000-0000-c000-000000000046)
159 coclass MsiDatabase { }
162 uuid(000c1086-0000-0000-c000-000000000046)
167 threading(apartment),
168 uuid(000c1094-0000-0000-c000-000000000046)
170 /* FIXME: unidentified class */
171 coclass MsiServerX3 { interface IMsiServer; }
174 uuid(ba26e6fa-4f27-4f56-953a-3f90272018aa)
176 coclass WineMsiRemoteCustomAction { interface WineMsiRemoteCustomAction; }
179 uuid(902b3592-9d08-4dfd-a593-d07c52546421)
181 coclass WineMsiRemotePackage { interface WineMsiRemotePackage; }
184 [ uuid(000C1092-0000-0000-C000-000000000046), version(1.0) ]
185 library WindowsInstaller
187 dispinterface Installer;
188 dispinterface Record;
189 dispinterface Session;
190 dispinterface Database;
191 dispinterface SummaryInfo;
193 dispinterface UIPreview;
194 dispinterface FeatureInfo;
195 dispinterface RecordList;
196 dispinterface StringList;
197 dispinterface Product;
201 msiInstallStateNotUsed = -7,
202 msiInstallStateBadConfig = -6,
203 msiInstallStateIncomplete = -5,
204 msiInstallStateSourceAbsent = -4,
205 msiInstallStateInvalidArg = -2,
206 msiInstallStateUnknown = -1,
207 msiInstallStateBroken = 0,
208 msiInstallStateAdvertised = 1,
209 msiInstallStateRemoved = 1,
210 msiInstallStateAbsent = 2,
211 msiInstallStateLocal = 3,
212 msiInstallStateSource = 4,
213 msiInstallStateDefault = 5
217 msiOpenDatabaseModeReadOnly = 0,
218 msiOpenDatabaseModeTransact = 1,
219 msiOpenDatabaseModeDirect = 2,
220 msiOpenDatabaseModeCreate = 3,
221 msiOpenDatabaseModeCreateDirect = 4,
222 msiOpenDatabaseModePatchFile = 32
223 } MsiOpenDatabaseMode;
226 msiUILevelNoChange = 0,
227 msiUILevelDefault = 1,
230 msiUILevelReduced = 4,
232 msiUILevelHideCancel = 32,
233 msiUILevelProgressOnly = 64,
234 msiUILevelEndDialog = 128,
235 msiUILevelSourceResOnly = 256
238 [ uuid(000C1090-0000-0000-C000-000000000046) ]
239 dispinterface Installer
242 [id(DISPID_INSTALLER_UILEVEL)]
245 [id(DISPID_INSTALLER_CREATERECORD)]
246 Record *CreateRecord([in] long Count);
247 [id(DISPID_INSTALLER_OPENPACKAGE)]
248 Session* OpenPackage(
249 [in] VARIANT PackagePath,
250 [in, optional, defaultvalue(0)] long Options);
251 [id(DISPID_INSTALLER_OPENPRODUCT)]
252 Session* OpenProduct(
253 [in] BSTR ProductCode);
254 [id(DISPID_INSTALLER_SUMMARYINFORMATION)]
255 SummaryInfo* SummaryInformation(
256 [in] BSTR PackagePath,
257 [in, optional, defaultvalue(0)] long UpdateCount);
258 [id(DISPID_INSTALLER_OPENDATABASE)]
259 Database *OpenDatabase(
260 [in] BSTR DatabasePath,
261 [in] VARIANT OpenMode);
262 [id(DISPID_INSTALLER_ENABLELOG)]
266 [id(DISPID_INSTALLER_INSTALLPRODUCT)]
268 [in] BSTR PackagePath,
269 [in, optional, defaultvalue("0")] BSTR PropertyValues);
270 [id(DISPID_INSTALLER_VERSION)]
272 [id(DISPID_INSTALLER_LASTERRORRECORD)]
273 Record* LastErrorRecord();
274 [id(DISPID_INSTALLER_REGISTRYVALUE), propget]
278 [in, optional] VARIANT Value);
279 [id(DISPID_INSTALLER_ENVIRONMENT), propget]
280 BSTR Environment([in] BSTR Variable);
281 [id(DISPID_INSTALLER_ENVIRONMENT), propput]
285 [id(DISPID_INSTALLER_FILEATTRIBUTES)]
286 long FileAttributes([in] BSTR FilePath);
287 [id(DISPID_INSTALLER_FILESIZE)]
288 long FileSize([in] BSTR FilePath);
289 [id(DISPID_INSTALLER_FILEVERSION)]
292 [in, optional] VARIANT Language);
293 [id(DISPID_INSTALLER_PRODUCTSTATE), propget]
294 MsiInstallState ProductState(
296 [id(DISPID_INSTALLER_PRODUCTINFO), propget]
299 [in] BSTR Attribute);
300 [id(DISPID_INSTALLER_PRODUCTS), propget]
301 StringList *Products();
302 [id(DISPID_INSTALLER_RELATEDPRODUCTS), propget]
303 StringList *RelatedProducts(
304 [in] BSTR UpgradeCode);
307 [ uuid(000C1093-0000-0000-C000-000000000046) ]
312 [id(DISPID_RECORD_STRINGDATA), propget]
313 BSTR StringData([in] long Field);
314 [id(DISPID_RECORD_STRINGDATA), propput]
318 [id(DISPID_RECORD_INTEGERDATA), propget]
319 long IntegerData([in] long Field);
320 [id(DISPID_RECORD_INTEGERDATA), propput]
324 [id(DISPID_RECORD_FIELDCOUNT), propget]
328 [ uuid(000C1095-0000-0000-C000-000000000046) ]
329 dispinterface StringList
333 [id(DISPID_LIST__NEWENUM)]
335 [id(DISPID_LIST_ITEM), propget]
336 BSTR Item(long Index);
337 [id(DISPID_LIST_COUNT), propget]
341 [ uuid(000C1096-0000-0000-C000-000000000046) ]
342 dispinterface RecordList
348 [ uuid(000C109A-0000-0000-C000-000000000046) ]
349 dispinterface UIPreview
355 [ uuid(000C109B-0000-0000-C000-000000000046) ]
356 dispinterface SummaryInfo
360 [id(DISPID_SUMMARYINFO_PROPERTY), propget]
361 VARIANT Property([in] long Pid);
362 [id(DISPID_SUMMARYINFO_PROPERTY), propput]
366 [id(DISPID_SUMMARYINFO_PROPERTYCOUNT), propget]
367 long PropertyCount();
371 msiViewModifySeek = -1,
372 msiViewModifyRefresh = 0,
373 msiViewModifyInsert = 1,
374 msiViewModifyUpdate = 2,
375 msiViewModifyAssign = 3,
376 msiViewModifyReplace = 4,
377 msiViewModifyMerge = 5,
378 msiViewModifyDelete = 6,
379 msiViewModifyInsertTemporary = 7,
380 msiViewModifyValidate = 8,
381 msiViewModifyValidateNew = 9,
382 msiViewModifyValidateField = 10,
383 msiViewModifyValidateDelete = 11,
384 } _MsiViewModify; /* Added underscore to avoid conflict with function name */
386 [ uuid(000C109C-0000-0000-C000-000000000046) ]
391 [id(DISPID_VIEW_EXECUTE)]
392 void Execute([in, optional, defaultvalue(0)] Record *Params);
393 [id(DISPID_VIEW_FETCH)]
395 [id(DISPID_VIEW_MODIFY)]
397 [in] _MsiViewModify Mode,
399 [id(DISPID_VIEW_CLOSE)]
403 [ uuid(000C109D-0000-0000-C000-000000000046) ]
404 dispinterface Database
408 [id(DISPID_DATABASE_OPENVIEW)]
409 View* OpenView([in] BSTR Sql);
410 [id(DISPID_DATABASE_SUMMARYINFORMATION), propget]
411 SummaryInfo *SummaryInformation([in, optional, defaultvalue(0)] long UpdateCount);
415 msiDoActionStatusNoAction = 0,
416 msiDoActionStatusSuccess = 1,
417 msiDoActionStatusUserExit = 2,
418 msiDoActionStatusFailure = 3,
419 msiDoActionStatusSuspend = 4,
420 msiDoActionStatusFinished = 5,
421 msiDoActionStatusWrongState = 6,
422 msiDoActionStatusBadActionData = 7
427 msiRunModeAdvertise = 1,
428 msiRunModeMaintenance = 2,
429 msiRunModeRollbackEnabled = 3,
430 msiRunModeLogEnabled = 4,
431 msiRunModeOperations = 5,
432 msiRunModeRebootAtEnd = 6,
433 msiRunModeRebootNow = 7,
434 msiRunModeCabinet = 8,
435 msiRunModeSourceShortNames = 9,
436 msiRunModeTargetShortNames = 10,
437 msiRunModeWindows9x = 12,
438 msiRunModeZawEnabled = 13,
439 msiRunModeScheduled = 16,
440 msiRunModeRollback = 17,
441 msiRunModeCommit = 18
445 msiEvaluateConditionFalse = 0,
446 msiEvaluateConditionTrue = 1,
447 msiEvaluateConditionNone = 2,
448 msiEvaluateConditionError = 3
449 } _MsiEvaluateCondition; /* Added underscore to avoid conflict with function name */
452 msiMessageStatusError = -1,
453 msiMessageStatusNone = 0,
454 msiMessageStatusOk = 1,
455 msiMessageStatusCancel = 2,
456 msiMessageStatusAbort = 3,
457 msiMessageStatusRetry = 4,
458 msiMessageStatusIgnore = 5,
459 msiMessageStatusYes = 6,
460 msiMessageStatusNo = 7
464 msiMessageTypeFatalExit = 0,
465 msiMessageTypeError = 0x01000000,
466 msiMessageTypeWarning = 0x02000000,
467 msiMessageTypeUser = 0x03000000,
468 msiMessageTypeInfo = 0x04000000,
469 msiMessageTypeFilesInUse = 0x05000000,
470 msiMessageTypeResolveSource = 0x06000000,
471 msiMessageTypeOutOfDiskSpace = 0x07000000,
472 msiMessageTypeActionStart = 0x08000000,
473 msiMessageTypeActionData = 0x09000000,
474 msiMessageTypeProgress = 0x0a000000,
475 msiMessageTypeCommonData = 0x0b000000,
476 msiMessageTypeOk = 0,
477 msiMessageTypeOkCancel = 1,
478 msiMessageTypeAbortRetryIgnore = 2,
479 msiMessageTypeYesNoCancel = 3,
480 msiMessageTypeYesNo = 4,
481 msiMessageTypeRetryCancel = 5,
482 msiMessageTypeDefault1 = 0,
483 msiMessageTypeDefault2 = 256,
484 msiMessageTypeDefault3 = 512
487 [ uuid(000C109E-0000-0000-C000-000000000046) ]
488 dispinterface Session
492 [id(DISPID_SESSION_INSTALLER), propget]
493 Installer *Installer();
494 [id(DISPID_SESSION_PROPERTY), propget]
495 BSTR Property([in] BSTR Name);
496 [id(DISPID_SESSION_PROPERTY), propput]
500 [id(DISPID_SESSION_LANGUAGE), propget]
502 [id(DISPID_SESSION_MODE), propget]
503 VARIANT_BOOL Mode([in] MsiRunMode Flag);
504 [id(DISPID_SESSION_MODE), propput]
506 [in] MsiRunMode Flag,
507 [in] VARIANT_BOOL rhs);
508 [id(DISPID_SESSION_DATABASE), propget]
509 Database* Database();
510 [id(DISPID_SESSION_DOACTION)]
511 MsiDoActionStatus DoAction([in] BSTR Action);
512 [id(DISPID_SESSION_EVALUATECONDITION)]
513 _MsiEvaluateCondition EvaluateCondition([in] BSTR Expression);
514 [id(DISPID_SESSION_MESSAGE)]
515 MsiMessageStatus Message(
516 [in] MsiMessageType Kind,
517 [in] Record *Record);
518 [id(DISPID_SESSION_FEATURECURRENTSTATE), propget]
519 MsiInstallState FeatureCurrentState([in] BSTR Feature);
520 [id(DISPID_SESSION_FEATUREREQUESTSTATE), propget]
521 MsiInstallState FeatureRequestState([in] BSTR Feature);
522 [id(DISPID_SESSION_FEATUREREQUESTSTATE), propput]
523 void FeatureRequestState(
525 [in] MsiInstallState rhs);
526 [id(DISPID_SESSION_SETINSTALLLEVEL)]
527 void SetInstallLevel([in] long Level);
530 [ uuid(000C109F-0000-0000-C000-000000000046) ]
531 dispinterface FeatureInfo
537 [ uuid(000C10A0-0000-0000-C000-000000000046) ]
538 dispinterface Product
544 [ uuid(000C10A1-0000-0000-C000-000000000046) ]
552 helpstring("Microsoft Windows Installer"),
553 threading(apartment),
554 progid("WindowsInstaller.Installer"),
555 uuid(000c1090-0000-0000-c000-000000000046)
557 coclass MsiInstaller { interface Installer; }