ReactOS 0.4.17-dev-966-gf06eace
msipriv.h
Go to the documentation of this file.
1/*
2 * Implementation of the Microsoft Installer (msi.dll)
3 *
4 * Copyright 2002-2005 Mike McCormack for CodeWeavers
5 * Copyright 2005 Aric Stewart for CodeWeavers
6 *
7 * This library is free software; you can redistribute it and/or
8 * modify it under the terms of the GNU Lesser General Public
9 * License as published by the Free Software Foundation; either
10 * version 2.1 of the License, or (at your option) any later version.
11 *
12 * This library is distributed in the hope that it will be useful,
13 * but WITHOUT ANY WARRANTY; without even the implied warranty of
14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
15 * Lesser General Public License for more details.
16 *
17 * You should have received a copy of the GNU Lesser General Public
18 * License along with this library; if not, write to the Free Software
19 * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
20 */
21
22#ifndef __WINE_MSI_PRIVATE__
23#define __WINE_MSI_PRIVATE__
24
25#include <stdarg.h>
26
27#include "windef.h"
28#include "winbase.h"
29#include "fdi.h"
30#include "msi.h"
31#include "msiquery.h"
32#include "msidefs.h"
33#include "objbase.h"
34#include "objidl.h"
35#include "fusion.h"
36#include "winnls.h"
37#include "winver.h"
38#include "wine/list.h"
39#include "wine/debug.h"
40
41#include "msiserver.h"
42#include "winemsi.h"
43
44static const BOOL is_64bit = sizeof(void *) > sizeof(int);
45extern BOOL is_wow64;
46
47#define MSI_DATASIZEMASK 0x00ff
48#define MSITYPE_VALID 0x0100
49#define MSITYPE_LOCALIZABLE 0x200
50#define MSITYPE_STRING 0x0800
51#define MSITYPE_NULLABLE 0x1000
52#define MSITYPE_KEY 0x2000
53#define MSITYPE_TEMPORARY 0x4000
54#define MSITYPE_UNKNOWN 0x8000
55
56#define MAX_STREAM_NAME_LEN 62
57#define LONG_STR_BYTES 3
58
59/* Install UI level mask for AND operation to exclude flags */
60#define INSTALLUILEVEL_MASK 0x0007
61
62#define MSITYPE_IS_BINARY(type) (((type) & ~MSITYPE_NULLABLE) == (MSITYPE_STRING|MSITYPE_VALID))
63
64struct tagMSITABLE;
65typedef struct tagMSITABLE MSITABLE;
66
67struct string_table;
69
70struct tagMSIOBJECTHDR;
72
74
76{
81};
82
83#define MSI_INITIAL_MEDIA_TRANSFORM_OFFSET 10000
84#define MSI_INITIAL_MEDIA_TRANSFORM_DISKID 32000
85
86typedef struct tagMSISTREAM
87{
91
92typedef struct tagMSITRANSFORM
93{
94 struct list entry;
97
98/* integer versions of the MSIDBOPEN_* constants */
99#define MSI_OPEN_READONLY 0
100#define MSI_OPEN_TRANSACT 1
101#define MSI_OPEN_DIRECT 2
102#define MSI_OPEN_CREATE 3
103#define MSI_OPEN_CREATEDIRECT 4
104#define MSI_OPEN_PATCHFILE 32
105
106typedef struct tagMSIDATABASE
107{
118 struct list tables;
124
125typedef struct tagMSIVIEW MSIVIEW;
126
127typedef struct tagMSIQUERY
128{
133 struct list mem;
135
136/* maybe we can use a Variant instead of doing it ourselves? */
137typedef struct tagMSIFIELD
138{
140 union
141 {
145 } u;
146 int len;
148
149typedef struct tagMSIRECORD
150{
152 UINT count; /* as passed to MsiCreateRecord */
154 MSIFIELD fields[1]; /* nb. array size is count+1 */
156
158{
159 struct list entry;
165
166typedef struct tagMSIMEDIADISK
167{
168 struct list entry;
175
176typedef struct tagMSIMEDIAINFO
177{
189
191{
192 struct list entry;
197
198typedef struct tagMSIPATCHINFO
199{
200 struct list entry;
212
213typedef struct tagMSIBINARY
214{
215 struct list entry;
219
220typedef struct _column_info
221{
225 struct expr *val;
228
229typedef const struct tagMSICOLUMNHASHENTRY *MSIITERHANDLE;
230
231typedef struct tagMSIVIEWOPS
232{
233 /*
234 * fetch_int - reads one integer from {row,col} in the table
235 *
236 * This function should be called after the execute method.
237 * Data returned by the function should not change until
238 * close or delete is called.
239 * To get a string value, query the database's string table with
240 * the integer value returned from this function.
241 */
243
244 /*
245 * fetch_stream - gets a stream from {row,col} in the table
246 *
247 * This function is similar to fetch_int, except fetches a
248 * stream instead of an integer.
249 */
250 UINT (*fetch_stream)( struct tagMSIVIEW *view, UINT row, UINT col, IStream **stm );
251
252 /*
253 * set_int - set the integer value at {row, col}
254 * This function has undefined behaviour if the column does not contain
255 * integers.
256 */
257 UINT (*set_int)( struct tagMSIVIEW *view, UINT row, UINT col, int val );
258
259 /*
260 * set_string - set the string value at {row, col}
261 * This function has undefined behaviour if the column does not contain
262 * strings.
263 */
264 UINT (*set_string)( struct tagMSIVIEW *view, UINT row, UINT col, const WCHAR *val, int len );
265
266 /*
267 * set_stream - set the stream value at {row, col}
268 * This function has undefined behaviour if the column does not contain
269 * streams.
270 */
272
273 /*
274 * set_row - sets values in a row as specified by mask
275 *
276 * Similar semantics to fetch_int
277 */
279
280 /*
281 * Inserts a new row into the database from the records contents
282 */
284
285 /*
286 * Deletes a row from the database
287 */
289
290 /*
291 * execute - loads the underlying data into memory so it can be read
292 */
294
295 /*
296 * close - clears the data read by execute from memory
297 */
298 UINT (*close)( struct tagMSIVIEW *view );
299
300 /*
301 * get_dimensions - returns the number of rows or columns in a table.
302 *
303 * The number of rows can only be queried after the execute method
304 * is called. The number of columns can be queried at any time.
305 */
306 UINT (*get_dimensions)( struct tagMSIVIEW *view, UINT *rows, UINT *cols );
307
308 /*
309 * get_column_info - returns the name and type of a specific column
310 *
311 * The column information can be queried at any time.
312 */
314 BOOL *temporary, LPCWSTR *table_name );
315
316 /*
317 * modify - not yet implemented properly
318 */
319 UINT (*modify)( struct tagMSIVIEW *view, MSIMODIFY eModifyMode, MSIRECORD *record, UINT row );
320
321 /*
322 * delete - destroys the structure completely
323 */
324 UINT (*delete)( struct tagMSIVIEW * );
325
326 /*
327 * add_ref - increases the reference count of the table
328 */
330
331 /*
332 * release - decreases the reference count of the table
333 */
335
336 /*
337 * add_column - adds a column to the table
338 */
340
341 /*
342 * sort - orders the table by columns
343 */
344 UINT (*sort)( struct tagMSIVIEW *view, column_info *columns );
345
346 /*
347 * drop - drops the table from the database
348 */
349 UINT (*drop)( struct tagMSIVIEW *view );
351
353{
358};
359
360struct msi_dialog_tag;
362
364{
372
374{
375 switch (platform)
376 {
377 case PLATFORM_INTEL64:
378 case PLATFORM_X64:
379 case PLATFORM_ARM64:
380 return TRUE;
381 default:
382 return FALSE;
383 }
384}
385
387{
394
396{
401 SCRIPT_MAX = 3
403
404typedef struct tagMSIPACKAGE
405{
412 void *cookie;
413 struct list patches;
416 struct list files;
419 struct list folders;
434 HRESULT (WINAPI *pGetFileVersion)( const WCHAR *, WCHAR *, DWORD, DWORD * );
435 HRESULT (WINAPI *pCreateAssemblyNameObject)( IAssemblyName **, const WCHAR *, DWORD, void * );
436 HRESULT (WINAPI *pCreateAssemblyEnum)( IAssemblyEnum **, IUnknown *, IAssemblyName *, DWORD, void * );
439
440 struct list classes;
442 struct list progids;
443 struct list mimes;
444 struct list appids;
445
453
455
460
465
469 float center_x;
470 float center_y;
471
474
476
479
480 unsigned char scheduled_action_running : 1;
481 unsigned char commit_action_running : 1;
482 unsigned char rollback_action_running : 1;
483 unsigned char need_reboot_at_end : 1;
484 unsigned char need_reboot_now : 1;
485 unsigned char need_rollback : 1;
486 unsigned char rpc_server_started : 1;
488
489typedef struct tagMSIPREVIEW
490{
495
496#define MSI_MAX_PROPS 20
497
498typedef struct tagMSISUMMARYINFO
499{
503 PROPVARIANT property[MSI_MAX_PROPS];
505
506typedef struct tagMSIFEATURE
507{
508 struct list entry;
523
524typedef struct tagMSIASSEMBLY
525{
534
535typedef struct tagMSICOMPONENT
536{
537 struct list entry;
549 /* Cost is in 512-byte units, as returned from MsiEnumComponentCosts() et al. */
550 int cost;
556
557 unsigned int anyAbsent:1;
558 unsigned int hasAdvertisedFeature:1;
559 unsigned int hasLocalFeature:1;
560 unsigned int hasSourceFeature:1;
561 unsigned int added:1;
562 unsigned int updated:1;
564
565typedef struct tagComponentList
566{
567 struct list entry;
570
571typedef struct tagFeatureList
572{
573 struct list entry;
576
578{
585
586typedef struct tagMSIFOLDER
587{
588 struct list entry;
600
601typedef struct tagFolderList
602{
603 struct list entry;
606
607typedef enum _msi_file_state {
616
617typedef struct tagMSIFILE
618{
619 struct list entry;
636
637typedef struct tagMSIFILEPATCH
638{
639 struct list entry;
648
649typedef struct tagMSIAPPID
650{
651 struct list entry;
652 LPWSTR AppID; /* Primary key */
660
661typedef struct tagMSIPROGID MSIPROGID;
662
663typedef struct tagMSICLASS
664{
665 struct list entry;
666 LPWSTR clsid; /* Primary Key */
667 LPWSTR Context; /* Primary Key */
680 /* not in the table, set during installation */
683
684typedef struct tagMSIMIME MSIMIME;
685
686typedef struct tagMSIEXTENSION
687{
688 struct list entry;
689 LPWSTR Extension; /* Primary Key */
695 /* not in the table, set during installation */
697 struct list verbs;
699
701{
702 struct list entry;
703 LPWSTR ProgID; /* Primary Key */
708 /* not in the table, set during installation */
711};
712
713typedef struct tagMSIVERB
714{
715 struct list entry;
721
723{
724 struct list entry;
725 LPWSTR ContentType; /* Primary Key */
730};
731
732typedef struct
733{
734 struct list entry;
738 int Depth;
741
742#define SEQUENCE_UI 0x1
743#define SEQUENCE_EXEC 0x2
744
745#define MSIHANDLETYPE_ANY 0
746#define MSIHANDLETYPE_DATABASE 1
747#define MSIHANDLETYPE_SUMMARYINFO 2
748#define MSIHANDLETYPE_VIEW 3
749#define MSIHANDLETYPE_RECORD 4
750#define MSIHANDLETYPE_PACKAGE 5
751#define MSIHANDLETYPE_PREVIEW 6
752
753#define MSI_MAJORVERSION 5
754#define MSI_MINORVERSION 0
755#define MSI_BUILDNUMBER 6001
756
757#define GUID_SIZE 39
758#define SQUASHED_GUID_SIZE 33
759
760#define MSIHANDLE_MAGIC 0x4d434923
761
762/* handle unicode/ansi output in the Msi* API functions */
763typedef struct {
765 union {
769} awstring;
770
771typedef struct {
773 union {
777} awcstring;
778
780
781/* msi server interface */
784
785/* handle functions */
790extern void msiobj_addref(MSIOBJECTHDR *);
791extern int msiobj_release(MSIOBJECTHDR *);
792extern void msiobj_lock(MSIOBJECTHDR *);
793extern void msiobj_unlock(MSIOBJECTHDR *);
794extern void msi_free_handle_table(void);
795
796extern void free_cached_tables( MSIDATABASE *db );
797extern UINT MSI_CommitTables( MSIDATABASE *db );
799
800
801/* string table functions */
802extern int msi_add_string( string_table *st, const WCHAR *data, int len, BOOL persistent );
803extern UINT msi_string2id( const string_table *st, const WCHAR *data, int len, UINT *id );
805extern const WCHAR *msi_string_lookup( const string_table *st, UINT id, int *len );
807extern string_table *msi_load_string_table( IStorage *stg, UINT *bytes_per_strref );
808extern UINT msi_save_string_table( const string_table *st, IStorage *storage, UINT *bytes_per_strref );
812
815
816extern UINT read_stream_data( IStorage *stg, LPCWSTR stname, BOOL table,
817 BYTE **pdata, UINT *psz );
818extern UINT write_stream_data( IStorage *stg, LPCWSTR stname,
819 LPCVOID data, UINT sz, BOOL bTable );
820
821/* transform functions */
822extern UINT msi_table_apply_transform( MSIDATABASE *db, IStorage *stg, int err_cond );
824 LPCWSTR szTransformFile, int iErrorCond );
825extern void append_storage_to_db( MSIDATABASE *db, IStorage *stg );
826extern UINT msi_apply_transforms( MSIPACKAGE *package );
827
828/* patch functions */
830extern UINT msi_apply_patches( MSIPACKAGE *package );
831extern UINT msi_apply_registered_patch( MSIPACKAGE *package, LPCWSTR patch_code );
832extern void msi_free_patchinfo( MSIPATCHINFO *patch );
834
835/* action internals */
839extern UINT ACTION_ForceReboot(MSIPACKAGE *package);
840extern UINT MSI_Sequence( MSIPACKAGE *package, LPCWSTR szTable );
841extern UINT MSI_SetFeatureStates( MSIPACKAGE *package );
842extern UINT msi_parse_command_line( MSIPACKAGE *package, LPCWSTR szCommandLine, BOOL preserve_case );
843extern const WCHAR *msi_get_command_line_option( const WCHAR *cmd, const WCHAR *option, UINT *len );
844extern UINT msi_schedule_action( MSIPACKAGE *package, UINT script, const WCHAR *action );
847extern UINT msi_load_all_components( MSIPACKAGE *package );
848extern UINT msi_load_all_features( MSIPACKAGE *package );
849extern UINT msi_validate_product_id( MSIPACKAGE *package );
850
851/* record internals */
852extern void MSI_CloseRecord( MSIOBJECTHDR * );
855extern const WCHAR *MSI_RecordGetString( const MSIRECORD *, UINT );
857extern UINT MSI_RecordSetInteger( MSIRECORD *, UINT, int );
862extern int MSI_RecordGetInteger( MSIRECORD *, UINT );
863extern UINT MSI_RecordReadStream( MSIRECORD *, UINT, char *, LPDWORD);
865extern UINT MSI_RecordGetFieldCount( const MSIRECORD *rec );
872extern UINT msi_record_set_string(MSIRECORD *, UINT, const WCHAR *, int);
873extern const WCHAR *msi_record_get_string(const MSIRECORD *, UINT, int *);
874extern void dump_record(MSIRECORD *);
875extern UINT unmarshal_record(const struct wire_record *in, MSIHANDLE *out);
877extern void free_remote_record(struct wire_record *rec);
878extern UINT copy_remote_record(const struct wire_record *rec, MSIHANDLE handle);
879
880/* stream internals */
881extern void enum_stream_names( IStorage *stg );
884
885/* database internals */
886extern UINT msi_get_stream( MSIDATABASE *, const WCHAR *, IStream ** );
894
895/* view internals */
897extern UINT MSI_ViewFetch( MSIQUERY*, MSIRECORD ** );
898extern UINT MSI_ViewClose( MSIQUERY* );
903
904/* install internals */
905extern UINT MSI_SetInstallLevel( MSIPACKAGE *package, int iInstallLevel );
906
907/* package internals */
908#define WINE_OPENPACKAGEFLAGS_RECACHE 0x80000000
910extern UINT MSI_OpenPackageW( LPCWSTR szPackage, DWORD dwOptions, MSIPACKAGE **pPackage );
925
926/* for deformating */
928
929/* registry data encoding/decoding functions */
936extern UINT MSIREG_OpenProductKey(LPCWSTR szProduct, LPCWSTR szUserSid,
939 HKEY *key, BOOL create);
942 HKEY *key, BOOL create);
944extern UINT MSIREG_OpenUserDataComponentKey(LPCWSTR szComponent, LPCWSTR szUserSid,
945 HKEY *key, BOOL create);
948 LPCWSTR szUserSid, HKEY *key, BOOL create);
950 HKEY *key, BOOL create);
952 HKEY *key, BOOL create);
953extern UINT MSIREG_OpenInstallProps(LPCWSTR szProduct, MSIINSTALLCONTEXT dwContext,
954 LPCWSTR szUserSid, HKEY *key, BOOL create);
957extern UINT MSIREG_DeleteProductKey(LPCWSTR szProduct);
962extern UINT MSIREG_DeleteUserDataComponentKey(LPCWSTR szComponent, LPCWSTR szUserSid);
963extern UINT MSIREG_DeleteUserUpgradeCodesKey(LPCWSTR szUpgradeCode);
972
976extern int msi_compare_font_versions(const WCHAR *, const WCHAR *);
977
982
983/* msi dialog interface */
984extern void msi_dialog_check_messages( HANDLE );
985extern void msi_dialog_destroy( msi_dialog* );
986extern void msi_dialog_unregister_class( void );
987
988/* summary information */
989extern UINT msi_get_suminfo( IStorage *stg, UINT uiUpdateCount, MSISUMMARYINFO **si );
990extern UINT msi_get_db_suminfo( MSIDATABASE *db, UINT uiUpdateCount, MSISUMMARYINFO **si );
993extern INT msi_suminfo_get_int32( MSISUMMARYINFO *si, UINT uiProperty );
995extern UINT msi_add_suminfo( MSIDATABASE *db, LPWSTR **records, int num_records, int num_columns );
1001
1002/* undocumented functions */
1008
1009/* UI globals */
1011extern HWND gUIhwnd;
1015extern DWORD gUIFilter;
1016extern DWORD gUIFilterRecord;
1017extern LPVOID gUIContext;
1019extern WCHAR *gszLogFile;
1021
1022/* action related functions */
1023extern UINT ACTION_PerformAction(MSIPACKAGE *package, const WCHAR *action);
1024extern void ACTION_FinishCustomActions( const MSIPACKAGE* package);
1025extern UINT ACTION_CustomAction(MSIPACKAGE *package, const WCHAR *action);
1026extern void custom_stop_server(HANDLE process, HANDLE pipe);
1027
1028/* actions in other modules */
1029extern UINT ACTION_AppSearch(MSIPACKAGE *package);
1030extern UINT ACTION_CCPSearch(MSIPACKAGE *package);
1032extern UINT ACTION_InstallFiles(MSIPACKAGE *package);
1033extern UINT ACTION_PatchFiles( MSIPACKAGE *package );
1034extern UINT ACTION_RemoveFiles(MSIPACKAGE *package);
1035extern UINT ACTION_MoveFiles(MSIPACKAGE *package);
1036extern UINT ACTION_DuplicateFiles(MSIPACKAGE *package);
1041extern UINT ACTION_RegisterMIMEInfo(MSIPACKAGE *package);
1042extern UINT ACTION_RegisterFonts(MSIPACKAGE *package);
1045extern UINT ACTION_UnregisterFonts(MSIPACKAGE *package);
1050
1051/* Helpers */
1055extern UINT msi_set_property( MSIDATABASE *, const WCHAR *, const WCHAR *, int );
1057extern int msi_get_property_int( MSIDATABASE *package, LPCWSTR prop, int def );
1058extern WCHAR *msi_resolve_source_folder(MSIPACKAGE *package, const WCHAR *name,
1060extern void msi_resolve_target_folder(MSIPACKAGE *package, const WCHAR *name, BOOL load_prop);
1064extern const WCHAR *msi_get_target_folder(MSIPACKAGE *package, const WCHAR *name);
1065extern void msi_reset_source_folders( MSIPACKAGE *package );
1067extern MSIFEATURE *msi_get_loaded_feature(MSIPACKAGE *package, const WCHAR *Feature);
1068extern MSIFILE *msi_get_loaded_file(MSIPACKAGE *package, const WCHAR *file);
1069extern MSIFOLDER *msi_get_loaded_folder(MSIPACKAGE *package, const WCHAR *dir);
1071extern void msi_free_action_script(MSIPACKAGE *package, UINT script);
1074extern void msi_reduce_to_long_filename(WCHAR *);
1080extern UINT msi_set_last_used_source(LPCWSTR product, LPCWSTR usersid,
1094extern UINT msi_strncpyWtoA(const WCHAR *str, int len, char *buf, DWORD *sz, BOOL remote);
1095extern UINT msi_strncpyW(const WCHAR *str, int len, WCHAR *buf, DWORD *sz);
1097
1098/* wrappers for filesystem functions */
1100{
1101 if (is_wow64 && is_platform_64bit( package->platform )) Wow64DisableWow64FsRedirection( &package->cookie );
1102}
1103static inline void msi_revert_fs_redirection( MSIPACKAGE *package )
1104{
1106}
1107extern BOOL msi_get_temp_file_name( MSIPACKAGE *, const WCHAR *, const WCHAR *, WCHAR * );
1108extern HANDLE msi_create_file( MSIPACKAGE *, const WCHAR *, DWORD, DWORD, DWORD, DWORD );
1109extern BOOL msi_copy_file( MSIPACKAGE *, const WCHAR *, const WCHAR *, BOOL );
1110extern BOOL msi_delete_file( MSIPACKAGE *, const WCHAR * );
1111extern BOOL msi_remove_directory( MSIPACKAGE *, const WCHAR * );
1112extern DWORD msi_get_file_attributes( MSIPACKAGE *, const WCHAR * );
1113extern BOOL msi_set_file_attributes( MSIPACKAGE *, const WCHAR *, DWORD );
1116extern BOOL msi_move_file( MSIPACKAGE *, const WCHAR *, const WCHAR *, DWORD );
1117extern DWORD msi_get_file_version_info( MSIPACKAGE *, const WCHAR *, DWORD, BYTE * );
1118extern BOOL msi_create_full_path( MSIPACKAGE *, const WCHAR * );
1119extern DWORD msi_get_disk_file_size( MSIPACKAGE *, const WCHAR * );
1121extern UINT msi_get_filehash( MSIPACKAGE *, const WCHAR *, MSIFILEHASHINFO * );
1124
1125/* media */
1126
1128
1129#define MSICABEXTRACT_BEGINEXTRACT 0x01
1130#define MSICABEXTRACT_FILEEXTRACTED 0x02
1131
1132typedef struct
1133{
1139} MSICABDATA;
1140
1141extern UINT ready_media(MSIPACKAGE *package, BOOL compressed, MSIMEDIAINFO *mi);
1142extern UINT msi_load_media_info(MSIPACKAGE *package, UINT Sequence, MSIMEDIAINFO *mi);
1143extern void msi_free_media_info(MSIMEDIAINFO *mi);
1146
1147/* control event stuff */
1148extern void msi_event_fire(MSIPACKAGE *, const WCHAR *, MSIRECORD *);
1150
1151/* OLE automation */
1152typedef enum tid_t {
1160 LAST_tid
1162
1163extern HRESULT create_msiserver(IUnknown *pOuter, LPVOID *ppObj);
1164extern HRESULT create_session(MSIHANDLE msiHandle, IDispatch *pInstaller, IDispatch **pDispatch);
1165extern HRESULT get_typeinfo(tid_t tid, ITypeInfo **ti);
1166extern void release_typelib(void);
1167
1168/* Scripting */
1169extern DWORD call_script(MSIHANDLE hPackage, INT type, LPCWSTR script, LPCWSTR function, LPCWSTR action);
1170
1171/* User interface messages from the actions */
1172extern void msi_ui_progress(MSIPACKAGE *, int, int, int, int);
1173
1174static inline char *strdupWtoA( LPCWSTR str )
1175{
1176 LPSTR ret = NULL;
1177 DWORD len;
1178
1179 if (!str) return ret;
1180 len = WideCharToMultiByte( CP_ACP, 0, str, -1, NULL, 0, NULL, NULL);
1181 ret = malloc( len );
1182 if (ret)
1183 WideCharToMultiByte( CP_ACP, 0, str, -1, ret, len, NULL, NULL );
1184 return ret;
1185}
1186
1187static inline LPWSTR strdupAtoW( LPCSTR str )
1188{
1189 LPWSTR ret = NULL;
1190 DWORD len;
1191
1192 if (!str) return ret;
1193 len = MultiByteToWideChar( CP_ACP, 0, str, -1, NULL, 0 );
1194 ret = malloc( len * sizeof(WCHAR) );
1195 if (ret)
1196 MultiByteToWideChar( CP_ACP, 0, str, -1, ret, len );
1197 return ret;
1198}
1199
1200static inline char *strdupWtoU( LPCWSTR str )
1201{
1202 LPSTR ret = NULL;
1203 DWORD len;
1204
1205 if (!str) return ret;
1206 len = WideCharToMultiByte( CP_UTF8, 0, str, -1, NULL, 0, NULL, NULL);
1207 ret = malloc( len );
1208 if (ret)
1210 return ret;
1211}
1212
1213static inline LPWSTR strdupUtoW( LPCSTR str )
1214{
1215 LPWSTR ret = NULL;
1216 DWORD len;
1217
1218 if (!str) return ret;
1219 len = MultiByteToWideChar( CP_UTF8, 0, str, -1, NULL, 0 );
1220 ret = malloc( len * sizeof(WCHAR) );
1221 if (ret)
1222 MultiByteToWideChar( CP_UTF8, 0, str, -1, ret, len );
1223 return ret;
1224}
1225
1226static inline int cost_from_size( int size )
1227{
1228 /* Cost is size rounded up to the nearest 4096 bytes,
1229 * expressed in units of 512 bytes. */
1230 return ((size + 4095) & ~4095) / 512;
1231}
1232
1233#endif /* __WINE_MSI_PRIVATE__ */
void destroy(_Tp *__pointer)
Definition: _construct.h:278
#define VOID
Definition: acefi.h:82
COMPILER_DEPENDENT_UINT64 UINT64
Definition: actypes.h:131
unsigned int dir
Definition: maze.c:112
_In_ ULONG const _In_ FEATURE_NUMBER const Feature
Definition: cdrom.h:1077
Definition: list.h:39
#define free
Definition: debug_ros.c:5
#define malloc
Definition: debug_ros.c:4
#define NULL
Definition: types.h:112
#define TRUE
Definition: types.h:120
#define FALSE
Definition: types.h:117
#define CP_ACP
Definition: compat.h:109
#define MAX_PATH
Definition: compat.h:34
#define WideCharToMultiByte
Definition: compat.h:111
#define MultiByteToWideChar
Definition: compat.h:110
BOOL WINAPI Wow64RevertWow64FsRedirection(IN PVOID OldValue)
Definition: utils.c:810
BOOL WINAPI Wow64DisableWow64FsRedirection(IN PVOID *OldValue)
Definition: utils.c:787
#define __WINE_DEALLOC(...)
Definition: corecrt.h:334
#define __WINE_MALLOC
Definition: corecrt.h:340
struct png_info_def *typedef unsigned char **typedef struct png_info_def *typedef struct png_info_def *typedef struct png_info_def *typedef unsigned char ** row
Definition: typeof.h:78
return ret
Definition: mutex.c:147
action
Definition: namespace.c:707
unsigned int BOOL
Definition: ntddk_ex.h:94
unsigned long DWORD
Definition: ntddk_ex.h:95
GLuint GLuint GLsizei GLenum type
Definition: gl.h:1545
GLint GLenum GLsizei GLsizei GLsizei GLint GLsizei const GLvoid * data
Definition: gl.h:1950
GLdouble n
Definition: glext.h:7729
GLsizeiptr size
Definition: glext.h:5919
GLenum GLenum GLuint components
Definition: glext.h:9620
GLuint index
Definition: glext.h:6031
GLenum GLint GLuint mask
Definition: glext.h:6028
GLboolean GLboolean GLboolean b
Definition: glext.h:6204
GLenum GLuint GLenum GLsizei const GLchar * buf
Definition: glext.h:7751
GLuint in
Definition: glext.h:9616
GLuint GLfloat * val
Definition: glext.h:7180
GLfloat GLfloat p
Definition: glext.h:8902
GLenum GLsizei len
Definition: glext.h:6722
GLboolean GLboolean GLboolean GLboolean a
Definition: glext.h:6204
unsigned int UINT
Definition: sysinfo.c:13
tid_t
Definition: ieframe.h:311
static TfClientId tid
const char * filename
Definition: ioapi.h:137
uint32_t entry
Definition: isohybrid.c:63
USHORT LANGID
Definition: mui.h:9
int * LPINT
Definition: minwindef.h:151
CONST void * LPCVOID
Definition: minwindef.h:164
static PVOID ptr
Definition: dispmode.c:27
static SYSTEM_INFO si
Definition: virtual.c:39
static IDispatch * pInstaller
Definition: automation.c:52
static const struct access_res create[16]
Definition: package.c:7546
INTERNETFEATURELIST feature
Definition: misc.c:1807
static PROTOCOLDATA * pdata
Definition: protocol.c:163
static MONITORINFO mi
Definition: win.c:9400
enum tagMSIPATCHSTATE MSIPATCHSTATE
enum tagMSIINSTALLCONTEXT MSIINSTALLCONTEXT
INT(CALLBACK * INSTALLUI_HANDLERW)(LPVOID, UINT, LPCWSTR)
Definition: msi.h:421
INT(CALLBACK * INSTALLUI_HANDLERA)(LPVOID, UINT, LPCSTR)
Definition: msi.h:420
INT(CALLBACK * INSTALLUI_HANDLER_RECORD)(LPVOID, UINT, MSIHANDLE)
Definition: msi.h:422
enum tagINSTALLUILEVEL INSTALLUILEVEL
int msiobj_release(MSIOBJECTHDR *)
Definition: handle.c:241
BOOL unsquash_guid(LPCWSTR in, LPWSTR out)
Definition: registry.c:41
int MSI_RecordGetInteger(MSIRECORD *, UINT)
Definition: record.c:213
MSIFILE * msi_get_loaded_file(MSIPACKAGE *package, const WCHAR *file)
Definition: action.c:571
MSIPACKAGE * MSI_CreatePackage(MSIDATABASE *)
Definition: package.c:981
UINT MSIREG_DeleteUserUpgradeCodesKey(LPCWSTR szUpgradeCode)
Definition: registry.c:829
UINT MSIREG_DeleteUpgradeCodesKey(const WCHAR *)
Definition: registry.c:812
UINT ACTION_UnregisterMIMEInfo(MSIPACKAGE *package)
Definition: classes.c:1450
UINT msi_check_patch_applicable(MSIPACKAGE *package, MSISUMMARYINFO *si)
Definition: patch.c:294
struct _column_info column_info
BOOL MSI_RecordsAreEqual(MSIRECORD *, MSIRECORD *)
Definition: record.c:986
HINSTANCE msi_hInstance
Definition: msi_main.c:51
WCHAR * msi_get_suminfo_product(IStorage *stg) __WINE_DEALLOC(free) __WINE_MALLOC
Definition: suminfo.c:724
UINT MSI_ViewExecute(MSIQUERY *, MSIRECORD *)
Definition: msiquery.c:498
UINT MSIREG_OpenProductKey(LPCWSTR szProduct, LPCWSTR szUserSid, MSIINSTALLCONTEXT context, HKEY *key, BOOL create)
Definition: registry.c:338
void MSI_CloseRecord(MSIOBJECTHDR *)
Definition: record.c:67
WCHAR * msi_get_assembly_path(MSIPACKAGE *, const WCHAR *) __WINE_DEALLOC(free) __WINE_MALLOC
Definition: assembly.c:219
UINT MSI_RecordGetIStream(MSIRECORD *, UINT, IStream **)
Definition: record.c:852
DWORD call_script(MSIHANDLE hPackage, INT type, LPCWSTR script, LPCWSTR function, LPCWSTR action)
Definition: script.c:289
DWORD msi_get_file_version_info(MSIPACKAGE *, const WCHAR *, DWORD, BYTE *)
Definition: files.c:160
UINT msi_strncpyW(const WCHAR *str, int len, WCHAR *buf, DWORD *sz)
Definition: install.c:213
BOOL msi_move_file(MSIPACKAGE *, const WCHAR *, const WCHAR *, DWORD)
Definition: files.c:142
HRESULT get_typeinfo(tid_t tid, ITypeInfo **ti)
Definition: ieframe_main.c:61
UINT ACTION_UnregisterExtensionInfo(MSIPACKAGE *package)
Definition: classes.c:1307
UINT msi_install_assembly(MSIPACKAGE *, MSICOMPONENT *)
Definition: assembly.c:356
static const BOOL is_64bit
Definition: msipriv.h:44
LONG msi_reg_set_val_dword(HKEY hkey, LPCWSTR name, DWORD val)
Definition: registry.c:225
UINT MSI_RecordSetStreamFromFileW(MSIRECORD *, UINT, LPCWSTR)
Definition: record.c:683
UINT msi_suminfo_persist(MSISUMMARYINFO *)
Definition: suminfo.c:971
DWORD msi_get_disk_file_size(MSIPACKAGE *, const WCHAR *)
Definition: files.c:199
UINT ACTION_InstallFiles(MSIPACKAGE *package)
Definition: files.c:564
struct tagFeatureList FeatureList
INSTALLSTATE msi_get_component_action(MSIPACKAGE *package, MSICOMPONENT *comp)
Definition: action.c:608
UINT ACTION_RemoveFiles(MSIPACKAGE *package)
Definition: files.c:1528
WCHAR * msi_strdupW(const WCHAR *value, int len) __WINE_DEALLOC(free) __WINE_MALLOC
Definition: record.c:155
void dump_record(MSIRECORD *)
Definition: record.c:1028
static int cost_from_size(int size)
Definition: msipriv.h:1226
UINT MSI_RecordGetStringA(MSIRECORD *, UINT, LPSTR, LPDWORD)
Definition: record.c:351
UINT MSI_SetTargetPathW(MSIPACKAGE *, LPCWSTR, LPCWSTR)
Definition: install.c:564
BOOL squash_guid(LPCWSTR in, LPWSTR out)
Definition: registry.c:74
UINT MSIREG_DeleteLocalClassesFeaturesKey(LPCWSTR szProductCode)
Definition: registry.c:858
UINT msi_set_last_used_source(LPCWSTR product, LPCWSTR usersid, MSIINSTALLCONTEXT context, DWORD options, LPCWSTR value)
Definition: source.c:686
WCHAR * msi_resolve_file_source(MSIPACKAGE *package, MSIFILE *file) __WINE_DEALLOC(free) __WINE_MALLOC
Definition: files.c:536
BOOL msi_get_temp_file_name(MSIPACKAGE *, const WCHAR *, const WCHAR *, WCHAR *)
Definition: files.c:51
UINT MSI_OpenDatabaseW(LPCWSTR, LPCWSTR, MSIDATABASE **)
Definition: database.c:140
UINT msi_locate_product(LPCWSTR szProduct, MSIINSTALLCONTEXT *context)
Definition: msi.c:54
UINT msi_record_set_string(MSIRECORD *, UINT, const WCHAR *, int)
Definition: record.c:573
UINT msi_get_string_table_codepage(const string_table *st)
Definition: string.c:671
UINT ACTION_FindRelatedProducts(MSIPACKAGE *package)
Definition: upgrade.c:217
UINT MSIREG_OpenUserDataComponentKey(LPCWSTR szComponent, LPCWSTR szUserSid, HKEY *key, BOOL create)
Definition: registry.c:526
WCHAR * gszLogFile
Definition: msi_main.c:50
struct tagMSIPREVIEW MSIPREVIEW
void msi_dialog_unregister_class(void)
Definition: dialog.c:4102
UINT ACTION_AppSearch(MSIPACKAGE *package)
Definition: appsearch.c:1124
UINT MSIREG_DeleteUninstallKey(const WCHAR *, enum platform)
UINT MSIREG_OpenUserPatchesKey(LPCWSTR szPatch, HKEY *key, BOOL create)
Definition: registry.c:390
LONG msi_reg_set_subkey_val(HKEY hkey, LPCWSTR path, LPCWSTR name, LPCWSTR val)
Definition: registry.c:230
UINT ACTION_MsiUnpublishAssemblies(MSIPACKAGE *package)
Definition: assembly.c:615
void msi_ui_progress(MSIPACKAGE *, int, int, int, int)
Definition: action.c:593
UINT copy_remote_record(const struct wire_record *rec, MSIHANDLE handle)
Definition: record.c:1052
UINT msi_clone_properties(MSIDATABASE *)
Definition: package.c:381
void msi_reset_source_folders(MSIPACKAGE *package)
Definition: package.c:2121
WCHAR ** msi_split_string(const WCHAR *, WCHAR)
Definition: action.c:297
static BOOL is_platform_64bit(enum platform platform)
Definition: msipriv.h:373
HANDLE msi_find_first_file(MSIPACKAGE *, const WCHAR *, WIN32_FIND_DATAW *)
Definition: files.c:124
BOOL(* PMSICABEXTRACTCB)(MSIPACKAGE *, LPCWSTR, DWORD, LPWSTR *, DWORD *, PVOID)
Definition: msipriv.h:1127
UINT ACTION_RegisterMIMEInfo(MSIPACKAGE *package)
Definition: classes.c:1392
const WCHAR * msi_record_get_string(const MSIRECORD *, UINT, int *)
Definition: record.c:420
BOOL TABLE_Exists(MSIDATABASE *db, LPCWSTR name)
Definition: table.c:962
WCHAR * msi_create_temp_file(MSIDATABASE *db) __WINE_DEALLOC(free) __WINE_MALLOC
Definition: custom.c:214
WCHAR * msi_dup_record_field(MSIRECORD *row, INT index) __WINE_DEALLOC(free) __WINE_MALLOC
Definition: record.c:1002
UINT msi_add_cabinet_stream(MSIPACKAGE *, UINT, IStorage *, const WCHAR *)
Definition: media.c:923
UINT msi_add_suminfo(MSIDATABASE *db, LPWSTR **records, int num_records, int num_columns)
Definition: suminfo.c:1077
BOOL encode_base85_guid(GUID *, LPWSTR)
Definition: registry.c:165
INSTALLUI_HANDLERA gUIHandlerA
Definition: msi_main.c:43
MSIHANDLE alloc_msihandle(MSIOBJECTHDR *)
Definition: handle.c:111
BOOL msi_remove_directory(MSIPACKAGE *, const WCHAR *)
Definition: files.c:97
UINT MSIREG_OpenUserDataProductPatchesKey(LPCWSTR product, MSIINSTALLCONTEXT context, HKEY *key, BOOL create)
Definition: registry.c:666
HANDLE msi_create_file(MSIPACKAGE *, const WCHAR *, DWORD, DWORD, DWORD, DWORD)
Definition: files.c:60
void * alloc_msiobject(UINT type, UINT size, msihandledestructor destroy)
Definition: handle.c:201
UINT MSI_RecordSetInteger(MSIRECORD *, UINT, int)
Definition: record.c:280
tid_t
Definition: msipriv.h:1152
@ View_tid
Definition: msipriv.h:1159
@ Session_tid
Definition: msipriv.h:1156
@ Database_tid
Definition: msipriv.h:1153
@ LAST_tid
Definition: msipriv.h:1160
@ SummaryInfo_tid
Definition: msipriv.h:1158
@ StringList_tid
Definition: msipriv.h:1157
@ Record_tid
Definition: msipriv.h:1155
@ Installer_tid
Definition: msipriv.h:1154
DWORD gUIFilter
Definition: msi_main.c:46
UINT msi_load_all_components(MSIPACKAGE *package)
Definition: action.c:806
UINT ready_media(MSIPACKAGE *package, BOOL compressed, MSIMEDIAINFO *mi)
Definition: media.c:838
UINT MSIREG_OpenClassesUpgradeCodesKey(LPCWSTR szUpgradeCode, HKEY *key, BOOL create)
Definition: registry.c:875
int msi_compare_file_versions(VS_FIXEDFILEINFO *, const WCHAR *)
Definition: action.c:1928
UINT MSI_RecordSetIStream(MSIRECORD *, UINT, IStream *)
Definition: record.c:836
LONG msi_reg_set_val_multi_str(HKEY hkey, LPCWSTR name, LPCWSTR value)
Definition: registry.c:217
UINT msi_string2id(const string_table *st, const WCHAR *data, int len, UINT *id)
Definition: string.c:400
UINT msi_schedule_action(MSIPACKAGE *package, UINT script, const WCHAR *action)
Definition: custom.c:89
WCHAR * encode_streamname(BOOL is_table, const WCHAR *in) __WINE_DEALLOC(free) __WINE_MALLOC
struct tagMSIFIELD MSIFIELD
WCHAR * msi_get_error_message(MSIDATABASE *, int) __WINE_DEALLOC(free) __WINE_MALLOC
Definition: package.c:1850
UINT msi_apply_patches(MSIPACKAGE *package)
Definition: patch.c:932
UINT MSIREG_OpenInstallProps(LPCWSTR szProduct, MSIINSTALLCONTEXT dwContext, LPCWSTR szUserSid, HKEY *key, BOOL create)
Definition: registry.c:692
script
Definition: msipriv.h:396
@ SCRIPT_INSTALL
Definition: msipriv.h:398
@ SCRIPT_ROLLBACK
Definition: msipriv.h:400
@ SCRIPT_NONE
Definition: msipriv.h:397
@ SCRIPT_COMMIT
Definition: msipriv.h:399
@ SCRIPT_MAX
Definition: msipriv.h:401
UINT MSIREG_DeleteUserDataComponentKey(LPCWSTR szComponent, LPCWSTR szUserSid)
Definition: registry.c:552
UINT msi_set_sourcedir_props(MSIPACKAGE *package, BOOL replace)
Definition: action.c:348
BOOL decode_base85_guid(LPCWSTR, GUID *)
Definition: registry.c:132
MSIFOLDER * msi_get_loaded_folder(MSIPACKAGE *package, const WCHAR *dir)
Definition: action.c:582
DWORD deformat_string(MSIPACKAGE *package, LPCWSTR ptr, WCHAR **data)
UINT MSIREG_OpenPatchesKey(LPCWSTR szPatch, HKEY *key, BOOL create)
Definition: registry.c:768
UINT msi_set_context(MSIPACKAGE *)
Definition: action.c:390
UINT ACTION_RegisterExtensionInfo(MSIPACKAGE *package)
Definition: classes.c:1196
UINT MSI_ViewClose(MSIQUERY *)
Definition: msiquery.c:450
UINT MSIREG_DeleteClassesUpgradeCodesKey(LPCWSTR szUpgradeCode)
Definition: registry.c:890
void msi_parse_version_string(LPCWSTR, PDWORD, PDWORD)
Definition: appsearch.c:52
LPVOID gUIContextRecord
Definition: msi_main.c:49
int msi_get_property_int(MSIDATABASE *package, LPCWSTR prop, int def)
Definition: package.c:2337
UINT msi_download_file(LPCWSTR szUrl, LPWSTR filename)
Definition: package.c:1030
UINT msi_commit_streams(MSIDATABASE *db)
Definition: streams.c:607
UINT ACTION_UnregisterClassInfo(MSIPACKAGE *package)
Definition: classes.c:857
UINT ACTION_ForceReboot(MSIPACKAGE *package)
Definition: action.c:5227
WCHAR * msi_create_component_advertise_string(MSIPACKAGE *, MSICOMPONENT *, const WCHAR *) __WINE_DEALLOC(free) __WINE_MALLOC
Definition: action.c:5538
UINT msi_suminfo_set_prop(MSISUMMARYINFO *, UINT, UINT, INT, FILETIME *, awcstring *)
Definition: suminfo.c:895
UINT MSI_DatabaseGetPrimaryKeys(MSIDATABASE *, LPCWSTR, MSIRECORD **)
UINT ACTION_CCPSearch(MSIPACKAGE *package)
Definition: appsearch.c:1174
UINT MSI_DatabaseOpenViewW(MSIDATABASE *, LPCWSTR, MSIQUERY **)
INT MSI_ProcessMessageVerbatim(MSIPACKAGE *, INSTALLMESSAGE, MSIRECORD *)
Definition: package.c:1875
WCHAR * msi_resolve_source_folder(MSIPACKAGE *package, const WCHAR *name, MSIFOLDER **folder) __WINE_DEALLOC(free) __WINE_MALLOC
Definition: install.c:364
BOOL is_wow64
Definition: main.c:38
BOOL msi_delete_file(MSIPACKAGE *, const WCHAR *)
Definition: files.c:79
UINT MSI_DatabaseApplyTransformW(MSIDATABASE *db, LPCWSTR szTransformFile, int iErrorCond)
UINT MSI_RecordReadStream(MSIRECORD *, UINT, char *, LPDWORD)
Definition: record.c:761
UINT MSIREG_OpenUserComponentsKey(LPCWSTR szComponent, HKEY *key, BOOL create)
Definition: registry.c:505
UINT(* record_func)(MSIRECORD *, LPVOID)
Definition: msipriv.h:890
struct tagMSIFEATURE MSIFEATURE
void custom_stop_server(HANDLE process, HANDLE pipe)
Definition: custom.c:681
WCHAR * msi_get_package_code(MSIDATABASE *db) __WINE_DEALLOC(free) __WINE_MALLOC
Definition: package.c:1309
struct tagMSIFILE MSIFILE
void msi_event_cleanup_all_subscriptions(MSIPACKAGE *)
Definition: dialog.c:4111
#define MSI_MAX_PROPS
Definition: msipriv.h:496
UINT msi_patch_assembly(MSIPACKAGE *, MSIASSEMBLY *, MSIFILEPATCH *)
Definition: files.c:726
UINT msi_package_add_media_disk(MSIPACKAGE *, DWORD, DWORD, DWORD, LPWSTR, LPWSTR)
Definition: package.c:2680
UINT MSIREG_OpenUninstallKey(const WCHAR *, enum platform, HKEY *, BOOL)
struct tagMSIEXTENSION MSIEXTENSION
HRESULT msi_init_string_table(IStorage *stg)
Definition: string.c:460
VS_FIXEDFILEINFO * msi_get_disk_file_version(MSIPACKAGE *, const WCHAR *)
Definition: files.c:170
MSIASSEMBLY * msi_load_assembly(MSIPACKAGE *, MSICOMPONENT *)
Definition: assembly.c:292
UINT MSIREG_DeleteUserProductKey(LPCWSTR szProduct)
Definition: registry.c:378
UINT msi_apply_registered_patch(MSIPACKAGE *package, LPCWSTR patch_code)
Definition: patch.c:990
BOOL msi_set_file_attributes(MSIPACKAGE *, const WCHAR *, DWORD)
Definition: files.c:106
UINT msi_table_apply_transform(MSIDATABASE *db, IStorage *stg, int err_cond)
Definition: table.c:3385
string_table * msi_load_string_table(IStorage *stg, UINT *bytes_per_strref)
Definition: string.c:478
struct tagMSISOURCELISTINFO MSISOURCELISTINFO
MSICONDITION MSI_EvaluateConditionW(MSIPACKAGE *, LPCWSTR)
UINT msi_set_original_database_property(MSIDATABASE *, const WCHAR *)
Definition: package.c:1342
const WCHAR * MSI_RecordGetString(const MSIRECORD *, UINT)
Definition: record.c:433
static LPWSTR strdupAtoW(LPCSTR str)
Definition: msipriv.h:1187
UINT msi_view_get_row(MSIDATABASE *, MSIVIEW *, UINT, MSIRECORD **)
Definition: msiquery.c:351
UINT ACTION_RegisterClassInfo(MSIPACKAGE *package)
Definition: classes.c:690
UINT MSI_GetComponentStateW(MSIPACKAGE *, LPCWSTR, INSTALLSTATE *, INSTALLSTATE *)
Definition: install.c:1430
UINT msi_load_suminfo_properties(MSIPACKAGE *package)
Definition: suminfo.c:1266
int msi_compare_font_versions(const WCHAR *, const WCHAR *)
Definition: action.c:1941
static char * strdupWtoU(LPCWSTR str)
Definition: msipriv.h:1200
BOOL MSI_RecordsAreFieldsEqual(MSIRECORD *a, MSIRECORD *b, UINT field)
Definition: record.c:957
LONG msi_reg_set_val_str(HKEY hkey, LPCWSTR name, LPCWSTR value)
Definition: registry.c:209
const WCHAR * msi_get_target_folder(MSIPACKAGE *package, const WCHAR *name)
Definition: install.c:232
DWORD msi_get_file_attributes(MSIPACKAGE *, const WCHAR *)
Definition: files.c:115
struct tagMSIMEDIAINFO MSIMEDIAINFO
BOOL decode_streamname(LPCWSTR in, LPWSTR out)
Definition: table.c:180
MSIHANDLE msi_get_remote(MSIHANDLE handle)
Definition: handle.c:183
UINT WINAPIV MSI_OpenQuery(MSIDATABASE *, MSIQUERY **, LPCWSTR,...)
Definition: msiquery.c:138
BOOL msi_action_is_unique(const MSIPACKAGE *, const WCHAR *)
Definition: custom.c:130
struct tagMSIVIEWOPS MSIVIEWOPS
UINT msi_strncpyWtoA(const WCHAR *str, int len, char *buf, DWORD *sz, BOOL remote)
Definition: install.c:190
INT msi_suminfo_get_int32(MSISUMMARYINFO *si, UINT uiProperty)
Definition: suminfo.c:712
DWORD gUIFilterRecord
Definition: msi_main.c:47
void msi_dialog_check_messages(HANDLE)
Definition: dialog.c:3991
UINT msi_validate_product_id(MSIPACKAGE *package)
Definition: action.c:7221
UINT VIEW_find_column(MSIVIEW *, LPCWSTR, LPCWSTR, UINT *)
Definition: msiquery.c:59
HRESULT create_session(MSIHANDLE msiHandle, IDispatch *pInstaller, IDispatch **pDispatch)
Definition: automation.c:2446
const struct tagMSICOLUMNHASHENTRY * MSIITERHANDLE
Definition: msipriv.h:229
UINT msi_get_db_suminfo(MSIDATABASE *db, UINT uiUpdateCount, MSISUMMARYINFO **si)
Definition: suminfo.c:491
HRESULT create_msiserver(IUnknown *pOuter, LPVOID *ppObj)
void ACTION_FinishCustomActions(const MSIPACKAGE *package)
Definition: custom.c:1628
struct tagMSICABINETSTREAM MSICABINETSTREAM
INT ACTION_DialogBox(MSIPACKAGE *, LPCWSTR)
UINT msi_strcpy_to_awstring(const WCHAR *, int, awstring *, DWORD *)
Definition: install.c:158
LANGID WINAPI MsiLoadStringW(MSIHANDLE, UINT, LPWSTR, int, LANGID)
INSTALLUILEVEL gUILevel
Definition: msi_main.c:41
folder_state
Definition: msipriv.h:578
@ FOLDER_STATE_UNINITIALIZED
Definition: msipriv.h:579
@ FOLDER_STATE_EXISTS
Definition: msipriv.h:580
@ FOLDER_STATE_REMOVED
Definition: msipriv.h:583
@ FOLDER_STATE_CREATED
Definition: msipriv.h:581
@ FOLDER_STATE_CREATED_PERSISTENT
Definition: msipriv.h:582
const WCHAR * msi_string_lookup(const string_table *st, UINT id, int *len)
Definition: string.c:343
struct tagMSITRANSFORM MSITRANSFORM
IAssemblyEnum * msi_create_assembly_enum(MSIPACKAGE *, const WCHAR *)
Definition: assembly.c:244
UINT MSI_SetFeatureStates(MSIPACKAGE *package)
Definition: action.c:1638
UINT msi_uninstall_assembly(MSIPACKAGE *, MSICOMPONENT *)
Definition: assembly.c:402
struct tagMSISTREAM MSISTREAM
UINT MSI_ViewGetColumnInfo(MSIQUERY *, MSICOLINFO, MSIRECORD **)
Definition: msiquery.c:598
struct tagMSIBINARY MSIBINARY
struct tagMSIVERB MSIVERB
UINT MSIREG_DeleteUserDataProductKey(LPCWSTR, MSIINSTALLCONTEXT)
Definition: registry.c:720
LPVOID gUIContext
Definition: msi_main.c:48
UINT MSIREG_OpenFeaturesKey(LPCWSTR szProduct, LPCWSTR szUserSid, MSIINSTALLCONTEXT context, HKEY *key, BOOL create)
Definition: registry.c:404
UINT MSIREG_OpenUserUpgradeCodesKey(LPCWSTR szProduct, HKEY *key, BOOL create)
Definition: registry.c:798
UINT msi_export_suminfo(MSIDATABASE *db, HANDLE handle)
Definition: suminfo.c:1194
UINT MSI_FormatRecordW(MSIPACKAGE *, MSIRECORD *, LPWSTR, LPDWORD)
Definition: format.c:838
void msi_free_patchinfo(MSIPATCHINFO *patch)
Definition: patch.c:865
UINT msi_set_property(MSIDATABASE *, const WCHAR *, const WCHAR *, int)
Definition: package.c:2132
HWND gUIhwnd
Definition: msi_main.c:42
void msi_free_media_info(MSIMEDIAINFO *mi)
Definition: media.c:649
BOOL msi_reg_get_val_dword(HKEY hkey, LPCWSTR name, DWORD *val)
Definition: registry.c:262
MSIRECORD *WINAPIV MSI_QueryGetRecord(MSIDATABASE *db, LPCWSTR query,...)
Definition: msiquery.c:201
void enum_stream_names(IStorage *stg)
Definition: table.c:206
MSIFEATURE * msi_get_loaded_feature(MSIPACKAGE *package, const WCHAR *Feature)
Definition: action.c:560
struct tagMSICLASS MSICLASS
struct tagMSIQUERY MSIQUERY
UINT MSI_GetFeatureStateW(MSIPACKAGE *, LPCWSTR, INSTALLSTATE *, INSTALLSTATE *)
Definition: install.c:1068
MSICONDITION MSI_DatabaseIsTablePersistent(MSIDATABASE *db, LPCWSTR table)
Definition: table.c:2938
struct tagMSIPACKAGE MSIPACKAGE
void ACTION_UpdateComponentStates(MSIPACKAGE *package, MSIFEATURE *feature)
Definition: install.c:833
UINT msi_get_property(MSIDATABASE *, LPCWSTR, LPWSTR, LPDWORD)
Definition: package.c:2282
VOID msi_destroy_stringtable(string_table *st)
Definition: string.c:107
void release_typelib(void)
Definition: apps.c:160
UINT msi_register_unique_action(MSIPACKAGE *, const WCHAR *)
Definition: custom.c:112
UINT msi_save_string_table(const string_table *st, IStorage *storage, UINT *bytes_per_strref)
Definition: string.c:564
UINT ACTION_PerformAction(MSIPACKAGE *package, const WCHAR *action)
Definition: action.c:7837
struct tagFolderList FolderList
UINT MSI_SetFeatureStateW(MSIPACKAGE *, LPCWSTR, INSTALLSTATE)
Definition: install.c:915
WCHAR * msi_build_icon_path(MSIPACKAGE *, const WCHAR *) __WINE_DEALLOC(free) __WINE_MALLOC
Definition: action.c:3721
void free_remote_record(struct wire_record *rec)
Definition: record.c:1149
struct tagMSIPATCHINFO MSIPATCHINFO
UINT MSIREG_OpenUpgradeCodesKey(LPCWSTR szProduct, HKEY *key, BOOL create)
Definition: registry.c:783
static void msi_revert_fs_redirection(MSIPACKAGE *package)
Definition: msipriv.h:1103
LONG WINAPI rpc_filter(EXCEPTION_POINTERS *eptr)
Definition: custom.c:84
UINT msi_set_string_table_codepage(string_table *st, UINT codepage)
Definition: string.c:676
UINT MSI_Sequence(MSIPACKAGE *package, LPCWSTR szTable)
Definition: action.c:446
UINT ACTION_UnregisterProgIdInfo(MSIPACKAGE *package)
Definition: classes.c:1088
void msi_dialog_destroy(msi_dialog *)
Definition: dialog.c:4059
struct tagMSIAPPID MSIAPPID
BOOL MSI_RecordIsNull(MSIRECORD *, UINT)
Definition: record.c:321
UINT MSI_RecordStreamToFile(MSIRECORD *, UINT, LPCWSTR)
Definition: record.c:900
UINT ACTION_PatchFiles(MSIPACKAGE *package)
Definition: files.c:776
UINT MSIREG_DeleteLocalClassesProductKey(LPCWSTR szProductCode)
Definition: registry.c:841
static void msi_disable_fs_redirection(MSIPACKAGE *package)
Definition: msipriv.h:1099
UINT MSI_RecordCopyField(MSIRECORD *, UINT, MSIRECORD *, UINT)
Definition: record.c:166
UINT ACTION_RegisterProgIdInfo(MSIPACKAGE *package)
Definition: classes.c:1026
INT MSI_ProcessMessage(MSIPACKAGE *, INSTALLMESSAGE, MSIRECORD *)
Definition: package.c:1941
BOOL msi_is_global_assembly(MSICOMPONENT *)
Definition: action.c:2035
BOOL msi_create_full_path(MSIPACKAGE *, const WCHAR *)
Definition: files.c:211
void msiobj_addref(MSIOBJECTHDR *)
Definition: handle.c:217
UINT msi_parse_command_line(MSIPACKAGE *package, LPCWSTR szCommandLine, BOOL preserve_case)
Definition: action.c:206
UINT MSI_GetFeatureCost(MSIPACKAGE *, MSIFEATURE *, MSICOSTTREE, INSTALLSTATE, LPINT)
Definition: install.c:1158
UINT MSIREG_DeleteUserFeaturesKey(LPCWSTR szProduct)
Definition: registry.c:445
UINT MSI_ViewFetch(MSIQUERY *, MSIRECORD **)
Definition: msiquery.c:373
UINT read_stream_data(IStorage *stg, LPCWSTR stname, BOOL table, BYTE **pdata, UINT *psz)
Definition: table.c:234
UINT MSIREG_OpenUserDataPatchKey(LPCWSTR szPatch, MSIINSTALLCONTEXT dwContext, HKEY *key, BOOL create)
Definition: registry.c:610
UINT WINAPI MsiDecomposeDescriptorA(LPCSTR, LPSTR, LPSTR, LPSTR, LPDWORD)
Definition: registry.c:984
void msi_free_handle_table(void)
Definition: handle.c:71
void free_cached_tables(MSIDATABASE *db)
Definition: table.c:472
static char * strdupWtoA(LPCWSTR str)
Definition: msipriv.h:1174
void msi_free_action_script(MSIPACKAGE *package, UINT script)
Definition: package.c:137
INSTALLUI_HANDLER_RECORD gUIHandlerRecord
Definition: msi_main.c:45
MSICOMPONENT * msi_get_loaded_component(MSIPACKAGE *package, const WCHAR *Component)
Definition: action.c:549
WCHAR * msi_dup_property(MSIDATABASE *db, const WCHAR *prop) __WINE_DEALLOC(free) __WINE_MALLOC
UINT WINAPI MsiCreateAndVerifyInstallerDirectory(DWORD)
Definition: msi.c:3810
UINT ACTION_DuplicateFiles(MSIPACKAGE *package)
Definition: files.c:1315
UINT msi_suminfo_get_prop(MSISUMMARYINFO *, UINT, UINT *, INT *, FILETIME *, awstring *, DWORD *)
Definition: suminfo.c:645
LANGID WINAPI MsiLoadStringA(MSIHANDLE, UINT, LPSTR, int, LANGID)
Definition: msi.c:2397
UINT msi_load_all_features(MSIPACKAGE *package)
Definition: action.c:949
void append_storage_to_db(MSIDATABASE *db, IStorage *stg)
Definition: database.c:76
UINT MSIREG_OpenUserDataProductKey(LPCWSTR szProduct, MSIINSTALLCONTEXT dwContext, LPCWSTR szUserSid, HKEY *key, BOOL create)
Definition: registry.c:582
UINT ACTION_CustomAction(MSIPACKAGE *package, const WCHAR *action)
Definition: custom.c:1484
UINT MSI_RecordSetStringW(MSIRECORD *, UINT, LPCWSTR)
Definition: record.c:597
MSIRECORD * MSI_CreateRecord(UINT)
Definition: record.c:76
void msi_event_fire(MSIPACKAGE *, const WCHAR *, MSIRECORD *)
Definition: dialog.c:4421
UINT MSIREG_OpenUserDataFeaturesKey(LPCWSTR szProduct, LPCWSTR szUserSid, MSIINSTALLCONTEXT context, HKEY *key, BOOL create)
Definition: registry.c:472
UINT MSIREG_DeleteProductKey(LPCWSTR szProduct)
Definition: registry.c:751
BOOL msi_copy_file(MSIPACKAGE *, const WCHAR *, const WCHAR *, BOOL)
Definition: files.c:70
struct wire_record * marshal_record(MSIHANDLE handle)
Definition: record.c:1109
UINT msi_get_stream(MSIDATABASE *, const WCHAR *, IStream **)
Definition: streams.c:499
UINT WINAPI MsiDecomposeDescriptorW(LPCWSTR, LPWSTR, LPWSTR, LPWSTR, LPDWORD)
Definition: registry.c:927
void msi_destroy_assembly_caches(MSIPACKAGE *)
Definition: assembly.c:89
UINT MSIREG_DeleteUserDataPatchKey(LPCWSTR patch, MSIINSTALLCONTEXT context)
Definition: registry.c:636
BOOL msi_find_next_file(MSIPACKAGE *, HANDLE, WIN32_FIND_DATAW *)
Definition: files.c:133
enum _msi_file_state msi_file_state
struct tagMSIASSEMBLY MSIASSEMBLY
void msiobj_lock(MSIOBJECTHDR *)
Definition: handle.c:231
MSIHANDLE alloc_msi_remote_handle(MSIHANDLE remote)
Definition: handle.c:135
platform
Definition: msipriv.h:364
@ PLATFORM_X64
Definition: msipriv.h:368
@ PLATFORM_UNRECOGNIZED
Definition: msipriv.h:365
@ PLATFORM_INTEL64
Definition: msipriv.h:367
@ PLATFORM_INTEL
Definition: msipriv.h:366
@ PLATFORM_ARM
Definition: msipriv.h:369
@ PLATFORM_ARM64
Definition: msipriv.h:370
VOID(* msihandledestructor)(MSIOBJECTHDR *)
Definition: msipriv.h:73
void msi_resolve_target_folder(MSIPACKAGE *package, const WCHAR *name, BOOL load_prop)
Definition: action.c:2183
struct tagMSICOMPONENT MSICOMPONENT
UINT MSI_ViewModify(MSIQUERY *, MSIMODIFY, MSIRECORD *)
Definition: msiquery.c:693
UINT msi_apply_transforms(MSIPACKAGE *package)
Definition: patch.c:950
UINT msi_get_suminfo(IStorage *stg, UINT uiUpdateCount, MSISUMMARYINFO **si)
Definition: suminfo.c:461
WCHAR *WINAPIV msi_build_directory_name(DWORD,...) __WINE_DEALLOC(free) __WINE_MALLOC
Definition: action.c:2006
UINT ACTION_MoveFiles(MSIPACKAGE *package)
Definition: files.c:1185
struct tagMSIFILEPATCH MSIFILEPATCH
clr_version
Definition: msipriv.h:387
@ CLR_VERSION_V20
Definition: msipriv.h:390
@ CLR_VERSION_MAX
Definition: msipriv.h:392
@ CLR_VERSION_V40
Definition: msipriv.h:391
@ CLR_VERSION_V11
Definition: msipriv.h:389
@ CLR_VERSION_V10
Definition: msipriv.h:388
const WCHAR * msi_get_command_line_option(const WCHAR *cmd, const WCHAR *option, UINT *len)
Definition: action.c:266
UINT MSI_IterateRecords(MSIQUERY *, LPDWORD, record_func, LPVOID)
Definition: msiquery.c:163
INSTALLUI_HANDLERW gUIHandlerW
Definition: msi_main.c:44
UINT MSI_SetInstallLevel(MSIPACKAGE *package, int iInstallLevel)
Definition: install.c:1574
void * msihandle2msiinfo(MSIHANDLE handle, UINT type)
Definition: handle.c:158
UINT MSI_CommitTables(MSIDATABASE *db)
Definition: table.c:2903
void msi_reduce_to_long_filename(WCHAR *)
Definition: files.c:1053
BOOL msi_cabextract(MSIPACKAGE *package, MSIMEDIAINFO *mi, LPVOID data)
Definition: media.c:640
void msiobj_unlock(MSIOBJECTHDR *)
Definition: handle.c:236
struct tagMSIRECORD MSIRECORD
UINT MSI_RecordSetStream(MSIRECORD *, UINT, IStream *)
Definition: record.c:671
UINT MSI_InstallPackage(MSIPACKAGE *, LPCWSTR, LPCWSTR)
Definition: action.c:7917
UINT msi_create_empty_local_file(LPWSTR path, LPCWSTR suffix)
Definition: package.c:1066
UINT MSI_OpenPackageW(LPCWSTR szPackage, DWORD dwOptions, MSIPACKAGE **pPackage)
Definition: package.c:1416
WCHAR * msi_normalize_path(const WCHAR *) __WINE_DEALLOC(free) __WINE_MALLOC
Definition: action.c:2115
UINT unmarshal_record(const struct wire_record *in, MSIHANDLE *out)
Definition: record.c:1095
WCHAR * msi_get_font_file_version(MSIPACKAGE *, const WCHAR *) __WINE_DEALLOC(free) __WINE_MALLOC
Definition: font.c:189
struct tagComponentList ComponentList
UINT ACTION_UnregisterFonts(MSIPACKAGE *package)
Definition: font.c:360
void msi_adjust_privilege_properties(MSIPACKAGE *)
Definition: package.c:967
WCHAR * msi_reg_get_val_str(HKEY hkey, const WCHAR *name) __WINE_DEALLOC(free) __WINE_MALLOC
_msi_file_state
Definition: msipriv.h:607
@ msifs_missing
Definition: msipriv.h:609
@ msifs_skipped
Definition: msipriv.h:613
@ msifs_installed
Definition: msipriv.h:612
@ msifs_invalid
Definition: msipriv.h:608
@ msifs_present
Definition: msipriv.h:611
@ msifs_hashmatch
Definition: msipriv.h:614
@ msifs_overwrite
Definition: msipriv.h:610
INT ACTION_ShowDialog(MSIPACKAGE *, LPCWSTR)
int msi_add_string(string_table *st, const WCHAR *data, int len, BOOL persistent)
Definition: string.c:303
INSTALLSTATE msi_get_feature_action(MSIPACKAGE *package, MSIFEATURE *feature)
Definition: action.c:624
UINT MSI_RecordGetFieldCount(const MSIRECORD *rec)
Definition: record.c:108
UINT msi_get_filehash(MSIPACKAGE *, const WCHAR *, MSIFILEHASHINFO *)
Definition: msi.c:4018
UINT msi_package_add_info(MSIPACKAGE *, DWORD, DWORD, LPCWSTR, LPWSTR)
Definition: package.c:2657
UINT ACTION_MsiPublishAssemblies(MSIPACKAGE *package)
Definition: assembly.c:542
UINT MSI_RecordGetStringW(MSIRECORD *, UINT, LPWSTR, LPDWORD)
struct tagMSIFOLDER MSIFOLDER
static LPWSTR strdupUtoW(LPCSTR str)
Definition: msipriv.h:1213
struct tagMSIMEDIADISK MSIMEDIADISK
MSIRECORD * MSI_CloneRecord(MSIRECORD *)
Definition: record.c:921
UINT ACTION_RegisterFonts(MSIPACKAGE *package)
Definition: font.c:279
UINT write_stream_data(IStorage *stg, LPCWSTR stname, LPCVOID data, UINT sz, BOOL bTable)
Definition: table.c:298
UINT msi_load_media_info(MSIPACKAGE *package, UINT Sequence, MSIMEDIAINFO *mi)
Definition: media.c:677
WCHAR * msi_suminfo_dup_string(MSISUMMARYINFO *si, UINT property) __WINE_DEALLOC(free) __WINE_MALLOC
Definition: suminfo.c:700
DWORD msi_version_str_to_dword(LPCWSTR p)
Definition: registry.c:188
struct tagMSIDATABASE MSIDATABASE
struct tagMSISUMMARYINFO MSISUMMARYINFO
UINT ACTION_RemoveDuplicateFiles(MSIPACKAGE *package)
Definition: files.c:1390
#define LPVOID
Definition: nt_native.h:45
#define BOOL
Definition: nt_native.h:43
#define DWORD
Definition: nt_native.h:44
short WCHAR
Definition: pedump.c:58
DWORD * PDWORD
Definition: pedump.c:68
long LONG
Definition: pedump.c:60
INT replace(TCHAR source[MAX_PATH], TCHAR dest[MAX_PATH], DWORD dwFlags, BOOL *doMore)
Definition: replace.c:38
const WCHAR * str
#define WINAPIV
Definition: sdbpapi.h:64
#define CP_UTF8
Definition: nls.h:20
#define inline
Definition: compat.h:23
#define UINT
Definition: utils.c:29
DWORD dwOptions
Definition: solitaire.cpp:25
PVOID user
Definition: msipriv.h:1138
LPWSTR curfile
Definition: msipriv.h:1137
MSIPACKAGE * package
Definition: msipriv.h:1134
PMSICABEXTRACTCB cb
Definition: msipriv.h:1136
MSIMEDIAINFO * mi
Definition: msipriv.h:1135
WCHAR * Path
Definition: msipriv.h:737
WCHAR * Signature
Definition: msipriv.h:735
BOOL Seen
Definition: msipriv.h:739
WCHAR * Parent
Definition: msipriv.h:736
struct _column_info * next
Definition: msipriv.h:226
LPCWSTR column
Definition: msipriv.h:223
struct expr * val
Definition: msipriv.h:225
LPCWSTR table
Definition: msipriv.h:222
BOOL unicode
Definition: msipriv.h:772
LPCWSTR w
Definition: msipriv.h:775
LPCSTR a
Definition: msipriv.h:774
LPWSTR w
Definition: msipriv.h:767
LPSTR a
Definition: msipriv.h:766
BOOL unicode
Definition: msipriv.h:764
Definition: ftp_var.h:139
Definition: http.c:7252
Definition: query.h:86
Definition: parser.c:44
Definition: fci.c:123
Definition: fci.c:112
Definition: copy.c:22
Definition: mem.c:349
Definition: name.c:39
Definition: getopt.h:109
Definition: parse.h:23
struct list entry
Definition: msipriv.h:567
MSICOMPONENT * component
Definition: msipriv.h:568
MSIFEATURE * feature
Definition: msipriv.h:574
struct list entry
Definition: msipriv.h:573
MSIFOLDER * folder
Definition: msipriv.h:604
struct list entry
Definition: msipriv.h:603
LPWSTR DllSurrogate
Definition: msipriv.h:656
LPWSTR LocalServer
Definition: msipriv.h:654
struct list entry
Definition: msipriv.h:651
BOOL RunAsInteractiveUser
Definition: msipriv.h:658
LPWSTR RemoteServerName
Definition: msipriv.h:653
LPWSTR AppID
Definition: msipriv.h:652
LPWSTR ServiceParameters
Definition: msipriv.h:655
BOOL ActivateAtStorage
Definition: msipriv.h:657
DWORD attributes
Definition: msipriv.h:529
LPWSTR tempdir
Definition: msipriv.h:531
LPWSTR feature
Definition: msipriv.h:526
LPWSTR display_name
Definition: msipriv.h:530
LPWSTR manifest
Definition: msipriv.h:527
LPWSTR application
Definition: msipriv.h:528
WCHAR * source
Definition: msipriv.h:216
WCHAR * tmpfile
Definition: msipriv.h:217
struct list entry
Definition: msipriv.h:215
struct list entry
Definition: msipriv.h:192
IStorage * storage
Definition: msipriv.h:194
INT Attributes
Definition: msipriv.h:679
LPWSTR clsid
Definition: msipriv.h:666
LPWSTR IconPath
Definition: msipriv.h:674
LPWSTR Argument
Definition: msipriv.h:677
LPWSTR ProgIDText
Definition: msipriv.h:670
INSTALLSTATE action
Definition: msipriv.h:681
LPWSTR DefInprocHandler
Definition: msipriv.h:675
MSIAPPID * AppID
Definition: msipriv.h:672
LPWSTR FileTypeMask
Definition: msipriv.h:673
struct list entry
Definition: msipriv.h:665
LPWSTR Description
Definition: msipriv.h:671
LPWSTR DefInprocHandler32
Definition: msipriv.h:676
LPWSTR Context
Definition: msipriv.h:667
MSICOMPONENT * Component
Definition: msipriv.h:668
MSIFEATURE * Feature
Definition: msipriv.h:678
MSIPROGID * ProgID
Definition: msipriv.h:669
unsigned int hasLocalFeature
Definition: msipriv.h:559
unsigned int hasAdvertisedFeature
Definition: msipriv.h:558
unsigned int anyAbsent
Definition: msipriv.h:557
LPWSTR Component
Definition: msipriv.h:538
unsigned int updated
Definition: msipriv.h:562
unsigned int hasSourceFeature
Definition: msipriv.h:560
BOOL ForceLocalState
Definition: msipriv.h:547
INSTALLSTATE Action
Definition: msipriv.h:546
INSTALLSTATE ActionRequest
Definition: msipriv.h:545
unsigned int added
Definition: msipriv.h:561
LPWSTR AdvertiseString
Definition: msipriv.h:553
LPWSTR ComponentId
Definition: msipriv.h:539
MSIASSEMBLY * assembly
Definition: msipriv.h:554
struct list entry
Definition: msipriv.h:537
LPWSTR KeyPath
Definition: msipriv.h:543
LPWSTR Condition
Definition: msipriv.h:542
INSTALLSTATE Installed
Definition: msipriv.h:544
LPWSTR Directory
Definition: msipriv.h:540
LPWSTR FullKeypath
Definition: msipriv.h:552
UINT num_streams_allocated
Definition: msipriv.h:122
UINT media_transform_disk_id
Definition: msipriv.h:117
UINT bytes_per_strref
Definition: msipriv.h:111
MSISTREAM * streams
Definition: msipriv.h:120
UINT num_streams
Definition: msipriv.h:121
struct list transforms
Definition: msipriv.h:119
MSIOBJECTHDR hdr
Definition: msipriv.h:108
struct list tables
Definition: msipriv.h:118
LPWSTR deletefile
Definition: msipriv.h:113
IStorage * storage
Definition: msipriv.h:109
LPWSTR tempfolder
Definition: msipriv.h:114
string_table * strings
Definition: msipriv.h:110
LPWSTR path
Definition: msipriv.h:112
UINT media_transform_offset
Definition: msipriv.h:116
struct list verbs
Definition: msipriv.h:697
INSTALLSTATE action
Definition: msipriv.h:696
MSICOMPONENT * Component
Definition: msipriv.h:690
MSIPROGID * ProgID
Definition: msipriv.h:691
LPWSTR Extension
Definition: msipriv.h:689
MSIMIME * Mime
Definition: msipriv.h:693
MSIFEATURE * Feature
Definition: msipriv.h:694
LPWSTR ProgIDText
Definition: msipriv.h:692
struct list entry
Definition: msipriv.h:688
INT Attributes
Definition: msipriv.h:516
INSTALLSTATE Action
Definition: msipriv.h:519
LPWSTR Feature_Parent
Definition: msipriv.h:510
LPWSTR Feature
Definition: msipriv.h:509
LPWSTR Description
Definition: msipriv.h:512
INSTALLSTATE Installed
Definition: msipriv.h:517
LPWSTR Directory
Definition: msipriv.h:515
LPWSTR Title
Definition: msipriv.h:511
struct list Children
Definition: msipriv.h:520
INSTALLSTATE ActionRequest
Definition: msipriv.h:518
struct list Components
Definition: msipriv.h:521
struct list entry
Definition: msipriv.h:508
INT iVal
Definition: msipriv.h:142
IStream * stream
Definition: msipriv.h:144
union tagMSIFIELD::@615 u
UINT type
Definition: msipriv.h:139
LPWSTR szwVal
Definition: msipriv.h:143
MSIFILE * File
Definition: msipriv.h:640
BOOL extracted
Definition: msipriv.h:644
WCHAR * path
Definition: msipriv.h:646
struct list entry
Definition: msipriv.h:639
LPWSTR File
Definition: msipriv.h:620
BOOL IsCompressed
Definition: msipriv.h:632
MSICOMPONENT * Component
Definition: msipriv.h:621
MSIFILEHASHINFO hash
Definition: msipriv.h:633
msi_file_state state
Definition: msipriv.h:630
INT Sequence
Definition: msipriv.h:629
LPWSTR Language
Definition: msipriv.h:627
LPWSTR TargetPath
Definition: msipriv.h:631
LPWSTR FileName
Definition: msipriv.h:622
LPWSTR Version
Definition: msipriv.h:626
INT FileSize
Definition: msipriv.h:625
LPWSTR ShortName
Definition: msipriv.h:623
struct list entry
Definition: msipriv.h:619
INT Attributes
Definition: msipriv.h:628
LPWSTR LongName
Definition: msipriv.h:624
UINT disk_id
Definition: msipriv.h:634
LPWSTR SourceShortPath
Definition: msipriv.h:594
LPWSTR ResolvedTarget
Definition: msipriv.h:595
LPWSTR Directory
Definition: msipriv.h:590
LPWSTR Parent
Definition: msipriv.h:591
LPWSTR SourceLongPath
Definition: msipriv.h:593
LPWSTR TargetDefault
Definition: msipriv.h:592
struct list children
Definition: msipriv.h:589
enum folder_state State
Definition: msipriv.h:597
LPWSTR ResolvedSource
Definition: msipriv.h:596
BOOL persistent
Definition: msipriv.h:598
struct list entry
Definition: msipriv.h:588
DWORD context
Definition: msipriv.h:169
DWORD options
Definition: msipriv.h:170
LPWSTR volume_label
Definition: msipriv.h:172
struct list entry
Definition: msipriv.h:168
LPWSTR disk_prompt
Definition: msipriv.h:173
DWORD disk_id
Definition: msipriv.h:171
LPWSTR volume_label
Definition: msipriv.h:183
UINT last_sequence
Definition: msipriv.h:180
LPWSTR cabinet
Definition: msipriv.h:182
WCHAR sourcedir[MAX_PATH]
Definition: msipriv.h:187
BOOL is_extracted
Definition: msipriv.h:186
LPWSTR last_volume
Definition: msipriv.h:184
BOOL is_continuous
Definition: msipriv.h:185
LPWSTR disk_prompt
Definition: msipriv.h:181
MSIEXTENSION * Extension
Definition: msipriv.h:726
LPWSTR ContentType
Definition: msipriv.h:725
LPWSTR clsid
Definition: msipriv.h:728
struct list entry
Definition: msipriv.h:724
MSICLASS * Class
Definition: msipriv.h:729
LPWSTR suffix
Definition: msipriv.h:727
LONG refcount
Definition: msipriv.h:79
msihandledestructor destructor
Definition: msipriv.h:80
WCHAR DWORD const WCHAR void IUnknown IAssemblyName void *IAssemblyCache * cache_net[CLR_VERSION_MAX]
Definition: msipriv.h:437
HMODULE hfusion20
Definition: msipriv.h:431
BOOL ExecuteSequenceRun
Definition: msipriv.h:451
HANDLE custom_server_64_process
Definition: msipriv.h:457
HMODULE hfusion11
Definition: msipriv.h:430
UINT InWhatSequence
Definition: msipriv.h:452
int unique_actions_count
Definition: msipriv.h:450
HMODULE hfusion10
Definition: msipriv.h:429
float center_y
Definition: msipriv.h:470
struct list subscriptions
Definition: msipriv.h:475
BOOL delete_on_close
Definition: msipriv.h:464
HMODULE hmscoree
Definition: msipriv.h:433
UINT WordCount
Definition: msipriv.h:472
HANDLE custom_server_32_pipe
Definition: msipriv.h:458
HMODULE hfusion40
Definition: msipriv.h:432
unsigned char commit_action_running
Definition: msipriv.h:481
struct list drlocators
Definition: msipriv.h:422
struct list classes
Definition: msipriv.h:440
LPWSTR LastAction
Definition: msipriv.h:424
struct list RunningActions
Definition: msipriv.h:454
struct list appids
Definition: msipriv.h:444
struct list features
Definition: msipriv.h:415
MSIOBJECTHDR hdr
Definition: msipriv.h:406
struct list files
Definition: msipriv.h:416
WCHAR DWORD const WCHAR DWORD
Definition: msipriv.h:435
MSIDATABASE * db
Definition: msipriv.h:407
unsigned char rollback_action_running
Definition: msipriv.h:482
enum platform platform
Definition: msipriv.h:409
LPWSTR next_dialog
Definition: msipriv.h:468
IAssemblyCache * cache_sxs
Definition: msipriv.h:438
HANDLE custom_server_64_pipe
Definition: msipriv.h:459
struct list cabinet_streams
Definition: msipriv.h:421
WCHAR DWORD
Definition: msipriv.h:434
struct list extensions
Definition: msipriv.h:441
struct list folders
Definition: msipriv.h:419
UINT num_langids
Definition: msipriv.h:410
LPWSTR * unique_actions
Definition: msipriv.h:449
unsigned char rpc_server_started
Definition: msipriv.h:486
LPWSTR ProductCode
Definition: msipriv.h:462
LPWSTR PackagePath
Definition: msipriv.h:461
struct list mimes
Definition: msipriv.h:443
INSTALLUILEVEL ui_level
Definition: msipriv.h:466
UINT action_progress_increment
Definition: msipriv.h:427
WCHAR DWORD const WCHAR void IUnknown IAssemblyName DWORD
Definition: msipriv.h:436
struct list sourcelist_media
Definition: msipriv.h:478
LANGID * langids
Definition: msipriv.h:411
HANDLE log_file
Definition: msipriv.h:428
enum script script
Definition: msipriv.h:446
MSIINSTALLCONTEXT Context
Definition: msipriv.h:473
LPWSTR LastActionTemplate
Definition: msipriv.h:425
struct list filepatches
Definition: msipriv.h:417
LPWSTR * script_actions[SCRIPT_MAX]
Definition: msipriv.h:447
unsigned char scheduled_action_running
Definition: msipriv.h:480
msi_dialog * dialog
Definition: msipriv.h:467
unsigned char need_reboot_now
Definition: msipriv.h:484
unsigned char need_reboot_at_end
Definition: msipriv.h:483
LPWSTR localfile
Definition: msipriv.h:463
UINT LastActionResult
Definition: msipriv.h:426
struct list patches
Definition: msipriv.h:413
struct list binaries
Definition: msipriv.h:420
HANDLE custom_server_32_process
Definition: msipriv.h:456
void * cookie
Definition: msipriv.h:412
LPWSTR ActionFormat
Definition: msipriv.h:423
unsigned char need_rollback
Definition: msipriv.h:485
float center_x
Definition: msipriv.h:469
struct list tempfiles
Definition: msipriv.h:418
int script_actions_count[SCRIPT_MAX]
Definition: msipriv.h:448
struct list sourcelist_info
Definition: msipriv.h:477
BOOL registered
Definition: msipriv.h:209
DWORD uninstallable
Definition: msipriv.h:207
LPWSTR patchcode
Definition: msipriv.h:201
LPWSTR transforms
Definition: msipriv.h:203
struct list entry
Definition: msipriv.h:200
MSIPATCHSTATE state
Definition: msipriv.h:206
LPWSTR localfile
Definition: msipriv.h:205
LPWSTR products
Definition: msipriv.h:202
BOOL delete_on_close
Definition: msipriv.h:208
LPWSTR filename
Definition: msipriv.h:204
MSIPACKAGE * package
Definition: msipriv.h:492
msi_dialog * dialog
Definition: msipriv.h:493
MSIOBJECTHDR hdr
Definition: msipriv.h:491
MSIPROGID * CurVer
Definition: msipriv.h:709
MSICLASS * Class
Definition: msipriv.h:705
struct list entry
Definition: msipriv.h:702
MSIPROGID * Parent
Definition: msipriv.h:704
LPWSTR ProgID
Definition: msipriv.h:703
MSIPROGID * VersionInd
Definition: msipriv.h:710
LPWSTR IconPath
Definition: msipriv.h:707
LPWSTR Description
Definition: msipriv.h:706
MSIVIEW * view
Definition: msipriv.h:130
UINT row
Definition: msipriv.h:131
MSIDATABASE * db
Definition: msipriv.h:132
MSIOBJECTHDR hdr
Definition: msipriv.h:129
MSIFIELD fields[1]
Definition: msipriv.h:154
MSIOBJECTHDR hdr
Definition: msipriv.h:151
UINT count
Definition: msipriv.h:152
UINT64 cookie
Definition: msipriv.h:153
struct list entry
Definition: msipriv.h:159
UINT str_index
Definition: msipriv.h:88
IStream * stream
Definition: msipriv.h:89
MSIOBJECTHDR hdr
Definition: msipriv.h:500
IStorage * storage
Definition: msipriv.h:501
DWORD update_count
Definition: msipriv.h:502
IStorage * stg
Definition: msipriv.h:95
struct list entry
Definition: msipriv.h:94
LPWSTR Command
Definition: msipriv.h:718
INT Sequence
Definition: msipriv.h:717
struct list entry
Definition: msipriv.h:715
LPWSTR Argument
Definition: msipriv.h:719
LPWSTR Verb
Definition: msipriv.h:716
UINT(* insert_row)(struct tagMSIVIEW *view, MSIRECORD *record, UINT row, BOOL temporary)
Definition: msipriv.h:283
UINT(* sort)(struct tagMSIVIEW *view, column_info *columns)
Definition: msipriv.h:344
UINT(* set_row)(struct tagMSIVIEW *view, UINT row, MSIRECORD *rec, UINT mask)
Definition: msipriv.h:278
UINT(* add_column)(struct tagMSIVIEW *view, LPCWSTR column, INT type, BOOL hold)
Definition: msipriv.h:339
UINT(* set_stream)(struct tagMSIVIEW *view, UINT row, UINT col, IStream *stream)
Definition: msipriv.h:271
UINT(* fetch_int)(struct tagMSIVIEW *view, UINT row, UINT col, UINT *val)
Definition: msipriv.h:242
UINT(* set_string)(struct tagMSIVIEW *view, UINT row, UINT col, const WCHAR *val, int len)
Definition: msipriv.h:264
UINT(* fetch_stream)(struct tagMSIVIEW *view, UINT row, UINT col, IStream **stm)
Definition: msipriv.h:250
UINT(* modify)(struct tagMSIVIEW *view, MSIMODIFY eModifyMode, MSIRECORD *record, UINT row)
Definition: msipriv.h:319
UINT(* add_ref)(struct tagMSIVIEW *view)
Definition: msipriv.h:329
UINT(* release)(struct tagMSIVIEW *view)
Definition: msipriv.h:334
UINT(* close)(struct tagMSIVIEW *view)
Definition: msipriv.h:298
UINT(* get_dimensions)(struct tagMSIVIEW *view, UINT *rows, UINT *cols)
Definition: msipriv.h:306
UINT(* execute)(struct tagMSIVIEW *view, MSIRECORD *record)
Definition: msipriv.h:293
UINT(* get_column_info)(struct tagMSIVIEW *view, UINT n, LPCWSTR *name, UINT *type, BOOL *temporary, LPCWSTR *table_name)
Definition: msipriv.h:313
UINT(* set_int)(struct tagMSIVIEW *view, UINT row, UINT col, int val)
Definition: msipriv.h:257
UINT(* delete_row)(struct tagMSIVIEW *view, UINT row)
Definition: msipriv.h:288
UINT(* drop)(struct tagMSIVIEW *view)
Definition: msipriv.h:349
MSIDBERROR error
Definition: msipriv.h:356
const WCHAR * error_column
Definition: msipriv.h:357
const MSIVIEWOPS * ops
Definition: msipriv.h:355
MSIOBJECTHDR hdr
Definition: msipriv.h:354
const char * LPCSTR
Definition: typedefs.h:52
const uint16_t * LPCWSTR
Definition: typedefs.h:57
uint16_t * LPWSTR
Definition: typedefs.h:56
void * PVOID
Definition: typedefs.h:50
uint32_t * LPDWORD
Definition: typedefs.h:59
char * LPSTR
Definition: typedefs.h:51
int32_t INT
Definition: typedefs.h:58
Definition: pdh_main.c:64
wchar_t tm const _CrtWcstime_Writes_and_advances_ptr_ count wchar_t ** out
Definition: wcsftime.cpp:383
int codepage
Definition: win_iconv.c:156
#define HRESULT
Definition: msvc.h:7
#define WINAPI
Definition: msvc.h:6
int MSIDBERROR
Definition: winemsi.idl:35
int MSICOSTTREE
Definition: winemsi.idl:34
int MSICONDITION
Definition: winemsi.idl:29
unsigned long MSIHANDLE
Definition: winemsi.idl:27
int INSTALLSTATE
Definition: winemsi.idl:31
int MSIMODIFY
Definition: winemsi.idl:33
int MSICOLINFO
Definition: winemsi.idl:32
int INSTALLMESSAGE
Definition: winemsi.idl:28
_In_ ULONG Component
Definition: potypes.h:499
unsigned char BYTE
Definition: xxhash.c:193
#define const
Definition: zconf.h:233