2022-03-12 14:11:45 +00:00
|
|
|
/*
|
|
|
|
* Copyright (C) 2007 James Hawkins
|
|
|
|
* Copyright (C) 2018 Zebediah Figura
|
|
|
|
*
|
|
|
|
* 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 header
|
2022-03-12 14:12:08 +00:00
|
|
|
#pragma makedep client
|
|
|
|
#pragma makedep server
|
2022-03-12 14:11:45 +00:00
|
|
|
|
|
|
|
import "objidl.idl";
|
|
|
|
|
|
|
|
cpp_quote("#if 0")
|
|
|
|
typedef unsigned long MSIHANDLE;
|
|
|
|
typedef int INSTALLMESSAGE;
|
|
|
|
typedef int MSICONDITION;
|
|
|
|
typedef int MSIRUNMODE;
|
|
|
|
typedef int INSTALLSTATE;
|
2022-03-12 14:11:55 +00:00
|
|
|
typedef int MSICOLINFO;
|
2022-03-12 14:11:55 +00:00
|
|
|
typedef int MSIMODIFY;
|
2022-03-12 14:12:06 +00:00
|
|
|
typedef int MSICOSTTREE;
|
2022-03-13 00:21:43 +00:00
|
|
|
typedef int MSIDBERROR;
|
2022-03-12 14:11:45 +00:00
|
|
|
|
2022-03-12 14:11:49 +00:00
|
|
|
#define MSIFIELD_NULL 0
|
|
|
|
#define MSIFIELD_INT 1
|
|
|
|
#define MSIFIELD_WSTR 3
|
|
|
|
#define MSIFIELD_STREAM 4
|
2022-03-12 14:11:45 +00:00
|
|
|
cpp_quote("#endif")
|
|
|
|
cpp_quote("#include \"msiquery.h\"")
|
|
|
|
|
2022-03-12 14:11:49 +00:00
|
|
|
struct wire_field {
|
|
|
|
unsigned int type;
|
|
|
|
[switch_is(type)] union {
|
|
|
|
[case(MSIFIELD_NULL)] ;
|
|
|
|
[case(MSIFIELD_INT)] int iVal;
|
|
|
|
[case(MSIFIELD_WSTR), string] LPWSTR szwVal;
|
|
|
|
[case(MSIFIELD_STREAM)] IStream *stream;
|
|
|
|
} u;
|
|
|
|
int len;
|
|
|
|
};
|
|
|
|
|
2022-03-12 23:08:18 +00:00
|
|
|
/* compatible with MSIRECORD minus header */
|
2022-03-12 14:11:49 +00:00
|
|
|
struct wire_record {
|
|
|
|
unsigned int count;
|
2022-03-12 23:08:18 +00:00
|
|
|
UINT64 cookie;
|
2022-03-12 14:11:49 +00:00
|
|
|
[size_is(count+1)] struct wire_field fields[];
|
|
|
|
};
|
|
|
|
|
2022-03-12 14:11:45 +00:00
|
|
|
[
|
2022-03-12 14:12:08 +00:00
|
|
|
uuid(56D58B64-8780-4c22-A8BC-8B0B29E4A9F8),
|
|
|
|
implicit_handle(handle_t rpc_handle)
|
2022-03-12 14:11:45 +00:00
|
|
|
]
|
|
|
|
interface IWineMsiRemote
|
|
|
|
{
|
2022-03-12 14:11:54 +00:00
|
|
|
UINT remote_ViewClose( [in] MSIHANDLE view );
|
2022-03-12 14:11:53 +00:00
|
|
|
UINT remote_ViewExecute( [in] MSIHANDLE view, [in, unique] struct wire_record *record );
|
2022-03-12 14:11:54 +00:00
|
|
|
UINT remote_ViewFetch( [in] MSIHANDLE view, [out] struct wire_record **record );
|
2022-03-12 14:11:55 +00:00
|
|
|
UINT remote_ViewGetColumnInfo( [in] MSIHANDLE view, [in] MSICOLINFO info, [out] struct wire_record **record );
|
2022-03-13 00:21:43 +00:00
|
|
|
MSIDBERROR remote_ViewGetError( [in] MSIHANDLE view, [out, string] LPWSTR *column );
|
2022-03-12 14:11:55 +00:00
|
|
|
UINT remote_ViewModify( [in] MSIHANDLE view, [in] MSIMODIFY mode,
|
|
|
|
[in] struct wire_record *record, [out] struct wire_record **refreshed );
|
2022-03-12 14:11:53 +00:00
|
|
|
|
2022-03-12 14:11:52 +00:00
|
|
|
MSICONDITION remote_DatabaseIsTablePersistent( [in] MSIHANDLE db, [in] LPCWSTR table );
|
2022-03-12 14:11:56 +00:00
|
|
|
UINT remote_DatabaseGetPrimaryKeys( [in] MSIHANDLE db, [in, string] LPCWSTR table, [out] struct wire_record **keys );
|
2022-03-12 14:11:57 +00:00
|
|
|
UINT remote_DatabaseGetSummaryInformation( [in] MSIHANDLE db, [in] UINT updatecount, [out] MSIHANDLE *suminfo );
|
2022-03-12 14:11:52 +00:00
|
|
|
UINT remote_DatabaseOpenView( [in] MSIHANDLE db, [in, string] LPCWSTR query, [out] MSIHANDLE *view );
|
2022-03-12 14:11:45 +00:00
|
|
|
|
2022-03-12 22:57:40 +00:00
|
|
|
UINT remote_SummaryInfoGetPropertyCount( [in] MSIHANDLE suminfo, [out] UINT *count );
|
2022-03-12 22:57:40 +00:00
|
|
|
UINT remote_SummaryInfoGetProperty( [in] MSIHANDLE suminfo, [in] UINT property, [out] UINT *type, [out] INT *value,
|
|
|
|
[out] FILETIME *ft, [out, string] LPWSTR *buf );
|
2022-03-12 22:57:40 +00:00
|
|
|
|
2022-03-12 14:11:51 +00:00
|
|
|
MSIHANDLE remote_GetActiveDatabase( [in] MSIHANDLE hinst );
|
2022-03-12 14:11:46 +00:00
|
|
|
UINT remote_GetProperty( [in] MSIHANDLE hinst, [in, string] LPCWSTR property, [out, string] LPWSTR *value, [out] DWORD *size );
|
2022-03-12 14:11:46 +00:00
|
|
|
UINT remote_SetProperty( [in] MSIHANDLE hinst, [in, string, unique] LPCWSTR property, [in, string, unique] LPCWSTR value );
|
2022-03-12 14:11:49 +00:00
|
|
|
int remote_ProcessMessage( [in] MSIHANDLE hinst, [in] INSTALLMESSAGE message, [in] struct wire_record *record );
|
2022-03-12 14:11:57 +00:00
|
|
|
UINT remote_DoAction( [in] MSIHANDLE hinst, [in, string] LPCWSTR action );
|
2022-03-12 14:11:58 +00:00
|
|
|
UINT remote_Sequence( [in] MSIHANDLE hinst, [in, string] LPCWSTR table, [in] int sequence );
|
2022-03-12 14:11:58 +00:00
|
|
|
UINT remote_GetTargetPath( [in] MSIHANDLE hinst, [in, string] LPCWSTR folder, [out, string] LPWSTR *value );
|
2022-03-12 14:11:59 +00:00
|
|
|
UINT remote_SetTargetPath( [in] MSIHANDLE hinst, [in, string] LPCWSTR folder, [in, string] LPCWSTR value );
|
2022-03-12 14:11:59 +00:00
|
|
|
UINT remote_GetSourcePath( [in] MSIHANDLE hinst, [in, string] LPCWSTR folder, [out, string] LPWSTR *value );
|
2022-03-12 14:12:00 +00:00
|
|
|
BOOL remote_GetMode( [in] MSIHANDLE hinst, [in] MSIRUNMODE mode );
|
2022-03-12 14:12:01 +00:00
|
|
|
UINT remote_SetMode( [in] MSIHANDLE hinst, [in] MSIRUNMODE mode, [in] BOOL state );
|
2022-03-12 14:12:01 +00:00
|
|
|
UINT remote_GetFeatureState( [in] MSIHANDLE hinst, [in, string] LPCWSTR feature, [out] INSTALLSTATE *installed, [out] INSTALLSTATE *action );
|
2022-03-12 14:12:02 +00:00
|
|
|
UINT remote_SetFeatureState( [in] MSIHANDLE hinst, [in, string] LPCWSTR feature, [in] INSTALLSTATE state );
|
2022-03-12 14:12:02 +00:00
|
|
|
UINT remote_GetComponentState( [in] MSIHANDLE hinst, [in, string] LPCWSTR component, [out] INSTALLSTATE *installed, [out] INSTALLSTATE *action );
|
2022-03-12 14:12:03 +00:00
|
|
|
UINT remote_SetComponentState( [in] MSIHANDLE hinst, [in, string] LPCWSTR component, [in] INSTALLSTATE state );
|
2022-03-12 14:12:04 +00:00
|
|
|
LANGID remote_GetLanguage( [in] MSIHANDLE hinst );
|
2022-03-12 14:12:04 +00:00
|
|
|
UINT remote_SetInstallLevel( [in] MSIHANDLE hinst, [in] int level );
|
2022-03-12 14:12:05 +00:00
|
|
|
UINT remote_FormatRecord( [in] MSIHANDLE hinst, [in] struct wire_record *record, [out, string] LPWSTR *value);
|
2022-03-12 14:12:05 +00:00
|
|
|
MSICONDITION remote_EvaluateCondition( [in] MSIHANDLE hinst, [in, string] LPCWSTR condition );
|
2022-03-12 14:12:06 +00:00
|
|
|
UINT remote_GetFeatureCost( [in] MSIHANDLE hinst, [in, string] LPCWSTR feature, [in] MSICOSTTREE cost_tree, [in] INSTALLSTATE state, [out] INT *cost );
|
2022-03-12 14:12:07 +00:00
|
|
|
UINT remote_EnumComponentCosts( [in] MSIHANDLE hinst, [in, string, unique] LPCWSTR component, [in] DWORD index, [in] INSTALLSTATE state,
|
|
|
|
[out, string, size_is(3)] LPWSTR drive, [out] INT *cost, [out] INT *temp );
|
2022-03-12 14:11:45 +00:00
|
|
|
|
2022-03-14 19:05:24 +00:00
|
|
|
UINT remote_GetActionInfo( [in] const GUID *guid, [out, string] WCHAR **action, [out] int *type, [out, string] WCHAR **dllname,
|
|
|
|
[out, string] char **function, [out] MSIHANDLE *hinst );
|
2022-03-12 14:11:45 +00:00
|
|
|
UINT remote_CloseHandle( [in] MSIHANDLE handle );
|
|
|
|
}
|