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] BSTR table
, [out] MSICONDITION
*persistent
);
42 HRESULT GetPrimaryKeys
( [in] BSTR table
, [out] MSIHANDLE
*keys
);
43 HRESULT GetSummaryInformation
( [in] UINT updatecount
, [out] MSIHANDLE
*suminfo
);
44 HRESULT OpenView
( [in] BSTR 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] 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 GetFeatureState
( [in] BSTR feature
, [out] INSTALLSTATE
*installed
, [out] INSTALLSTATE
*action
);
67 HRESULT SetFeatureState
( [in] BSTR feature
, [in] INSTALLSTATE state
);
68 HRESULT GetComponentState
( [in] BSTR component
, [out] INSTALLSTATE
*installed
, [out] INSTALLSTATE
*action
);
69 HRESULT SetComponentState
( [in] BSTR component
, [in] INSTALLSTATE state
);
70 HRESULT GetLanguage
( [out] LANGID
*language
);
71 HRESULT SetInstallLevel
( [in] int level
);
72 HRESULT FormatRecord
( [in] MSIHANDLE record
, [out] BSTR *value
);
73 HRESULT EvaluateCondition
( [in] BSTR condition
);
74 HRESULT GetFeatureCost
( [in] BSTR feature
, [in] INT cost_tree
, [in] INSTALLSTATE state
, [out] INT *cost
);
78 uuid(56D58B64
-8780-4c22
-A8BC
-8B0B29E4A9F8
),
82 interface IWineMsiRemoteCustomAction
: IUnknown
84 HRESULT GetActionInfo
( [in] LPCGUID guid
, [out] INT *type
, [out] MSIHANDLE
*handle, [out] BSTR *dllname,
85 [out] BSTR *function
, [out] IWineMsiRemotePackage
**package
);
88 [ uuid(000C1092
-0000-0000-C000
-000000000046), version(1.0) ]
89 library WindowsInstaller
91 dispinterface Installer
;
93 dispinterface Session
;
94 dispinterface Database
;
95 dispinterface SummaryInfo
;
97 dispinterface UIPreview
;
98 dispinterface FeatureInfo
;
99 dispinterface RecordList
;
100 dispinterface StringList
;
101 dispinterface Product
;
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
121 msiOpenDatabaseModeReadOnly
= 0,
122 msiOpenDatabaseModeTransact
= 1,
123 msiOpenDatabaseModeDirect
= 2,
124 msiOpenDatabaseModeCreate
= 3,
125 msiOpenDatabaseModeCreateDirect
= 4,
126 msiOpenDatabaseModePatchFile
= 32
127 } MsiOpenDatabaseMode
;
130 msiUILevelNoChange
= 0,
131 msiUILevelDefault
= 1,
134 msiUILevelReduced
= 4,
136 msiUILevelHideCancel
= 32,
137 msiUILevelProgressOnly
= 64,
138 msiUILevelEndDialog
= 128,
139 msiUILevelSourceResOnly
= 256
142 [ uuid(000C1090
-0000-0000-C000
-000000000046) ]
143 dispinterface Installer
146 [id(DISPID_INSTALLER_UILEVEL
)]
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_OPENPRODUCT
)]
156 Session
* OpenProduct
(
157 [in] BSTR ProductCode
);
158 [id(DISPID_INSTALLER_SUMMARYINFORMATION
)]
159 SummaryInfo
* SummaryInformation
(
160 [in] BSTR PackagePath
,
161 [in, optional, defaultvalue(0)] long UpdateCount
);
162 [id(DISPID_INSTALLER_OPENDATABASE
)]
163 Database
*OpenDatabase
(
164 [in] BSTR DatabasePath
,
165 [in] VARIANT OpenMode
);
166 [id(DISPID_INSTALLER_ENABLELOG
)]
170 [id(DISPID_INSTALLER_INSTALLPRODUCT
)]
172 [in] BSTR PackagePath
,
173 [in, optional, defaultvalue("0")] BSTR PropertyValues
);
174 [id(DISPID_INSTALLER_VERSION
)]
176 [id(DISPID_INSTALLER_LASTERRORRECORD
)]
177 Record
* LastErrorRecord
();
178 [id(DISPID_INSTALLER_REGISTRYVALUE
), propget]
182 [in, optional] VARIANT Value
);
183 [id(DISPID_INSTALLER_ENVIRONMENT
), propget]
184 BSTR Environment
([in] BSTR Variable
);
185 [id(DISPID_INSTALLER_ENVIRONMENT
), propput]
189 [id(DISPID_INSTALLER_FILEATTRIBUTES
)]
190 long FileAttributes
([in] BSTR FilePath
);
191 [id(DISPID_INSTALLER_FILESIZE
)]
192 long FileSize
([in] BSTR FilePath
);
193 [id(DISPID_INSTALLER_FILEVERSION
)]
196 [in, optional] VARIANT Language
);
197 [id(DISPID_INSTALLER_PRODUCTSTATE
), propget]
198 MsiInstallState ProductState
(
200 [id(DISPID_INSTALLER_PRODUCTINFO
), propget]
203 [in] BSTR Attribute
);
204 [id(DISPID_INSTALLER_PRODUCTS
), propget]
205 StringList
*Products
();
206 [id(DISPID_INSTALLER_RELATEDPRODUCTS
), propget]
207 StringList
*RelatedProducts
(
208 [in] BSTR UpgradeCode
);
211 [ uuid(000C1093
-0000-0000-C000
-000000000046) ]
216 [id(DISPID_RECORD_STRINGDATA
), propget]
217 BSTR StringData
([in] long Field
);
218 [id(DISPID_RECORD_STRINGDATA
), propput]
222 [id(DISPID_RECORD_INTEGERDATA
), propget]
223 long IntegerData
([in] long Field
);
224 [id(DISPID_RECORD_INTEGERDATA
), propput]
228 [id(DISPID_RECORD_FIELDCOUNT
), propget]
232 [ uuid(000C1095
-0000-0000-C000
-000000000046) ]
233 dispinterface StringList
237 [id(DISPID_LIST__NEWENUM
)]
239 [id(DISPID_LIST_ITEM
), propget]
240 BSTR Item
(long Index
);
241 [id(DISPID_LIST_COUNT
), propget]
245 [ uuid(000C1096
-0000-0000-C000
-000000000046) ]
246 dispinterface RecordList
252 [ uuid(000C109A
-0000-0000-C000
-000000000046) ]
253 dispinterface UIPreview
259 [ uuid(000C109B
-0000-0000-C000
-000000000046) ]
260 dispinterface SummaryInfo
264 [id(DISPID_SUMMARYINFO_PROPERTY
), propget]
265 VARIANT Property
([in] long Pid
);
266 [id(DISPID_SUMMARYINFO_PROPERTY
), propput]
270 [id(DISPID_SUMMARYINFO_PROPERTYCOUNT
), propget]
271 long PropertyCount
();
275 msiViewModifySeek
= -1,
276 msiViewModifyRefresh
= 0,
277 msiViewModifyInsert
= 1,
278 msiViewModifyUpdate
= 2,
279 msiViewModifyAssign
= 3,
280 msiViewModifyReplace
= 4,
281 msiViewModifyMerge
= 5,
282 msiViewModifyDelete
= 6,
283 msiViewModifyInsertTemporary
= 7,
284 msiViewModifyValidate
= 8,
285 msiViewModifyValidateNew
= 9,
286 msiViewModifyValidateField
= 10,
287 msiViewModifyValidateDelete
= 11,
288 } _MsiViewModify
; /* Added underscore to avoid conflict with function name */
290 [ uuid(000C109C
-0000-0000-C000
-000000000046) ]
295 [id(DISPID_VIEW_EXECUTE
)]
296 void Execute
([in, optional, defaultvalue(0)] Record
*Params
);
297 [id(DISPID_VIEW_FETCH
)]
299 [id(DISPID_VIEW_MODIFY
)]
301 [in] _MsiViewModify Mode
,
303 [id(DISPID_VIEW_CLOSE
)]
307 [ uuid(000C109D
-0000-0000-C000
-000000000046) ]
308 dispinterface Database
312 [id(DISPID_DATABASE_OPENVIEW
)]
313 View
* OpenView
([in] BSTR Sql
);
314 [id(DISPID_DATABASE_SUMMARYINFORMATION
), propget]
315 SummaryInfo
*SummaryInformation
([in, optional, defaultvalue(0)] long UpdateCount
);
319 msiDoActionStatusNoAction
= 0,
320 msiDoActionStatusSuccess
= 1,
321 msiDoActionStatusUserExit
= 2,
322 msiDoActionStatusFailure
= 3,
323 msiDoActionStatusSuspend
= 4,
324 msiDoActionStatusFinished
= 5,
325 msiDoActionStatusWrongState
= 6,
326 msiDoActionStatusBadActionData
= 7
331 msiRunModeAdvertise
= 1,
332 msiRunModeMaintenance
= 2,
333 msiRunModeRollbackEnabled
= 3,
334 msiRunModeLogEnabled
= 4,
335 msiRunModeOperations
= 5,
336 msiRunModeRebootAtEnd
= 6,
337 msiRunModeRebootNow
= 7,
338 msiRunModeCabinet
= 8,
339 msiRunModeSourceShortNames
= 9,
340 msiRunModeTargetShortNames
= 10,
341 msiRunModeWindows9x
= 12,
342 msiRunModeZawEnabled
= 13,
343 msiRunModeScheduled
= 16,
344 msiRunModeRollback
= 17,
345 msiRunModeCommit
= 18
349 msiEvaluateConditionFalse
= 0,
350 msiEvaluateConditionTrue
= 1,
351 msiEvaluateConditionNone
= 2,
352 msiEvaluateConditionError
= 3
353 } _MsiEvaluateCondition
; /* Added underscore to avoid conflict with function name */
356 msiMessageStatusError
= -1,
357 msiMessageStatusNone
= 0,
358 msiMessageStatusOk
= 1,
359 msiMessageStatusCancel
= 2,
360 msiMessageStatusAbort
= 3,
361 msiMessageStatusRetry
= 4,
362 msiMessageStatusIgnore
= 5,
363 msiMessageStatusYes
= 6,
364 msiMessageStatusNo
= 7
368 msiMessageTypeFatalExit
= 0,
369 msiMessageTypeError
= 0x01000000,
370 msiMessageTypeWarning
= 0x02000000,
371 msiMessageTypeUser
= 0x03000000,
372 msiMessageTypeInfo
= 0x04000000,
373 msiMessageTypeFilesInUse
= 0x05000000,
374 msiMessageTypeResolveSource
= 0x06000000,
375 msiMessageTypeOutOfDiskSpace
= 0x07000000,
376 msiMessageTypeActionStart
= 0x08000000,
377 msiMessageTypeActionData
= 0x09000000,
378 msiMessageTypeProgress
= 0x0a000000,
379 msiMessageTypeCommonData
= 0x0b000000,
380 msiMessageTypeOk
= 0,
381 msiMessageTypeOkCancel
= 1,
382 msiMessageTypeAbortRetryIgnore
= 2,
383 msiMessageTypeYesNoCancel
= 3,
384 msiMessageTypeYesNo
= 4,
385 msiMessageTypeRetryCancel
= 5,
386 msiMessageTypeDefault1
= 0,
387 msiMessageTypeDefault2
= 256,
388 msiMessageTypeDefault3
= 512
391 [ uuid(000C109E
-0000
-0000-C000
-000000000046) ]
392 dispinterface Session
396 [id(DISPID_SESSION_INSTALLER
), propget]
397 Installer
*Installer
();
398 [id(DISPID_SESSION_PROPERTY
), propget]
399 BSTR Property
([in] BSTR Name
);
400 [id(DISPID_SESSION_PROPERTY
), propput]
404 [id(DISPID_SESSION_LANGUAGE
), propget]
406 [id(DISPID_SESSION_MODE
), propget]
407 VARIANT_BOOL Mode
([in] MsiRunMode Flag
);
408 [id(DISPID_SESSION_MODE
), propput]
410 [in] MsiRunMode Flag
,
411 [in] VARIANT_BOOL rhs
);
412 [id(DISPID_SESSION_DATABASE
), propget]
413 Database
* Database
();
414 [id(DISPID_SESSION_DOACTION
)]
415 MsiDoActionStatus DoAction
([in] BSTR Action
);
416 [id(DISPID_SESSION_EVALUATECONDITION
)]
417 _MsiEvaluateCondition EvaluateCondition
([in] BSTR Expression
);
418 [id(DISPID_SESSION_MESSAGE
)]
419 MsiMessageStatus
Message(
420 [in] MsiMessageType Kind
,
421 [in] Record
*Record
);
422 [id(DISPID_SESSION_FEATURECURRENTSTATE
), propget]
423 MsiInstallState FeatureCurrentState
([in] BSTR Feature
);
424 [id(DISPID_SESSION_FEATUREREQUESTSTATE
), propget]
425 MsiInstallState FeatureRequestState
([in] BSTR Feature
);
426 [id(DISPID_SESSION_FEATUREREQUESTSTATE
), propput]
427 void FeatureRequestState
(
429 [in] MsiInstallState rhs
);
430 [id(DISPID_SESSION_SETINSTALLLEVEL
)]
431 void SetInstallLevel
([in] long Level
);
434 [ uuid(000C109F
-0000-0000-C000
-000000000046) ]
435 dispinterface FeatureInfo
441 [ uuid(000C10A0
-0000-0000-C000
-000000000046) ]
442 dispinterface Product
448 [ uuid(000C10A1
-0000-0000-C000
-000000000046) ]