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
; }