mirror of
https://github.com/reactos/wine.git
synced 2024-11-29 14:40:56 +00:00
4a75b8bf09
Remove the redundant size parameter and simplify the client code such that the remote function is only called once, with the value being automatically allocated. Add corresponding code on the server side to automatically allocate said value.
388 lines
13 KiB
Plaintext
388 lines
13 KiB
Plaintext
/*
|
|
* 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 );
|
|
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 );
|
|
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 );
|
|
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 );
|
|
}
|
|
|
|
[
|
|
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(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, 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_VERSION)]
|
|
BSTR Version();
|
|
[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:
|
|
}
|
|
}
|