blob: 50526024a27632d849186f0e67dc294c8481fb05 [file] [log] [blame]
/*
* Copyright (C) 2007 Mike McCormack
* Copyright (C) 2007 Misha Koshelev
*
* 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
*/
#pragma makedep ident
#pragma makedep register
#pragma makedep regtypelib
#include "msiserver_dispids.h"
import "unknwn.idl";
import "wtypes.idl";
import "objidl.idl";
import "oaidl.idl";
cpp_quote("#if 0")
typedef unsigned long MSIHANDLE;
typedef int INSTALLMESSAGE;
typedef int MSICONDITION;
typedef int MSIRUNMODE;
typedef int INSTALLSTATE;
cpp_quote("#endif")
[
uuid(7BDE2046-D03B-4ffc-B84C-A098F38CFF0B),
oleautomation,
object
]
interface IWineMsiRemoteDatabase : IUnknown
{
HRESULT IsTablePersistent( [in] LPCWSTR table, [out] MSICONDITION *persistent );
HRESULT GetPrimaryKeys( [in] LPCWSTR table, [out] MSIHANDLE *keys );
HRESULT GetSummaryInformation( [in] UINT updatecount, [out] MSIHANDLE *suminfo );
HRESULT OpenView( [in] LPCWSTR query, [out] MSIHANDLE *view );
HRESULT SetMsiHandle( [in] MSIHANDLE handle );
}
[
uuid(902B3592-9D08-4dfd-A593-D07C52546421),
oleautomation,
object
]
interface IWineMsiRemotePackage : IUnknown
{
HRESULT SetMsiHandle( [in] MSIHANDLE handle );
HRESULT GetActiveDatabase( [out] MSIHANDLE *handle );
HRESULT GetProperty( [in] BSTR property, [out, size_is(*size)] BSTR value, [in, out] DWORD *size );
HRESULT SetProperty( [in] BSTR property, [in] BSTR value );
HRESULT ProcessMessage( [in] INSTALLMESSAGE message, [in] MSIHANDLE record );
HRESULT DoAction( [in] BSTR action );
HRESULT Sequence( [in] BSTR table, [in] int sequence );
HRESULT GetTargetPath( [in] BSTR folder, [out, size_is(*size)] BSTR value, [in, out] DWORD *size );
HRESULT SetTargetPath( [in] BSTR folder, [in] BSTR value );
HRESULT GetSourcePath( [in] BSTR folder, [out, size_is(*size)] BSTR value, [in, out] DWORD *size );
HRESULT GetMode( [in] MSIRUNMODE mode, [out] BOOL *ret );
HRESULT SetMode( [in] MSIRUNMODE mode, [in] BOOL state );
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 );
HRESULT GetLanguage( [out] LANGID *language );
HRESULT SetInstallLevel( [in] int level );
HRESULT FormatRecord( [in] MSIHANDLE record, [out] BSTR *value );
HRESULT EvaluateCondition( [in] BSTR condition );
HRESULT GetFeatureCost( [in] BSTR feature, [in] INT cost_tree, [in] INSTALLSTATE state, [out] INT *cost );
HRESULT EnumComponentCosts( [in] BSTR component, [in] DWORD index, [in] INSTALLSTATE state,
[out, size_is(*buflen)] BSTR drive, [in, out] DWORD *buflen, [out] INT *cost, [out] INT *temp );
}
[
uuid(56D58B64-8780-4c22-A8BC-8B0B29E4A9F8),
oleautomation,
object
]
interface IWineMsiRemoteCustomAction : IUnknown
{
HRESULT GetActionInfo( [in] LPCGUID guid, [out] INT *type, [out] MSIHANDLE *handle, [out] BSTR *dllname,
[out] BSTR *function, [out] IWineMsiRemotePackage **package );
}
[
uuid(000c101c-0000-0000-c000-000000000046),
oleautomation,
object
]
interface IMsiServer : IUnknown
{
/* FIXME: methods */
}
[
uuid(000c101d-0000-0000-c000-000000000046),
oleautomation,
object
]
interface IMsiMessage : IUnknown
{
/* FIXME: methods */
}
[
uuid(000c1025-0000-0000-c000-000000000046),
oleautomation,
object
]
interface IMsiCustomAction : IUnknown
{
/* FIXME: methods */
}
[
uuid(000c1033-0000-0000-c000-000000000046),
oleautomation,
object
]
interface IMsiRemoteAPI : IUnknown
{
/* FIXME: methods */
}
[
helpstring("Msi install server"),
progid("IMsiServer"),
uuid(000c101c-0000-0000-c000-000000000046)
]
coclass MsiServer { interface IMsiServer; }
[
helpstring("Microsoft Windows Installer Message RPC"),
progid("WindowsInstaller.Message"),
uuid(000c101d-0000-0000-c000-000000000046)
]
coclass MsiServerMessage { interface IMsiMessage; }
[
threading(both),
uuid(000c103e-0000-0000-c000-000000000046)
]
coclass PSFactoryBuffer { interface IPSFactoryBuffer; }
[
helpstring("Microsoft Windows Installer"),
threading(apartment),
progid("WindowsInstaller.Installer"),
uuid(000c1090-0000-0000-c000-000000000046)
]
coclass MsiInstaller { interface Installer; }
[
uuid(000c1082-0000-0000-c000-000000000046)
]
coclass MsiTransform { }
[
uuid(000c1084-0000-0000-c000-000000000046)
]
coclass MsiDatabase { }
[
uuid(000c1086-0000-0000-c000-000000000046)
]
coclass MsiPatch { }
[
threading(apartment),
uuid(000c1094-0000-0000-c000-000000000046)
]
/* FIXME: unidentified class */
coclass MsiServerX3 { interface IMsiServer; }
[
uuid(ba26e6fa-4f27-4f56-953a-3f90272018aa)
]
coclass WineMsiRemoteCustomAction { interface WineMsiRemoteCustomAction; }
[
uuid(902b3592-9d08-4dfd-a593-d07c52546421)
]
coclass WineMsiRemotePackage { interface WineMsiRemotePackage; }
[ 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;
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;
typedef enum {
msiOpenDatabaseModeReadOnly = 0,
msiOpenDatabaseModeTransact = 1,
msiOpenDatabaseModeDirect = 2,
msiOpenDatabaseModeCreate = 3,
msiOpenDatabaseModeCreateDirect = 4,
msiOpenDatabaseModePatchFile = 32
} MsiOpenDatabaseMode;
typedef enum {
msiUILevelNoChange = 0,
msiUILevelDefault = 1,
msiUILevelNone = 2,
msiUILevelBasic = 3,
msiUILevelReduced = 4,
msiUILevelFull = 5,
msiUILevelHideCancel = 32,
msiUILevelProgressOnly = 64,
msiUILevelEndDialog = 128,
msiUILevelSourceResOnly = 256
} MsiUILevel;
[ uuid(000C1090-0000-0000-C000-000000000046) ]
dispinterface Installer
{
properties:
[id(DISPID_INSTALLER_UILEVEL)]
MsiUILevel UILevel;
methods:
[id(DISPID_INSTALLER_CREATERECORD)]
Record *CreateRecord([in] long Count);
[id(DISPID_INSTALLER_OPENPACKAGE)]
Session* OpenPackage(
[in] VARIANT PackagePath,
[in, defaultvalue(0)] long Options);
[id(DISPID_INSTALLER_OPENPRODUCT)]
Session* OpenProduct(
[in] BSTR ProductCode);
[id(DISPID_INSTALLER_SUMMARYINFORMATION)]
SummaryInfo* SummaryInformation(
[in] BSTR PackagePath,
[in, defaultvalue(0)] long UpdateCount);
[id(DISPID_INSTALLER_OPENDATABASE)]
Database *OpenDatabase(
[in] BSTR DatabasePath,
[in] VARIANT OpenMode);
[id(DISPID_INSTALLER_ENABLELOG)]
void EnableLog(
[in] BSTR LogMode,
[in] BSTR LogFile);
[id(DISPID_INSTALLER_INSTALLPRODUCT)]
void InstallProduct(
[in] BSTR PackagePath,
[in, defaultvalue("0")] BSTR PropertyValues);
[id(DISPID_INSTALLER_VERSION)]
BSTR Version();
[id(DISPID_INSTALLER_LASTERRORRECORD)]
Record* LastErrorRecord();
[id(DISPID_INSTALLER_REGISTRYVALUE), propget]
BSTR RegistryValue(
[in] VARIANT Root,
[in] BSTR Key,
[in, optional] VARIANT Value);
[id(DISPID_INSTALLER_ENVIRONMENT), propget]
BSTR Environment([in] BSTR Variable);
[id(DISPID_INSTALLER_ENVIRONMENT), propput]
void Environment(
[in] BSTR Variable,
[in] BSTR rhs);
[id(DISPID_INSTALLER_FILEATTRIBUTES)]
long FileAttributes([in] BSTR FilePath);
[id(DISPID_INSTALLER_FILESIZE)]
long FileSize([in] BSTR FilePath);
[id(DISPID_INSTALLER_FILEVERSION)]
BSTR FileVersion(
[in] BSTR FilePath,
[in, optional] VARIANT Language);
[id(DISPID_INSTALLER_PRODUCTSTATE), propget]
MsiInstallState ProductState(
[in] BSTR Product);
[id(DISPID_INSTALLER_PRODUCTINFO), propget]
BSTR ProductInfo(
[in] BSTR Product,
[in] BSTR Attribute);
[id(DISPID_INSTALLER_PRODUCTS), propget]
StringList *Products();
[id(DISPID_INSTALLER_RELATEDPRODUCTS), propget]
StringList *RelatedProducts(
[in] BSTR UpgradeCode);
}
[ uuid(000C1093-0000-0000-C000-000000000046) ]
dispinterface Record
{
properties:
methods:
[id(DISPID_RECORD_STRINGDATA), propget]
BSTR StringData([in] long Field);
[id(DISPID_RECORD_STRINGDATA), propput]
void StringData(
[in] long Field,
[in] BSTR rhs);
[id(DISPID_RECORD_INTEGERDATA), propget]
long IntegerData([in] long Field);
[id(DISPID_RECORD_INTEGERDATA), propput]
void IntegerData(
[in] long Field,
[in] long rhs);
[id(DISPID_RECORD_FIELDCOUNT), propget]
long FieldCount();
}
[ uuid(000C1095-0000-0000-C000-000000000046) ]
dispinterface StringList
{
properties:
methods:
[id(DISPID_LIST__NEWENUM)]
IUnknown _NewEnum();
[id(DISPID_LIST_ITEM), propget]
BSTR Item(long Index);
[id(DISPID_LIST_COUNT), propget]
long Count();
}
[ 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:
[id(DISPID_SUMMARYINFO_PROPERTY), propget]
VARIANT Property([in] long Pid);
[id(DISPID_SUMMARYINFO_PROPERTY), propput]
void Property(
[in] long Pid,
[in] VARIANT rhs);
[id(DISPID_SUMMARYINFO_PROPERTYCOUNT), propget]
long PropertyCount();
}
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 */
[ uuid(000C109C-0000-0000-C000-000000000046) ]
dispinterface View
{
properties:
methods:
[id(DISPID_VIEW_EXECUTE)]
void Execute([in, defaultvalue(0)] Record *Params);
[id(DISPID_VIEW_FETCH)]
Record* Fetch();
[id(DISPID_VIEW_MODIFY)]
void Modify(
[in] _MsiViewModify Mode,
Record *Record);
[id(DISPID_VIEW_CLOSE)]
void Close();
}
[ uuid(000C109D-0000-0000-C000-000000000046) ]
dispinterface Database
{
properties:
methods:
[id(DISPID_DATABASE_OPENVIEW)]
View* OpenView([in] BSTR Sql);
[id(DISPID_DATABASE_SUMMARYINFORMATION), propget]
SummaryInfo *SummaryInformation([in, defaultvalue(0)] long UpdateCount);
}
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;
typedef enum {
msiEvaluateConditionFalse = 0,
msiEvaluateConditionTrue = 1,
msiEvaluateConditionNone = 2,
msiEvaluateConditionError = 3
} _MsiEvaluateCondition; /* Added underscore to avoid conflict with function name */
typedef enum {
msiMessageStatusError = -1,
msiMessageStatusNone = 0,
msiMessageStatusOk = 1,
msiMessageStatusCancel = 2,
msiMessageStatusAbort = 3,
msiMessageStatusRetry = 4,
msiMessageStatusIgnore = 5,
msiMessageStatusYes = 6,
msiMessageStatusNo = 7
} MsiMessageStatus;
typedef enum {
msiMessageTypeFatalExit = 0,
msiMessageTypeError = 0x01000000,
msiMessageTypeWarning = 0x02000000,
msiMessageTypeUser = 0x03000000,
msiMessageTypeInfo = 0x04000000,
msiMessageTypeFilesInUse = 0x05000000,
msiMessageTypeResolveSource = 0x06000000,
msiMessageTypeOutOfDiskSpace = 0x07000000,
msiMessageTypeActionStart = 0x08000000,
msiMessageTypeActionData = 0x09000000,
msiMessageTypeProgress = 0x0a000000,
msiMessageTypeCommonData = 0x0b000000,
msiMessageTypeOk = 0,
msiMessageTypeOkCancel = 1,
msiMessageTypeAbortRetryIgnore = 2,
msiMessageTypeYesNoCancel = 3,
msiMessageTypeYesNo = 4,
msiMessageTypeRetryCancel = 5,
msiMessageTypeDefault1 = 0,
msiMessageTypeDefault2 = 256,
msiMessageTypeDefault3 = 512
} MsiMessageType;
[ uuid(000C109E-0000-0000-C000-000000000046) ]
dispinterface Session
{
properties:
methods:
[id(DISPID_SESSION_INSTALLER), propget]
Installer *Installer();
[id(DISPID_SESSION_PROPERTY), propget]
BSTR Property([in] BSTR Name);
[id(DISPID_SESSION_PROPERTY), propput]
void Property(
[in] BSTR Name,
[in] BSTR rhs);
[id(DISPID_SESSION_LANGUAGE), propget]
long Language();
[id(DISPID_SESSION_MODE), propget]
VARIANT_BOOL Mode([in] MsiRunMode Flag);
[id(DISPID_SESSION_MODE), propput]
void Mode(
[in] MsiRunMode Flag,
[in] VARIANT_BOOL rhs);
[id(DISPID_SESSION_DATABASE), propget]
Database* Database();
[id(DISPID_SESSION_DOACTION)]
MsiDoActionStatus DoAction([in] BSTR Action);
[id(DISPID_SESSION_EVALUATECONDITION)]
_MsiEvaluateCondition EvaluateCondition([in] BSTR Expression);
[id(DISPID_SESSION_MESSAGE)]
MsiMessageStatus Message(
[in] MsiMessageType Kind,
[in] Record *Record);
[id(DISPID_SESSION_FEATURECURRENTSTATE), propget]
MsiInstallState FeatureCurrentState([in] BSTR Feature);
[id(DISPID_SESSION_FEATUREREQUESTSTATE), propget]
MsiInstallState FeatureRequestState([in] BSTR Feature);
[id(DISPID_SESSION_FEATUREREQUESTSTATE), propput]
void FeatureRequestState(
[in] BSTR Feature,
[in] MsiInstallState rhs);
[id(DISPID_SESSION_SETINSTALLLEVEL)]
void SetInstallLevel([in] long Level);
}
[ 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:
}
}