Sweden-Number/dlls/msi/msiserver.idl

371 lines
12 KiB
Plaintext
Raw Normal View History

/*
* 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
*/
#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;
typedef WORD LANGID;
cpp_quote("#endif")
[
uuid(7BDE2046-D03B-4ffc-B84C-A098F38CFF0B),
oleautomation,
object
]
interface IWineMsiRemoteDatabase : IUnknown
{
HRESULT IsTablePersistent( [in] BSTR table, [out] MSICONDITION *persistent );
HRESULT GetPrimaryKeys( [in] BSTR table, [out] MSIHANDLE *keys );
HRESULT GetSummaryInformation( [in] UINT updatecount, [out] MSIHANDLE *suminfo );
HRESULT OpenView( [in] BSTR 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 );
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 );
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 );
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 );
HRESULT GetLanguage( [out] LANGID *language );
HRESULT SetInstallLevel( [in] int level );
HRESULT FormatRecord( [in] MSIHANDLE record, [out] BSTR value, [out] DWORD *size );
HRESULT EvaluateCondition( [in] BSTR condition );
}
[
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,
[out] BSTR *function, [out] IWineMsiRemotePackage **package );
}
[ 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;
[ uuid(000C1090-0000-0000-C000-000000000046) ]
dispinterface Installer
{
properties:
methods:
[id(DISPID_INSTALLER_CREATERECORD)]
Record *CreateRecord([in] long Count);
[id(DISPID_INSTALLER_OPENPACKAGE)]
Session* OpenPackage(
[in] VARIANT PackagePath,
[in, optional, defaultvalue(0)] long Options);
[id(DISPID_INSTALLER_OPENDATABASE)]
Database *OpenDatabase(
[in] BSTR DatabasePath,
[in] VARIANT OpenMode);
[id(DISPID_INSTALLER_INSTALLPRODUCT)]
void InstallProduct(
[in] BSTR PackagePath,
[in, optional, defaultvalue("0")] BSTR PropertyValues);
[id(DISPID_INSTALLER_REGISTRYVALUE), propget]
BSTR RegistryValue(
[in] VARIANT Root,
[in] BSTR Key,
[in, optional] VARIANT Value);
[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, optional, 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, optional, 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 */
[ 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_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:
}
}