2007-01-26 13:14:58 +01:00
|
|
|
/*
|
|
|
|
* Copyright (C) 2007 Mike McCormack
|
2007-05-22 07:07:06 +02:00
|
|
|
* Copyright (C) 2007 Misha Koshelev
|
2007-01-26 13:14:58 +01:00
|
|
|
*
|
|
|
|
* This library is free software; you can redistribute it and/or
|
|
|
|
* modify it under the terms of the GNU Lesser General Public
|
|
|
|
* License as published by the Free Software Foundation; either
|
|
|
|
* version 2.1 of the License, or (at your option) any later version.
|
|
|
|
*
|
|
|
|
* This library is distributed in the hope that it will be useful,
|
|
|
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
|
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
|
|
|
* Lesser General Public License for more details.
|
|
|
|
*
|
|
|
|
* You should have received a copy of the GNU Lesser General Public
|
|
|
|
* License along with this library; if not, write to the Free Software
|
|
|
|
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
|
|
|
|
*/
|
|
|
|
|
2007-05-01 03:53:49 +02:00
|
|
|
#include "msiserver_dispids.h"
|
2007-01-26 13:14:58 +01:00
|
|
|
import "unknwn.idl";
|
|
|
|
import "wtypes.idl";
|
|
|
|
import "objidl.idl";
|
|
|
|
import "oaidl.idl";
|
|
|
|
|
2007-07-03 05:15:01 +02:00
|
|
|
cpp_quote("#if 0")
|
|
|
|
typedef unsigned long MSIHANDLE;
|
2007-07-04 04:13:45 +02:00
|
|
|
typedef int INSTALLMESSAGE;
|
2007-07-04 04:17:26 +02:00
|
|
|
typedef int MSIRUNMODE;
|
2007-07-04 04:18:04 +02:00
|
|
|
typedef int INSTALLSTATE;
|
2007-07-04 04:20:17 +02:00
|
|
|
typedef WORD LANGID;
|
2007-07-03 05:15:01 +02:00
|
|
|
cpp_quote("#endif")
|
|
|
|
|
|
|
|
[
|
|
|
|
uuid(902B3592-9D08-4dfd-A593-D07C52546421),
|
|
|
|
oleautomation,
|
|
|
|
object
|
|
|
|
]
|
|
|
|
interface IWineMsiRemotePackage : IUnknown
|
|
|
|
{
|
|
|
|
HRESULT SetMsiHandle( [in] MSIHANDLE handle );
|
|
|
|
HRESULT GetActiveDatabase( [out] MSIHANDLE *handle );
|
2007-07-06 02:48:08 +02:00
|
|
|
HRESULT GetProperty( [in] BSTR property, [out] BSTR *value, [out] DWORD *size );
|
|
|
|
HRESULT SetProperty( [in] BSTR property, [in] BSTR value );
|
2007-07-04 04:13:45 +02:00
|
|
|
HRESULT ProcessMessage( [in] INSTALLMESSAGE message, [in] MSIHANDLE record );
|
2007-07-06 02:48:08 +02:00
|
|
|
HRESULT DoAction( [in] BSTR action );
|
|
|
|
HRESULT Sequence( [in] BSTR table, [in] int sequence );
|
|
|
|
HRESULT GetTargetPath( [in] BSTR folder, [out] BSTR *value, [out] DWORD *size );
|
|
|
|
HRESULT SetTargetPath( [in] BSTR folder, [in] BSTR value );
|
|
|
|
HRESULT GetSourcePath( [in] BSTR folder, [out] BSTR *value, [out] DWORD *size );
|
2007-07-04 04:17:26 +02:00
|
|
|
HRESULT GetMode( [in] MSIRUNMODE mode, [out] BOOL *ret );
|
2007-07-06 02:48:08 +02:00
|
|
|
HRESULT GetFeatureState( [in] BSTR feature, [out] INSTALLSTATE *installed, [out] INSTALLSTATE *action );
|
|
|
|
HRESULT SetFeatureState( [in] BSTR feature, [in] INSTALLSTATE state );
|
|
|
|
HRESULT GetComponentState( [in] BSTR component, [out] INSTALLSTATE *installed, [out] INSTALLSTATE *action );
|
|
|
|
HRESULT SetComponentState( [in] BSTR component, [in] INSTALLSTATE state );
|
2007-07-04 04:20:17 +02:00
|
|
|
HRESULT GetLanguage( [out] LANGID *language );
|
2007-07-04 04:20:48 +02:00
|
|
|
HRESULT SetInstallLevel( [in] int level );
|
2007-07-06 02:48:43 +02:00
|
|
|
HRESULT FormatRecord( [in] MSIHANDLE record, [out] BSTR value, [out] DWORD *size );
|
2007-07-06 02:53:03 +02:00
|
|
|
HRESULT EvaluateCondition( [in] BSTR condition );
|
2007-07-03 05:15:01 +02:00
|
|
|
}
|
|
|
|
|
2007-07-03 05:15:32 +02:00
|
|
|
[
|
|
|
|
uuid(56D58B64-8780-4c22-A8BC-8B0B29E4A9F8),
|
|
|
|
oleautomation,
|
|
|
|
object
|
|
|
|
]
|
|
|
|
interface IWineMsiRemoteCustomAction : IUnknown
|
|
|
|
{
|
2007-07-06 02:56:22 +02:00
|
|
|
HRESULT GetActionInfo( [in] LPCGUID guid, [out] INT *type, [out] MSIHANDLE *handle, [out] BSTR *dllname,
|
2007-07-03 05:15:32 +02:00
|
|
|
[out] BSTR *function, [out] IWineMsiRemotePackage **package );
|
|
|
|
}
|
|
|
|
|
2007-01-26 13:14:58 +01:00
|
|
|
[ uuid(000C1092-0000-0000-C000-000000000046), version(1.0) ]
|
|
|
|
library WindowsInstaller
|
|
|
|
{
|
|
|
|
dispinterface Installer;
|
|
|
|
dispinterface Record;
|
|
|
|
dispinterface Session;
|
|
|
|
dispinterface Database;
|
|
|
|
dispinterface SummaryInfo;
|
|
|
|
dispinterface View;
|
|
|
|
dispinterface UIPreview;
|
|
|
|
dispinterface FeatureInfo;
|
|
|
|
dispinterface RecordList;
|
|
|
|
dispinterface StringList;
|
|
|
|
dispinterface Product;
|
|
|
|
dispinterface Patch;
|
|
|
|
|
2007-05-08 00:50:30 +02:00
|
|
|
typedef enum {
|
|
|
|
msiInstallStateNotUsed = -7,
|
|
|
|
msiInstallStateBadConfig = -6,
|
|
|
|
msiInstallStateIncomplete = -5,
|
|
|
|
msiInstallStateSourceAbsent = -4,
|
|
|
|
msiInstallStateInvalidArg = -2,
|
|
|
|
msiInstallStateUnknown = -1,
|
|
|
|
msiInstallStateBroken = 0,
|
|
|
|
msiInstallStateAdvertised = 1,
|
|
|
|
msiInstallStateRemoved = 1,
|
|
|
|
msiInstallStateAbsent = 2,
|
|
|
|
msiInstallStateLocal = 3,
|
|
|
|
msiInstallStateSource = 4,
|
|
|
|
msiInstallStateDefault = 5
|
|
|
|
} MsiInstallState;
|
|
|
|
|
2007-06-04 16:26:37 +02:00
|
|
|
typedef enum {
|
|
|
|
msiOpenDatabaseModeReadOnly = 0,
|
|
|
|
msiOpenDatabaseModeTransact = 1,
|
|
|
|
msiOpenDatabaseModeDirect = 2,
|
|
|
|
msiOpenDatabaseModeCreate = 3,
|
|
|
|
msiOpenDatabaseModeCreateDirect = 4,
|
|
|
|
msiOpenDatabaseModePatchFile = 32
|
|
|
|
} MsiOpenDatabaseMode;
|
|
|
|
|
2007-01-26 13:14:58 +01:00
|
|
|
[ uuid(000C1090-0000-0000-C000-000000000046) ]
|
|
|
|
dispinterface Installer
|
|
|
|
{
|
|
|
|
properties:
|
|
|
|
methods:
|
2007-05-11 21:07:58 +02:00
|
|
|
[id(DISPID_INSTALLER_CREATERECORD)]
|
|
|
|
Record *CreateRecord([in] long Count);
|
2007-05-01 03:53:49 +02:00
|
|
|
[id(DISPID_INSTALLER_OPENPACKAGE)]
|
|
|
|
Session* OpenPackage(
|
2007-05-08 00:49:17 +02:00
|
|
|
[in] VARIANT PackagePath,
|
|
|
|
[in, optional, defaultvalue(0)] long Options);
|
2007-06-01 04:49:52 +02:00
|
|
|
[id(DISPID_INSTALLER_OPENDATABASE)]
|
2007-06-02 03:06:06 +02:00
|
|
|
Database *OpenDatabase(
|
|
|
|
[in] BSTR DatabasePath,
|
|
|
|
[in] VARIANT OpenMode);
|
2007-05-14 19:14:51 +02:00
|
|
|
[id(DISPID_INSTALLER_INSTALLPRODUCT)]
|
|
|
|
void InstallProduct(
|
|
|
|
[in] BSTR PackagePath,
|
|
|
|
[in, optional, defaultvalue("0")] BSTR PropertyValues);
|
2007-05-10 22:40:28 +02:00
|
|
|
[id(DISPID_INSTALLER_REGISTRYVALUE), propget]
|
|
|
|
BSTR RegistryValue(
|
|
|
|
[in] VARIANT Root,
|
|
|
|
[in] BSTR Key,
|
|
|
|
[in, optional] VARIANT Value);
|
2007-05-08 00:50:30 +02:00
|
|
|
[id(DISPID_INSTALLER_PRODUCTSTATE), propget]
|
|
|
|
MsiInstallState ProductState(
|
|
|
|
[in] BSTR Product);
|
2007-05-17 07:42:46 +02:00
|
|
|
[id(DISPID_INSTALLER_PRODUCTINFO), propget]
|
|
|
|
BSTR ProductInfo(
|
|
|
|
[in] BSTR Product,
|
|
|
|
[in] BSTR Attribute);
|
2007-05-08 00:50:30 +02:00
|
|
|
[id(DISPID_INSTALLER_PRODUCTS), propget]
|
|
|
|
StringList *Products();
|
2007-05-14 19:15:13 +02:00
|
|
|
[id(DISPID_INSTALLER_RELATEDPRODUCTS), propget]
|
|
|
|
StringList *RelatedProducts(
|
|
|
|
[in] BSTR UpgradeCode);
|
2007-01-26 13:14:58 +01:00
|
|
|
}
|
|
|
|
|
|
|
|
[ uuid(000C1093-0000-0000-C000-000000000046) ]
|
|
|
|
dispinterface Record
|
|
|
|
{
|
|
|
|
properties:
|
|
|
|
methods:
|
2007-05-01 03:53:49 +02:00
|
|
|
[id(DISPID_RECORD_STRINGDATA), propget]
|
2007-05-08 00:49:17 +02:00
|
|
|
BSTR StringData([in] long Field);
|
2007-05-01 03:53:49 +02:00
|
|
|
[id(DISPID_RECORD_STRINGDATA), propput]
|
|
|
|
void StringData(
|
2007-05-08 00:49:17 +02:00
|
|
|
[in] long Field,
|
2007-05-01 03:53:49 +02:00
|
|
|
[in] BSTR rhs);
|
2007-05-14 19:14:00 +02:00
|
|
|
[id(DISPID_RECORD_INTEGERDATA), propget]
|
|
|
|
long IntegerData([in] long Field);
|
|
|
|
[id(DISPID_RECORD_INTEGERDATA), propput]
|
|
|
|
void IntegerData(
|
|
|
|
[in] long Field,
|
|
|
|
[in] long rhs);
|
2007-05-11 21:08:14 +02:00
|
|
|
[id(DISPID_RECORD_FIELDCOUNT), propget]
|
|
|
|
long FieldCount();
|
2007-01-26 13:14:58 +01:00
|
|
|
}
|
|
|
|
|
|
|
|
[ uuid(000C1095-0000-0000-C000-000000000046) ]
|
|
|
|
dispinterface StringList
|
|
|
|
{
|
|
|
|
properties:
|
|
|
|
methods:
|
2007-05-18 18:23:19 +02:00
|
|
|
[id(DISPID_LIST__NEWENUM)]
|
|
|
|
IUnknown _NewEnum();
|
2007-05-18 18:23:01 +02:00
|
|
|
[id(DISPID_LIST_ITEM), propget]
|
2007-05-08 00:50:30 +02:00
|
|
|
BSTR Item(long Index);
|
2007-05-18 18:23:01 +02:00
|
|
|
[id(DISPID_LIST_COUNT), propget]
|
2007-05-08 00:50:30 +02:00
|
|
|
long Count();
|
2007-01-26 13:14:58 +01:00
|
|
|
}
|
|
|
|
|
|
|
|
[ uuid(000C1096-0000-0000-C000-000000000046) ]
|
|
|
|
dispinterface RecordList
|
|
|
|
{
|
|
|
|
properties:
|
|
|
|
methods:
|
|
|
|
}
|
|
|
|
|
|
|
|
[ uuid(000C109A-0000-0000-C000-000000000046) ]
|
|
|
|
dispinterface UIPreview
|
|
|
|
{
|
|
|
|
properties:
|
|
|
|
methods:
|
|
|
|
}
|
|
|
|
|
|
|
|
[ uuid(000C109B-0000-0000-C000-000000000046) ]
|
|
|
|
dispinterface SummaryInfo
|
|
|
|
{
|
|
|
|
properties:
|
|
|
|
methods:
|
2007-06-01 04:52:05 +02:00
|
|
|
[id(DISPID_SUMMARYINFO_PROPERTY), propget]
|
|
|
|
VARIANT Property([in] long Pid);
|
2007-06-04 16:26:45 +02:00
|
|
|
[id(DISPID_SUMMARYINFO_PROPERTY), propput]
|
|
|
|
void Property(
|
|
|
|
[in] long Pid,
|
|
|
|
[in] VARIANT rhs);
|
2007-06-04 16:26:51 +02:00
|
|
|
[id(DISPID_SUMMARYINFO_PROPERTYCOUNT), propget]
|
|
|
|
long PropertyCount();
|
2007-01-26 13:14:58 +01:00
|
|
|
}
|
|
|
|
|
2007-05-11 21:08:43 +02:00
|
|
|
typedef enum {
|
|
|
|
msiViewModifySeek = -1,
|
|
|
|
msiViewModifyRefresh = 0,
|
|
|
|
msiViewModifyInsert = 1,
|
|
|
|
msiViewModifyUpdate = 2,
|
|
|
|
msiViewModifyAssign = 3,
|
|
|
|
msiViewModifyReplace = 4,
|
|
|
|
msiViewModifyMerge = 5,
|
|
|
|
msiViewModifyDelete = 6,
|
|
|
|
msiViewModifyInsertTemporary = 7,
|
|
|
|
msiViewModifyValidate = 8,
|
|
|
|
msiViewModifyValidateNew = 9,
|
|
|
|
msiViewModifyValidateField = 10,
|
|
|
|
msiViewModifyValidateDelete = 11,
|
|
|
|
} _MsiViewModify; /* Added underscore to avoid conflict with function name */
|
|
|
|
|
2007-01-26 13:14:58 +01:00
|
|
|
[ uuid(000C109C-0000-0000-C000-000000000046) ]
|
|
|
|
dispinterface View
|
|
|
|
{
|
|
|
|
properties:
|
|
|
|
methods:
|
2007-05-01 03:53:49 +02:00
|
|
|
[id(DISPID_VIEW_EXECUTE)]
|
2007-05-08 00:49:17 +02:00
|
|
|
void Execute([in, optional, defaultvalue(0)] Record *Params);
|
2007-05-01 03:53:49 +02:00
|
|
|
[id(DISPID_VIEW_FETCH)]
|
|
|
|
Record* Fetch();
|
2007-05-11 21:08:43 +02:00
|
|
|
[id(DISPID_VIEW_MODIFY)]
|
|
|
|
void Modify(
|
|
|
|
[in] _MsiViewModify Mode,
|
|
|
|
Record *Record);
|
2007-05-01 03:53:49 +02:00
|
|
|
[id(DISPID_VIEW_CLOSE)]
|
|
|
|
void Close();
|
2007-01-26 13:14:58 +01:00
|
|
|
}
|
|
|
|
|
|
|
|
[ uuid(000C109D-0000-0000-C000-000000000046) ]
|
|
|
|
dispinterface Database
|
|
|
|
{
|
|
|
|
properties:
|
|
|
|
methods:
|
2007-05-01 03:53:49 +02:00
|
|
|
[id(DISPID_DATABASE_OPENVIEW)]
|
2007-05-08 00:49:17 +02:00
|
|
|
View* OpenView([in] BSTR Sql);
|
2007-06-02 03:06:37 +02:00
|
|
|
[id(DISPID_DATABASE_SUMMARYINFORMATION), propget]
|
2007-06-01 04:52:05 +02:00
|
|
|
SummaryInfo *SummaryInformation([in, optional, defaultvalue(0)] long UpdateCount);
|
2007-01-26 13:14:58 +01:00
|
|
|
}
|
|
|
|
|
2007-05-01 03:53:49 +02:00
|
|
|
typedef enum {
|
|
|
|
msiDoActionStatusNoAction = 0,
|
|
|
|
msiDoActionStatusSuccess = 1,
|
|
|
|
msiDoActionStatusUserExit = 2,
|
|
|
|
msiDoActionStatusFailure = 3,
|
|
|
|
msiDoActionStatusSuspend = 4,
|
|
|
|
msiDoActionStatusFinished = 5,
|
|
|
|
msiDoActionStatusWrongState = 6,
|
|
|
|
msiDoActionStatusBadActionData = 7
|
|
|
|
} MsiDoActionStatus;
|
|
|
|
|
|
|
|
typedef enum {
|
|
|
|
msiRunModeAdmin = 0,
|
|
|
|
msiRunModeAdvertise = 1,
|
|
|
|
msiRunModeMaintenance = 2,
|
|
|
|
msiRunModeRollbackEnabled = 3,
|
|
|
|
msiRunModeLogEnabled = 4,
|
|
|
|
msiRunModeOperations = 5,
|
|
|
|
msiRunModeRebootAtEnd = 6,
|
|
|
|
msiRunModeRebootNow = 7,
|
|
|
|
msiRunModeCabinet = 8,
|
|
|
|
msiRunModeSourceShortNames = 9,
|
|
|
|
msiRunModeTargetShortNames = 10,
|
|
|
|
msiRunModeWindows9x = 12,
|
|
|
|
msiRunModeZawEnabled = 13,
|
|
|
|
msiRunModeScheduled = 16,
|
|
|
|
msiRunModeRollback = 17,
|
|
|
|
msiRunModeCommit = 18
|
|
|
|
} MsiRunMode;
|
|
|
|
|
2007-05-11 21:07:48 +02:00
|
|
|
typedef enum {
|
|
|
|
msiEvaluateConditionFalse = 0,
|
|
|
|
msiEvaluateConditionTrue = 1,
|
|
|
|
msiEvaluateConditionNone = 2,
|
|
|
|
msiEvaluateConditionError = 3
|
|
|
|
} _MsiEvaluateCondition; /* Added underscore to avoid conflict with function name */
|
|
|
|
|
2007-01-26 13:14:58 +01:00
|
|
|
[ uuid(000C109E-0000-0000-C000-000000000046) ]
|
|
|
|
dispinterface Session
|
|
|
|
{
|
|
|
|
properties:
|
|
|
|
methods:
|
2007-05-05 06:18:40 +02:00
|
|
|
[id(DISPID_SESSION_INSTALLER), propget]
|
|
|
|
Installer *Installer();
|
2007-05-01 03:53:49 +02:00
|
|
|
[id(DISPID_SESSION_PROPERTY), propget]
|
2007-05-08 00:49:17 +02:00
|
|
|
BSTR Property([in] BSTR Name);
|
2007-05-01 03:53:49 +02:00
|
|
|
[id(DISPID_SESSION_PROPERTY), propput]
|
|
|
|
void Property(
|
2007-05-08 00:49:17 +02:00
|
|
|
[in] BSTR Name,
|
2007-05-01 03:53:49 +02:00
|
|
|
[in] BSTR rhs);
|
|
|
|
[id(DISPID_SESSION_LANGUAGE), propget]
|
|
|
|
long Language();
|
|
|
|
[id(DISPID_SESSION_MODE), propget]
|
2007-05-08 00:49:17 +02:00
|
|
|
VARIANT_BOOL Mode([in] MsiRunMode Flag);
|
2007-05-01 03:53:49 +02:00
|
|
|
[id(DISPID_SESSION_MODE), propput]
|
|
|
|
void Mode(
|
2007-05-08 00:49:17 +02:00
|
|
|
[in] MsiRunMode Flag,
|
2007-05-01 03:53:49 +02:00
|
|
|
[in] VARIANT_BOOL rhs);
|
|
|
|
[id(DISPID_SESSION_DATABASE), propget]
|
|
|
|
Database* Database();
|
|
|
|
[id(DISPID_SESSION_DOACTION)]
|
2007-05-08 00:49:17 +02:00
|
|
|
MsiDoActionStatus DoAction([in] BSTR Action);
|
2007-05-11 21:07:48 +02:00
|
|
|
[id(DISPID_SESSION_EVALUATECONDITION)]
|
|
|
|
_MsiEvaluateCondition EvaluateCondition([in] BSTR Expression);
|
2007-05-01 03:53:49 +02:00
|
|
|
[id(DISPID_SESSION_FEATURECURRENTSTATE), propget]
|
2007-05-08 00:49:17 +02:00
|
|
|
MsiInstallState FeatureCurrentState([in] BSTR Feature);
|
2007-05-01 03:53:49 +02:00
|
|
|
[id(DISPID_SESSION_FEATUREREQUESTSTATE), propget]
|
2007-05-08 00:49:17 +02:00
|
|
|
MsiInstallState FeatureRequestState([in] BSTR Feature);
|
2007-05-01 03:53:49 +02:00
|
|
|
[id(DISPID_SESSION_FEATUREREQUESTSTATE), propput]
|
|
|
|
void FeatureRequestState(
|
2007-05-08 00:49:17 +02:00
|
|
|
[in] BSTR Feature,
|
2007-05-01 03:53:49 +02:00
|
|
|
[in] MsiInstallState rhs);
|
|
|
|
[id(DISPID_SESSION_SETINSTALLLEVEL)]
|
2007-05-08 00:49:17 +02:00
|
|
|
void SetInstallLevel([in] long Level);
|
2007-01-26 13:14:58 +01:00
|
|
|
}
|
|
|
|
|
|
|
|
[ uuid(000C109F-0000-0000-C000-000000000046) ]
|
|
|
|
dispinterface FeatureInfo
|
|
|
|
{
|
|
|
|
properties:
|
|
|
|
methods:
|
|
|
|
}
|
|
|
|
|
|
|
|
[ uuid(000C10A0-0000-0000-C000-000000000046) ]
|
|
|
|
dispinterface Product
|
|
|
|
{
|
|
|
|
properties:
|
|
|
|
methods:
|
|
|
|
}
|
|
|
|
|
|
|
|
[ uuid(000C10A1-0000-0000-C000-000000000046) ]
|
|
|
|
dispinterface Patch
|
|
|
|
{
|
|
|
|
properties:
|
|
|
|
methods:
|
|
|
|
}
|
|
|
|
}
|