ReactOS 0.4.16-dev-401-g45b008d
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_s.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{
381
383{
388 SCRIPT_MAX = 3
390
391typedef struct tagMSIPACKAGE
392{
399 void *cookie;
400 struct list patches;
403 struct list files;
406 struct list folders;
420 HRESULT (WINAPI *pGetFileVersion)( const WCHAR *, WCHAR *, DWORD, DWORD * );
421 HRESULT (WINAPI *pCreateAssemblyNameObject)( IAssemblyName **, const WCHAR *, DWORD, void * );
422 HRESULT (WINAPI *pCreateAssemblyEnum)( IAssemblyEnum **, IUnknown *, IAssemblyName *, DWORD, void * );
425
426 struct list classes;
428 struct list progids;
429 struct list mimes;
430 struct list appids;
431
439
441
446
451
455 float center_x;
456 float center_y;
457
460
462
465
466 unsigned char scheduled_action_running : 1;
467 unsigned char commit_action_running : 1;
468 unsigned char rollback_action_running : 1;
469 unsigned char need_reboot_at_end : 1;
470 unsigned char need_reboot_now : 1;
471 unsigned char need_rollback : 1;
472 unsigned char rpc_server_started : 1;
474
475typedef struct tagMSIPREVIEW
476{
481
482#define MSI_MAX_PROPS 20
483
484typedef struct tagMSISUMMARYINFO
485{
489 PROPVARIANT property[MSI_MAX_PROPS];
491
492typedef struct tagMSIFEATURE
493{
494 struct list entry;
509
510typedef struct tagMSIASSEMBLY
511{
520
521typedef struct tagMSICOMPONENT
522{
523 struct list entry;
535 /* Cost is in 512-byte units, as returned from MsiEnumComponentCosts() et al. */
536 int cost;
542
543 unsigned int anyAbsent:1;
544 unsigned int hasAdvertisedFeature:1;
545 unsigned int hasLocalFeature:1;
546 unsigned int hasSourceFeature:1;
547 unsigned int added:1;
548 unsigned int updated:1;
550
551typedef struct tagComponentList
552{
553 struct list entry;
556
557typedef struct tagFeatureList
558{
559 struct list entry;
562
564{
571
572typedef struct tagMSIFOLDER
573{
574 struct list entry;
586
587typedef struct tagFolderList
588{
589 struct list entry;
592
593typedef enum _msi_file_state {
602
603typedef struct tagMSIFILE
604{
605 struct list entry;
622
623typedef struct tagMSIFILEPATCH
624{
625 struct list entry;
634
635typedef struct tagMSIAPPID
636{
637 struct list entry;
638 LPWSTR AppID; /* Primary key */
646
647typedef struct tagMSIPROGID MSIPROGID;
648
649typedef struct tagMSICLASS
650{
651 struct list entry;
652 LPWSTR clsid; /* Primary Key */
653 LPWSTR Context; /* Primary Key */
666 /* not in the table, set during installation */
669
670typedef struct tagMSIMIME MSIMIME;
671
672typedef struct tagMSIEXTENSION
673{
674 struct list entry;
675 LPWSTR Extension; /* Primary Key */
681 /* not in the table, set during installation */
683 struct list verbs;
685
687{
688 struct list entry;
689 LPWSTR ProgID; /* Primary Key */
694 /* not in the table, set during installation */
697};
698
699typedef struct tagMSIVERB
700{
701 struct list entry;
707
709{
710 struct list entry;
711 LPWSTR ContentType; /* Primary Key */
716};
717
718#define SEQUENCE_UI 0x1
719#define SEQUENCE_EXEC 0x2
720
721#define MSIHANDLETYPE_ANY 0
722#define MSIHANDLETYPE_DATABASE 1
723#define MSIHANDLETYPE_SUMMARYINFO 2
724#define MSIHANDLETYPE_VIEW 3
725#define MSIHANDLETYPE_RECORD 4
726#define MSIHANDLETYPE_PACKAGE 5
727#define MSIHANDLETYPE_PREVIEW 6
728
729#define MSI_MAJORVERSION 4
730#define MSI_MINORVERSION 5
731#define MSI_BUILDNUMBER 6001
732
733#define GUID_SIZE 39
734#define SQUASHED_GUID_SIZE 33
735
736#define MSIHANDLE_MAGIC 0x4d434923
737
738/* handle unicode/ansi output in the Msi* API functions */
739typedef struct {
741 union {
745} awstring;
746
747typedef struct {
749 union {
753} awcstring;
754
756
757/* msi server interface */
760
761/* handle functions */
766extern void msiobj_addref(MSIOBJECTHDR *);
767extern int msiobj_release(MSIOBJECTHDR *);
768extern void msiobj_lock(MSIOBJECTHDR *);
769extern void msiobj_unlock(MSIOBJECTHDR *);
770extern void msi_free_handle_table(void);
771
772extern void free_cached_tables( MSIDATABASE *db );
773extern UINT MSI_CommitTables( MSIDATABASE *db );
775
776
777/* string table functions */
778extern BOOL msi_add_string( string_table *st, const WCHAR *data, int len, BOOL persistent );
779extern UINT msi_string2id( const string_table *st, const WCHAR *data, int len, UINT *id );
781extern const WCHAR *msi_string_lookup( const string_table *st, UINT id, int *len );
783extern string_table *msi_load_string_table( IStorage *stg, UINT *bytes_per_strref );
784extern UINT msi_save_string_table( const string_table *st, IStorage *storage, UINT *bytes_per_strref );
787extern WCHAR *msi_strdupW( const WCHAR *value, int len );
788
791
792extern UINT read_stream_data( IStorage *stg, LPCWSTR stname, BOOL table,
793 BYTE **pdata, UINT *psz );
794extern UINT write_stream_data( IStorage *stg, LPCWSTR stname,
795 LPCVOID data, UINT sz, BOOL bTable );
796
797/* transform functions */
798extern UINT msi_table_apply_transform( MSIDATABASE *db, IStorage *stg, int err_cond );
800 LPCWSTR szTransformFile, int iErrorCond );
801extern void append_storage_to_db( MSIDATABASE *db, IStorage *stg );
802extern UINT msi_apply_transforms( MSIPACKAGE *package );
803
804/* patch functions */
806extern UINT msi_apply_patches( MSIPACKAGE *package );
807extern UINT msi_apply_registered_patch( MSIPACKAGE *package, LPCWSTR patch_code );
808extern void msi_free_patchinfo( MSIPATCHINFO *patch );
810
811/* action internals */
815extern UINT ACTION_ForceReboot(MSIPACKAGE *package);
816extern UINT MSI_Sequence( MSIPACKAGE *package, LPCWSTR szTable );
817extern UINT MSI_SetFeatureStates( MSIPACKAGE *package );
818extern UINT msi_parse_command_line( MSIPACKAGE *package, LPCWSTR szCommandLine, BOOL preserve_case );
819extern const WCHAR *msi_get_command_line_option( const WCHAR *cmd, const WCHAR *option, UINT *len );
820extern UINT msi_schedule_action( MSIPACKAGE *package, UINT script, const WCHAR *action );
823extern UINT msi_load_all_components( MSIPACKAGE *package );
824extern UINT msi_load_all_features( MSIPACKAGE *package );
825extern UINT msi_validate_product_id( MSIPACKAGE *package );
826
827/* record internals */
828extern void MSI_CloseRecord( MSIOBJECTHDR * );
831extern const WCHAR *MSI_RecordGetString( const MSIRECORD *, UINT );
833extern UINT MSI_RecordSetInteger( MSIRECORD *, UINT, int );
838extern int MSI_RecordGetInteger( MSIRECORD *, UINT );
839extern UINT MSI_RecordReadStream( MSIRECORD *, UINT, char *, LPDWORD);
841extern UINT MSI_RecordGetFieldCount( const MSIRECORD *rec );
848extern UINT msi_record_set_string(MSIRECORD *, UINT, const WCHAR *, int);
849extern const WCHAR *msi_record_get_string(const MSIRECORD *, UINT, int *);
850extern void dump_record(MSIRECORD *);
851extern UINT unmarshal_record(const struct wire_record *in, MSIHANDLE *out);
853extern void free_remote_record(struct wire_record *rec);
854extern UINT copy_remote_record(const struct wire_record *rec, MSIHANDLE handle);
855
856/* stream internals */
857extern void enum_stream_names( IStorage *stg );
858extern WCHAR *encode_streamname(BOOL is_table, const WCHAR *in);
860
861/* database internals */
862extern UINT msi_get_stream( MSIDATABASE *, const WCHAR *, IStream ** );
870
871/* view internals */
873extern UINT MSI_ViewFetch( MSIQUERY*, MSIRECORD ** );
874extern UINT MSI_ViewClose( MSIQUERY* );
879
880/* install internals */
881extern UINT MSI_SetInstallLevel( MSIPACKAGE *package, int iInstallLevel );
882
883/* package internals */
884#define WINE_OPENPACKAGEFLAGS_RECACHE 0x80000000
886extern UINT MSI_OpenPackageW( LPCWSTR szPackage, DWORD dwOptions, MSIPACKAGE **pPackage );
901
902/* for deformating */
904
905/* registry data encoding/decoding functions */
912extern UINT MSIREG_OpenProductKey(LPCWSTR szProduct, LPCWSTR szUserSid,
915 HKEY *key, BOOL create);
918 HKEY *key, BOOL create);
920extern UINT MSIREG_OpenUserDataComponentKey(LPCWSTR szComponent, LPCWSTR szUserSid,
921 HKEY *key, BOOL create);
924 LPCWSTR szUserSid, HKEY *key, BOOL create);
926 HKEY *key, BOOL create);
928 HKEY *key, BOOL create);
929extern UINT MSIREG_OpenInstallProps(LPCWSTR szProduct, MSIINSTALLCONTEXT dwContext,
930 LPCWSTR szUserSid, HKEY *key, BOOL create);
933extern UINT MSIREG_DeleteProductKey(LPCWSTR szProduct);
938extern UINT MSIREG_DeleteUserDataComponentKey(LPCWSTR szComponent, LPCWSTR szUserSid);
939extern UINT MSIREG_DeleteUserUpgradeCodesKey(LPCWSTR szUpgradeCode);
946extern WCHAR *msi_reg_get_val_str( HKEY hkey, const WCHAR *name );
948
952extern int msi_compare_font_versions(const WCHAR *, const WCHAR *);
953
958
959/* msi dialog interface */
960extern void msi_dialog_check_messages( HANDLE );
961extern void msi_dialog_destroy( msi_dialog* );
962extern void msi_dialog_unregister_class( void );
963
964/* summary information */
965extern UINT msi_get_suminfo( IStorage *stg, UINT uiUpdateCount, MSISUMMARYINFO **si );
966extern UINT msi_get_db_suminfo( MSIDATABASE *db, UINT uiUpdateCount, MSISUMMARYINFO **si );
968 UINT property );
969extern INT msi_suminfo_get_int32( MSISUMMARYINFO *si, UINT uiProperty );
971extern UINT msi_add_suminfo( MSIDATABASE *db, LPWSTR **records, int num_records, int num_columns );
974
975/* undocumented functions */
981
982/* UI globals */
984extern HWND gUIhwnd;
988extern DWORD gUIFilter;
990extern LPVOID gUIContext;
992extern WCHAR *gszLogFile;
994
995/* action related functions */
996extern UINT ACTION_PerformAction(MSIPACKAGE *package, const WCHAR *action);
997extern void ACTION_FinishCustomActions( const MSIPACKAGE* package);
998extern UINT ACTION_CustomAction(MSIPACKAGE *package, const WCHAR *action);
999extern void custom_stop_server(HANDLE process, HANDLE pipe);
1000
1001/* actions in other modules */
1002extern UINT ACTION_AppSearch(MSIPACKAGE *package);
1003extern UINT ACTION_CCPSearch(MSIPACKAGE *package);
1005extern UINT ACTION_InstallFiles(MSIPACKAGE *package);
1006extern UINT ACTION_PatchFiles( MSIPACKAGE *package );
1007extern UINT ACTION_RemoveFiles(MSIPACKAGE *package);
1008extern UINT ACTION_MoveFiles(MSIPACKAGE *package);
1009extern UINT ACTION_DuplicateFiles(MSIPACKAGE *package);
1014extern UINT ACTION_RegisterMIMEInfo(MSIPACKAGE *package);
1015extern UINT ACTION_RegisterFonts(MSIPACKAGE *package);
1018extern UINT ACTION_UnregisterFonts(MSIPACKAGE *package);
1023
1024/* Helpers */
1027extern WCHAR *msi_dup_property( MSIDATABASE *db, const WCHAR *prop );
1028extern UINT msi_set_property( MSIDATABASE *, const WCHAR *, const WCHAR *, int );
1030extern int msi_get_property_int( MSIDATABASE *package, LPCWSTR prop, int def );
1031extern WCHAR *msi_resolve_source_folder(MSIPACKAGE *package, const WCHAR *name,
1032 MSIFOLDER **folder);
1033extern void msi_resolve_target_folder(MSIPACKAGE *package, const WCHAR *name, BOOL load_prop);
1034extern WCHAR *msi_normalize_path(const WCHAR *);
1036 MSIFILE *file);
1037extern const WCHAR *msi_get_target_folder(MSIPACKAGE *package, const WCHAR *name);
1038extern void msi_reset_source_folders( MSIPACKAGE *package );
1040extern MSIFEATURE *msi_get_loaded_feature(MSIPACKAGE *package, const WCHAR *Feature);
1041extern MSIFILE *msi_get_loaded_file(MSIPACKAGE *package, const WCHAR *file);
1042extern MSIFOLDER *msi_get_loaded_folder(MSIPACKAGE *package, const WCHAR *dir);
1044extern void msi_free_action_script(MSIPACKAGE *package, UINT script);
1045extern WCHAR *msi_build_icon_path(MSIPACKAGE *, const WCHAR *);
1047extern void msi_reduce_to_long_filename(WCHAR *);
1049 const WCHAR *);
1052extern BOOL msi_action_is_unique(const MSIPACKAGE *, const WCHAR *);
1053extern UINT msi_set_last_used_source(LPCWSTR product, LPCWSTR usersid,
1063extern WCHAR *msi_get_assembly_path(MSIPACKAGE *, const WCHAR *);
1064extern WCHAR **msi_split_string(const WCHAR *, WCHAR);
1067extern UINT msi_strncpyWtoA(const WCHAR *str, int len, char *buf, DWORD *sz, BOOL remote);
1068extern UINT msi_strncpyW(const WCHAR *str, int len, WCHAR *buf, DWORD *sz);
1070
1071/* wrappers for filesystem functions */
1072static inline void msi_disable_fs_redirection( MSIPACKAGE *package )
1073{
1074 if (is_wow64 && package->platform == PLATFORM_X64) Wow64DisableWow64FsRedirection( &package->cookie );
1075}
1076static inline void msi_revert_fs_redirection( MSIPACKAGE *package )
1077{
1078 if (is_wow64 && package->platform == PLATFORM_X64) Wow64RevertWow64FsRedirection( package->cookie );
1079}
1080extern BOOL msi_get_temp_file_name( MSIPACKAGE *, const WCHAR *, const WCHAR *, WCHAR * );
1081extern HANDLE msi_create_file( MSIPACKAGE *, const WCHAR *, DWORD, DWORD, DWORD, DWORD );
1082extern BOOL msi_delete_file( MSIPACKAGE *, const WCHAR * );
1083extern BOOL msi_remove_directory( MSIPACKAGE *, const WCHAR * );
1084extern DWORD msi_get_file_attributes( MSIPACKAGE *, const WCHAR * );
1085extern BOOL msi_set_file_attributes( MSIPACKAGE *, const WCHAR *, DWORD );
1088extern BOOL msi_move_file( MSIPACKAGE *, const WCHAR *, const WCHAR *, DWORD );
1089extern DWORD msi_get_file_version_info( MSIPACKAGE *, const WCHAR *, DWORD, BYTE * );
1090extern BOOL msi_create_full_path( MSIPACKAGE *, const WCHAR * );
1091extern DWORD msi_get_disk_file_size( MSIPACKAGE *, const WCHAR * );
1093extern UINT msi_get_filehash( MSIPACKAGE *, const WCHAR *, MSIFILEHASHINFO * );
1095 const WCHAR * );
1096
1097/* media */
1098
1100
1101#define MSICABEXTRACT_BEGINEXTRACT 0x01
1102#define MSICABEXTRACT_FILEEXTRACTED 0x02
1103
1104typedef struct
1105{
1111} MSICABDATA;
1112
1113extern UINT ready_media(MSIPACKAGE *package, BOOL compressed, MSIMEDIAINFO *mi);
1114extern UINT msi_load_media_info(MSIPACKAGE *package, UINT Sequence, MSIMEDIAINFO *mi);
1115extern void msi_free_media_info(MSIMEDIAINFO *mi);
1118
1119/* control event stuff */
1120extern void msi_event_fire(MSIPACKAGE *, const WCHAR *, MSIRECORD *);
1122
1123/* OLE automation */
1124typedef enum tid_t {
1132 LAST_tid
1134
1135extern HRESULT create_msiserver(IUnknown *pOuter, LPVOID *ppObj);
1136extern HRESULT create_session(MSIHANDLE msiHandle, IDispatch *pInstaller, IDispatch **pDispatch);
1137extern HRESULT get_typeinfo(tid_t tid, ITypeInfo **ti);
1138extern void release_typelib(void);
1139
1140/* Scripting */
1141extern DWORD call_script(MSIHANDLE hPackage, INT type, LPCWSTR script, LPCWSTR function, LPCWSTR action);
1142
1143/* User interface messages from the actions */
1144extern void msi_ui_progress(MSIPACKAGE *, int, int, int, int);
1145
1146static inline char *strdupWtoA( LPCWSTR str )
1147{
1148 LPSTR ret = NULL;
1149 DWORD len;
1150
1151 if (!str) return ret;
1152 len = WideCharToMultiByte( CP_ACP, 0, str, -1, NULL, 0, NULL, NULL);
1153 ret = malloc( len );
1154 if (ret)
1155 WideCharToMultiByte( CP_ACP, 0, str, -1, ret, len, NULL, NULL );
1156 return ret;
1157}
1158
1159static inline LPWSTR strdupAtoW( LPCSTR str )
1160{
1161 LPWSTR ret = NULL;
1162 DWORD len;
1163
1164 if (!str) return ret;
1165 len = MultiByteToWideChar( CP_ACP, 0, str, -1, NULL, 0 );
1166 ret = malloc( len * sizeof(WCHAR) );
1167 if (ret)
1168 MultiByteToWideChar( CP_ACP, 0, str, -1, ret, len );
1169 return ret;
1170}
1171
1172static inline char *strdupWtoU( LPCWSTR str )
1173{
1174 LPSTR ret = NULL;
1175 DWORD len;
1176
1177 if (!str) return ret;
1178 len = WideCharToMultiByte( CP_UTF8, 0, str, -1, NULL, 0, NULL, NULL);
1179 ret = malloc( len );
1180 if (ret)
1182 return ret;
1183}
1184
1185static inline LPWSTR strdupUtoW( LPCSTR str )
1186{
1187 LPWSTR ret = NULL;
1188 DWORD len;
1189
1190 if (!str) return ret;
1191 len = MultiByteToWideChar( CP_UTF8, 0, str, -1, NULL, 0 );
1192 ret = malloc( len * sizeof(WCHAR) );
1193 if (ret)
1194 MultiByteToWideChar( CP_UTF8, 0, str, -1, ret, len );
1195 return ret;
1196}
1197
1198static inline int cost_from_size( int size )
1199{
1200 /* Cost is size rounded up to the nearest 4096 bytes,
1201 * expressed in units of 512 bytes. */
1202 return ((size + 4095) & ~4095) / 512;
1203}
1204
1205#endif /* __WINE_MSI_PRIVATE__ */
unsigned long long UINT64
void destroy(_Tp *__pointer)
Definition: _construct.h:278
#define VOID
Definition: acefi.h:82
unsigned int dir
Definition: maze.c:112
_In_ ULONG const _In_ FEATURE_NUMBER const Feature
Definition: cdrom.h:1077
Definition: list.h:37
#define malloc
Definition: debug_ros.c:4
#define NULL
Definition: types.h:112
#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:808
BOOL WINAPI Wow64DisableWow64FsRedirection(IN PVOID *OldValue)
Definition: utils.c:785
const WCHAR * action
Definition: action.c:7509
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
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
GLsizeiptr size
Definition: glext.h:5919
GLdouble n
Definition: glext.h:7729
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
tid_t
Definition: ieframe.h:311
const char * filename
Definition: ioapi.h:137
USHORT LANGID
Definition: mui.h:9
static PVOID ptr
Definition: dispmode.c:27
static TfClientId tid
static IDispatch * pInstaller
Definition: automation.c:52
static const struct access_res create[16]
Definition: package.c:7505
INTERNETFEATURELIST feature
Definition: misc.c:1719
static PROTOCOLDATA * pdata
Definition: protocol.c:158
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:572
MSIPACKAGE * MSI_CreatePackage(MSIDATABASE *)
Definition: package.c:977
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
UINT MSI_ViewExecute(MSIQUERY *, MSIRECORD *)
Definition: msiquery.c:502
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
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
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:609
UINT ACTION_RemoveFiles(MSIPACKAGE *package)
Definition: files.c:1528
WCHAR * msi_resolve_source_folder(MSIPACKAGE *package, const WCHAR *name, MSIFOLDER **folder)
Definition: install.c:364
void dump_record(MSIRECORD *)
Definition: record.c:1028
static int cost_from_size(int size)
Definition: msipriv.h:1198
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
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
BOOL msi_add_string(string_table *st, const WCHAR *data, int len, BOOL persistent)
Definition: string.c:303
struct tagMSIPREVIEW MSIPREVIEW
void msi_dialog_unregister_class(void)
Definition: dialog.c:4098
UINT ACTION_AppSearch(MSIPACKAGE *package)
Definition: appsearch.c:1078
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:594
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:2089
WCHAR ** msi_split_string(const WCHAR *, WCHAR)
Definition: action.c:304
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:1099
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
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:1078
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:1124
@ View_tid
Definition: msipriv.h:1131
@ Session_tid
Definition: msipriv.h:1128
@ Database_tid
Definition: msipriv.h:1125
@ LAST_tid
Definition: msipriv.h:1132
@ SummaryInfo_tid
Definition: msipriv.h:1130
@ StringList_tid
Definition: msipriv.h:1129
@ Record_tid
Definition: msipriv.h:1127
@ Installer_tid
Definition: msipriv.h:1126
DWORD gUIFilter
Definition: msi_main.c:46
UINT msi_load_all_components(MSIPACKAGE *package)
Definition: action.c:807
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:1929
UINT MSI_RecordSetIStream(MSIRECORD *, UINT, IStream *)
Definition: record.c:836
WCHAR * encode_streamname(BOOL is_table, const WCHAR *in)
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:90
WCHAR * msi_dup_record_field(MSIRECORD *row, INT index)
Definition: record.c:1002
struct tagMSIFIELD MSIFIELD
UINT msi_apply_patches(MSIPACKAGE *package)
Definition: patch.c:932
WCHAR * msi_resolve_file_source(MSIPACKAGE *package, MSIFILE *file)
Definition: files.c:536
UINT MSIREG_OpenInstallProps(LPCWSTR szProduct, MSIINSTALLCONTEXT dwContext, LPCWSTR szUserSid, HKEY *key, BOOL create)
Definition: registry.c:692
script
Definition: msipriv.h:383
@ SCRIPT_INSTALL
Definition: msipriv.h:385
@ SCRIPT_ROLLBACK
Definition: msipriv.h:387
@ SCRIPT_NONE
Definition: msipriv.h:384
@ SCRIPT_COMMIT
Definition: msipriv.h:386
@ SCRIPT_MAX
Definition: msipriv.h:388
UINT MSIREG_DeleteUserDataComponentKey(LPCWSTR szComponent, LPCWSTR szUserSid)
Definition: registry.c:552
UINT msi_set_sourcedir_props(MSIPACKAGE *package, BOOL replace)
Definition: action.c:352
BOOL decode_base85_guid(LPCWSTR, GUID *)
Definition: registry.c:132
MSIFOLDER * msi_get_loaded_folder(MSIPACKAGE *package, const WCHAR *dir)
Definition: action.c:583
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:394
UINT ACTION_RegisterExtensionInfo(MSIPACKAGE *package)
Definition: classes.c:1196
UINT MSI_ViewClose(MSIQUERY *)
Definition: msiquery.c:454
UINT MSIREG_DeleteClassesUpgradeCodesKey(LPCWSTR szUpgradeCode)
Definition: registry.c:890
void msi_parse_version_string(LPCWSTR, PDWORD, PDWORD)
Definition: appsearch.c:52
WCHAR * msi_create_component_advertise_string(MSIPACKAGE *, MSICOMPONENT *, const WCHAR *)
Definition: action.c:5505
LPVOID gUIContextRecord
Definition: msi_main.c:49
int msi_get_property_int(MSIDATABASE *package, LPCWSTR prop, int def)
Definition: package.c:2305
UINT msi_download_file(LPCWSTR szUrl, LPWSTR filename)
Definition: package.c:1026
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:5219
WCHAR * msi_get_suminfo_product(IStorage *stg)
Definition: suminfo.c:725
UINT MSI_DatabaseGetPrimaryKeys(MSIDATABASE *, LPCWSTR, MSIRECORD **)
UINT ACTION_CCPSearch(MSIPACKAGE *package)
Definition: appsearch.c:1125
UINT MSI_DatabaseOpenViewW(MSIDATABASE *, LPCWSTR, MSIQUERY **)
INT MSI_ProcessMessageVerbatim(MSIPACKAGE *, INSTALLMESSAGE, MSIRECORD *)
Definition: package.c:1843
BOOL is_wow64
Definition: msi.c:52
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:866
struct tagMSIFEATURE MSIFEATURE
void custom_stop_server(HANDLE process, HANDLE pipe)
Definition: custom.c:682
WCHAR *WINAPIV msi_build_directory_name(DWORD,...)
Definition: action.c:2007
struct tagMSIFILE MSIFILE
void msi_event_cleanup_all_subscriptions(MSIPACKAGE *)
Definition: dialog.c:4107
#define MSI_MAX_PROPS
Definition: msipriv.h:482
UINT msi_patch_assembly(MSIPACKAGE *, MSIASSEMBLY *, MSIFILEPATCH *)
Definition: files.c:726
WCHAR * msi_get_assembly_path(MSIPACKAGE *, const WCHAR *)
Definition: assembly.c:219
UINT msi_package_add_media_disk(MSIPACKAGE *, DWORD, DWORD, DWORD, LPWSTR, LPWSTR)
Definition: package.c:2648
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:3368
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:1310
const WCHAR * MSI_RecordGetString(const MSIRECORD *, UINT)
Definition: record.c:433
static LPWSTR strdupAtoW(LPCSTR str)
Definition: msipriv.h:1159
UINT msi_view_get_row(MSIDATABASE *, MSIVIEW *, UINT, MSIRECORD **)
Definition: msiquery.c:353
UINT ACTION_RegisterClassInfo(MSIPACKAGE *package)
Definition: classes.c:690
UINT MSI_GetComponentStateW(MSIPACKAGE *, LPCWSTR, INSTALLSTATE *, INSTALLSTATE *)
Definition: install.c:1427
UINT msi_load_suminfo_properties(MSIPACKAGE *package)
Definition: suminfo.c:1267
int msi_compare_font_versions(const WCHAR *, const WCHAR *)
Definition: action.c:1942
static char * strdupWtoU(LPCWSTR str)
Definition: msipriv.h:1172
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:131
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:713
DWORD gUIFilterRecord
Definition: msi_main.c:47
void msi_dialog_check_messages(HANDLE)
Definition: dialog.c:3987
UINT msi_validate_product_id(MSIPACKAGE *package)
Definition: action.c:7188
UINT VIEW_find_column(MSIVIEW *, LPCWSTR, LPCWSTR, UINT *)
Definition: msiquery.c:59
HRESULT create_session(MSIHANDLE msiHandle, IDispatch *pInstaller, IDispatch **pDispatch)
Definition: automation.c:2442
const struct tagMSICOLUMNHASHENTRY * MSIITERHANDLE
Definition: msipriv.h:229
UINT msi_get_db_suminfo(MSIDATABASE *db, UINT uiUpdateCount, MSISUMMARYINFO **si)
Definition: suminfo.c:492
HRESULT create_msiserver(IUnknown *pOuter, LPVOID *ppObj)
void ACTION_FinishCustomActions(const MSIPACKAGE *package)
Definition: custom.c:1629
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:564
@ FOLDER_STATE_UNINITIALIZED
Definition: msipriv.h:565
@ FOLDER_STATE_EXISTS
Definition: msipriv.h:566
@ FOLDER_STATE_REMOVED
Definition: msipriv.h:569
@ FOLDER_STATE_CREATED
Definition: msipriv.h:567
@ FOLDER_STATE_CREATED_PERSISTENT
Definition: msipriv.h:568
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:1639
UINT msi_uninstall_assembly(MSIPACKAGE *, MSICOMPONENT *)
Definition: assembly.c:402
struct tagMSISTREAM MSISTREAM
UINT MSI_ViewGetColumnInfo(MSIQUERY *, MSICOLINFO, MSIRECORD **)
Definition: msiquery.c:602
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
WCHAR * msi_normalize_path(const WCHAR *)
Definition: action.c:2116
UINT MSIREG_OpenUserUpgradeCodesKey(LPCWSTR szProduct, HKEY *key, BOOL create)
Definition: registry.c:798
UINT msi_export_suminfo(MSIDATABASE *db, HANDLE handle)
Definition: suminfo.c:1195
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:2100
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:561
struct tagMSICLASS MSICLASS
struct tagMSIQUERY MSIQUERY
UINT MSI_GetFeatureStateW(MSIPACKAGE *, LPCWSTR, INSTALLSTATE *, INSTALLSTATE *)
Definition: install.c:1065
MSICONDITION MSI_DatabaseIsTablePersistent(MSIDATABASE *db, LPCWSTR table)
Definition: table.c:2921
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:2250
VOID msi_destroy_stringtable(string_table *st)
Definition: string.c:107
void release_typelib(void)
Definition: apps.c:159
UINT msi_register_unique_action(MSIPACKAGE *, const WCHAR *)
Definition: custom.c:113
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:7640
struct tagFolderList FolderList
WCHAR * msi_get_font_file_version(MSIPACKAGE *, const WCHAR *)
Definition: font.c:189
UINT MSI_SetFeatureStateW(MSIPACKAGE *, LPCWSTR, INSTALLSTATE)
Definition: install.c:915
void free_remote_record(struct wire_record *rec)
Definition: record.c:1149
WCHAR * msi_get_package_code(MSIDATABASE *db)
Definition: package.c:1277
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:1076
LONG WINAPI rpc_filter(EXCEPTION_POINTERS *eptr)
Definition: custom.c:85
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:450
UINT ACTION_UnregisterProgIdInfo(MSIPACKAGE *package)
Definition: classes.c:1088
void msi_dialog_destroy(msi_dialog *)
Definition: dialog.c:4055
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
WCHAR * msi_dup_property(MSIDATABASE *db, const WCHAR *prop)
static void msi_disable_fs_redirection(MSIPACKAGE *package)
Definition: msipriv.h:1072
UINT MSI_RecordCopyField(MSIRECORD *, UINT, MSIRECORD *, UINT)
Definition: record.c:166
WCHAR * msi_suminfo_dup_string(MSISUMMARYINFO *si, UINT property)
Definition: suminfo.c:701
UINT ACTION_RegisterProgIdInfo(MSIPACKAGE *package)
Definition: classes.c:1026
INT MSI_ProcessMessage(MSIPACKAGE *, INSTALLMESSAGE, MSIRECORD *)
Definition: package.c:1909
BOOL msi_is_global_assembly(MSICOMPONENT *)
Definition: action.c:2036
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:213
WCHAR * msi_strdupW(const WCHAR *value, int len)
Definition: record.c:155
UINT MSI_GetFeatureCost(MSIPACKAGE *, MSIFEATURE *, MSICOSTTREE, INSTALLSTATE, LPINT)
Definition: install.c:1155
UINT MSIREG_DeleteUserFeaturesKey(LPCWSTR szProduct)
Definition: registry.c:445
WCHAR * msi_create_temp_file(MSIDATABASE *db)
Definition: custom.c:215
UINT MSI_ViewFetch(MSIQUERY *, MSIRECORD **)
Definition: msiquery.c:377
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:1146
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:550
WCHAR * msi_build_icon_path(MSIPACKAGE *, const WCHAR *)
Definition: action.c:3713
UINT WINAPI MsiCreateAndVerifyInstallerDirectory(DWORD)
Definition: msi.c:3810
UINT ACTION_DuplicateFiles(MSIPACKAGE *package)
Definition: files.c:1315
LANGID WINAPI MsiLoadStringA(MSIHANDLE, UINT, LPSTR, int, LANGID)
Definition: msi.c:2397
UINT msi_load_all_features(MSIPACKAGE *package)
Definition: action.c:950
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:1485
WCHAR * msi_reg_get_val_str(HKEY hkey, const WCHAR *name)
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:4417
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
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:2176
struct tagMSICOMPONENT MSICOMPONENT
UINT MSI_ViewModify(MSIQUERY *, MSIMODIFY, MSIRECORD *)
Definition: msiquery.c:697
UINT msi_apply_transforms(MSIPACKAGE *package)
Definition: patch.c:950
UINT msi_get_suminfo(IStorage *stg, UINT uiUpdateCount, MSISUMMARYINFO **si)
Definition: suminfo.c:462
UINT ACTION_MoveFiles(MSIPACKAGE *package)
Definition: files.c:1185
struct tagMSIFILEPATCH MSIFILEPATCH
clr_version
Definition: msipriv.h:374
@ CLR_VERSION_V20
Definition: msipriv.h:377
@ CLR_VERSION_MAX
Definition: msipriv.h:379
@ CLR_VERSION_V40
Definition: msipriv.h:378
@ CLR_VERSION_V11
Definition: msipriv.h:376
@ CLR_VERSION_V10
Definition: msipriv.h:375
WCHAR * msi_get_error_message(MSIDATABASE *, int)
Definition: package.c:1818
const WCHAR * msi_get_command_line_option(const WCHAR *cmd, const WCHAR *option, UINT *len)
Definition: action.c:273
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:1571
void * msihandle2msiinfo(MSIHANDLE handle, UINT type)
Definition: handle.c:158
UINT MSI_CommitTables(MSIDATABASE *db)
Definition: table.c:2886
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:7740
UINT msi_create_empty_local_file(LPWSTR path, LPCWSTR suffix)
Definition: package.c:1062
UINT MSI_OpenPackageW(LPCWSTR szPackage, DWORD dwOptions, MSIPACKAGE **pPackage)
Definition: package.c:1384
UINT unmarshal_record(const struct wire_record *in, MSIHANDLE *out)
Definition: record.c:1095
struct tagComponentList ComponentList
UINT ACTION_UnregisterFonts(MSIPACKAGE *package)
Definition: font.c:360
void msi_adjust_privilege_properties(MSIPACKAGE *)
Definition: package.c:964
_msi_file_state
Definition: msipriv.h:593
@ msifs_missing
Definition: msipriv.h:595
@ msifs_skipped
Definition: msipriv.h:599
@ msifs_installed
Definition: msipriv.h:598
@ msifs_invalid
Definition: msipriv.h:594
@ msifs_present
Definition: msipriv.h:597
@ msifs_hashmatch
Definition: msipriv.h:600
@ msifs_overwrite
Definition: msipriv.h:596
INT ACTION_ShowDialog(MSIPACKAGE *, LPCWSTR)
INSTALLSTATE msi_get_feature_action(MSIPACKAGE *package, MSIFEATURE *feature)
Definition: action.c:625
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:2625
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:1185
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
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
unsigned int UINT
Definition: ndis.h:50
#define BOOL
Definition: nt_native.h:43
#define DWORD
Definition: nt_native.h:44
#define LPVOID
Definition: nt_native.h:45
DWORD * PDWORD
Definition: pedump.c:68
long LONG
Definition: pedump.c:60
static FILE * out
Definition: regtests2xml.c:44
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
DWORD dwOptions
Definition: solitaire.cpp:25
PVOID user
Definition: msipriv.h:1110
LPWSTR curfile
Definition: msipriv.h:1109
MSIPACKAGE * package
Definition: msipriv.h:1106
PMSICABEXTRACTCB cb
Definition: msipriv.h:1108
MSIMEDIAINFO * mi
Definition: msipriv.h:1107
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:748
LPCWSTR w
Definition: msipriv.h:751
LPCSTR a
Definition: msipriv.h:750
LPWSTR w
Definition: msipriv.h:743
LPSTR a
Definition: msipriv.h:742
BOOL unicode
Definition: msipriv.h:740
Definition: ftp_var.h:139
Definition: http.c:7252
Definition: query.h:86
Definition: parser.c:44
Definition: fci.c:127
Definition: fci.c:116
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:553
MSICOMPONENT * component
Definition: msipriv.h:554
MSIFEATURE * feature
Definition: msipriv.h:560
struct list entry
Definition: msipriv.h:559
MSIFOLDER * folder
Definition: msipriv.h:590
struct list entry
Definition: msipriv.h:589
LPWSTR DllSurrogate
Definition: msipriv.h:642
LPWSTR LocalServer
Definition: msipriv.h:640
struct list entry
Definition: msipriv.h:637
BOOL RunAsInteractiveUser
Definition: msipriv.h:644
LPWSTR RemoteServerName
Definition: msipriv.h:639
LPWSTR AppID
Definition: msipriv.h:638
LPWSTR ServiceParameters
Definition: msipriv.h:641
BOOL ActivateAtStorage
Definition: msipriv.h:643
DWORD attributes
Definition: msipriv.h:515
LPWSTR tempdir
Definition: msipriv.h:517
LPWSTR feature
Definition: msipriv.h:512
LPWSTR display_name
Definition: msipriv.h:516
LPWSTR manifest
Definition: msipriv.h:513
LPWSTR application
Definition: msipriv.h:514
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:665
LPWSTR clsid
Definition: msipriv.h:652
LPWSTR IconPath
Definition: msipriv.h:660
LPWSTR Argument
Definition: msipriv.h:663
LPWSTR ProgIDText
Definition: msipriv.h:656
INSTALLSTATE action
Definition: msipriv.h:667
LPWSTR DefInprocHandler
Definition: msipriv.h:661
MSIAPPID * AppID
Definition: msipriv.h:658
LPWSTR FileTypeMask
Definition: msipriv.h:659
struct list entry
Definition: msipriv.h:651
LPWSTR Description
Definition: msipriv.h:657
LPWSTR DefInprocHandler32
Definition: msipriv.h:662
LPWSTR Context
Definition: msipriv.h:653
MSICOMPONENT * Component
Definition: msipriv.h:654
MSIFEATURE * Feature
Definition: msipriv.h:664
MSIPROGID * ProgID
Definition: msipriv.h:655
unsigned int hasLocalFeature
Definition: msipriv.h:545
unsigned int hasAdvertisedFeature
Definition: msipriv.h:544
unsigned int anyAbsent
Definition: msipriv.h:543
LPWSTR Component
Definition: msipriv.h:524
unsigned int updated
Definition: msipriv.h:548
unsigned int hasSourceFeature
Definition: msipriv.h:546
BOOL ForceLocalState
Definition: msipriv.h:533
INSTALLSTATE Action
Definition: msipriv.h:532
INSTALLSTATE ActionRequest
Definition: msipriv.h:531
unsigned int added
Definition: msipriv.h:547
LPWSTR AdvertiseString
Definition: msipriv.h:539
LPWSTR ComponentId
Definition: msipriv.h:525
MSIASSEMBLY * assembly
Definition: msipriv.h:540
struct list entry
Definition: msipriv.h:523
LPWSTR KeyPath
Definition: msipriv.h:529
LPWSTR Condition
Definition: msipriv.h:528
INSTALLSTATE Installed
Definition: msipriv.h:530
LPWSTR Directory
Definition: msipriv.h:526
LPWSTR FullKeypath
Definition: msipriv.h:538
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:683
INSTALLSTATE action
Definition: msipriv.h:682
MSICOMPONENT * Component
Definition: msipriv.h:676
MSIPROGID * ProgID
Definition: msipriv.h:677
LPWSTR Extension
Definition: msipriv.h:675
MSIMIME * Mime
Definition: msipriv.h:679
MSIFEATURE * Feature
Definition: msipriv.h:680
LPWSTR ProgIDText
Definition: msipriv.h:678
struct list entry
Definition: msipriv.h:674
INT Attributes
Definition: msipriv.h:502
INSTALLSTATE Action
Definition: msipriv.h:505
LPWSTR Feature_Parent
Definition: msipriv.h:496
LPWSTR Feature
Definition: msipriv.h:495
LPWSTR Description
Definition: msipriv.h:498
INSTALLSTATE Installed
Definition: msipriv.h:503
LPWSTR Directory
Definition: msipriv.h:501
LPWSTR Title
Definition: msipriv.h:497
struct list Children
Definition: msipriv.h:506
INSTALLSTATE ActionRequest
Definition: msipriv.h:504
struct list Components
Definition: msipriv.h:507
struct list entry
Definition: msipriv.h:494
union tagMSIFIELD::@501 u
INT iVal
Definition: msipriv.h:142
IStream * stream
Definition: msipriv.h:144
UINT type
Definition: msipriv.h:139
LPWSTR szwVal
Definition: msipriv.h:143
MSIFILE * File
Definition: msipriv.h:626
BOOL extracted
Definition: msipriv.h:630
WCHAR * path
Definition: msipriv.h:632
struct list entry
Definition: msipriv.h:625
LPWSTR File
Definition: msipriv.h:606
BOOL IsCompressed
Definition: msipriv.h:618
MSICOMPONENT * Component
Definition: msipriv.h:607
MSIFILEHASHINFO hash
Definition: msipriv.h:619
msi_file_state state
Definition: msipriv.h:616
INT Sequence
Definition: msipriv.h:615
LPWSTR Language
Definition: msipriv.h:613
LPWSTR TargetPath
Definition: msipriv.h:617
LPWSTR FileName
Definition: msipriv.h:608
LPWSTR Version
Definition: msipriv.h:612
INT FileSize
Definition: msipriv.h:611
LPWSTR ShortName
Definition: msipriv.h:609
struct list entry
Definition: msipriv.h:605
INT Attributes
Definition: msipriv.h:614
LPWSTR LongName
Definition: msipriv.h:610
UINT disk_id
Definition: msipriv.h:620
LPWSTR SourceShortPath
Definition: msipriv.h:580
LPWSTR ResolvedTarget
Definition: msipriv.h:581
LPWSTR Directory
Definition: msipriv.h:576
LPWSTR Parent
Definition: msipriv.h:577
LPWSTR SourceLongPath
Definition: msipriv.h:579
LPWSTR TargetDefault
Definition: msipriv.h:578
struct list children
Definition: msipriv.h:575
enum folder_state State
Definition: msipriv.h:583
LPWSTR ResolvedSource
Definition: msipriv.h:582
BOOL persistent
Definition: msipriv.h:584
struct list entry
Definition: msipriv.h:574
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:712
LPWSTR ContentType
Definition: msipriv.h:711
LPWSTR clsid
Definition: msipriv.h:714
struct list entry
Definition: msipriv.h:710
MSICLASS * Class
Definition: msipriv.h:715
LPWSTR suffix
Definition: msipriv.h:713
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:423
HMODULE hfusion20
Definition: msipriv.h:417
BOOL ExecuteSequenceRun
Definition: msipriv.h:437
HANDLE custom_server_64_process
Definition: msipriv.h:443
HMODULE hfusion11
Definition: msipriv.h:416
UINT InWhatSequence
Definition: msipriv.h:438
int unique_actions_count
Definition: msipriv.h:436
HMODULE hfusion10
Definition: msipriv.h:415
float center_y
Definition: msipriv.h:456
struct list subscriptions
Definition: msipriv.h:461
BOOL delete_on_close
Definition: msipriv.h:450
HMODULE hmscoree
Definition: msipriv.h:419
UINT WordCount
Definition: msipriv.h:458
HANDLE custom_server_32_pipe
Definition: msipriv.h:444
HMODULE hfusion40
Definition: msipriv.h:418
unsigned char commit_action_running
Definition: msipriv.h:467
struct list classes
Definition: msipriv.h:426
LPWSTR LastAction
Definition: msipriv.h:410
struct list RunningActions
Definition: msipriv.h:440
struct list appids
Definition: msipriv.h:430
struct list features
Definition: msipriv.h:402
MSIOBJECTHDR hdr
Definition: msipriv.h:393
struct list files
Definition: msipriv.h:403
WCHAR DWORD const WCHAR DWORD
Definition: msipriv.h:421
MSIDATABASE * db
Definition: msipriv.h:394
unsigned char rollback_action_running
Definition: msipriv.h:468
enum platform platform
Definition: msipriv.h:396
LPWSTR next_dialog
Definition: msipriv.h:454
IAssemblyCache * cache_sxs
Definition: msipriv.h:424
HANDLE custom_server_64_pipe
Definition: msipriv.h:445
struct list cabinet_streams
Definition: msipriv.h:408
WCHAR DWORD
Definition: msipriv.h:420
struct list extensions
Definition: msipriv.h:427
struct list folders
Definition: msipriv.h:406
UINT num_langids
Definition: msipriv.h:397
LPWSTR * unique_actions
Definition: msipriv.h:435
unsigned char rpc_server_started
Definition: msipriv.h:472
LPWSTR ProductCode
Definition: msipriv.h:448
LPWSTR PackagePath
Definition: msipriv.h:447
struct list mimes
Definition: msipriv.h:429
INSTALLUILEVEL ui_level
Definition: msipriv.h:452
UINT action_progress_increment
Definition: msipriv.h:413
WCHAR DWORD const WCHAR void IUnknown IAssemblyName DWORD
Definition: msipriv.h:422
struct list sourcelist_media
Definition: msipriv.h:464
LANGID * langids
Definition: msipriv.h:398
HANDLE log_file
Definition: msipriv.h:414
enum script script
Definition: msipriv.h:432
MSIINSTALLCONTEXT Context
Definition: msipriv.h:459
LPWSTR LastActionTemplate
Definition: msipriv.h:411
struct list filepatches
Definition: msipriv.h:404
LPWSTR * script_actions[SCRIPT_MAX]
Definition: msipriv.h:433
unsigned char scheduled_action_running
Definition: msipriv.h:466
msi_dialog * dialog
Definition: msipriv.h:453
unsigned char need_reboot_now
Definition: msipriv.h:470
unsigned char need_reboot_at_end
Definition: msipriv.h:469
LPWSTR localfile
Definition: msipriv.h:449
UINT LastActionResult
Definition: msipriv.h:412
struct list patches
Definition: msipriv.h:400
struct list binaries
Definition: msipriv.h:407
HANDLE custom_server_32_process
Definition: msipriv.h:442
void * cookie
Definition: msipriv.h:399
LPWSTR ActionFormat
Definition: msipriv.h:409
unsigned char need_rollback
Definition: msipriv.h:471
float center_x
Definition: msipriv.h:455
struct list tempfiles
Definition: msipriv.h:405
int script_actions_count[SCRIPT_MAX]
Definition: msipriv.h:434
struct list sourcelist_info
Definition: msipriv.h:463
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:478
msi_dialog * dialog
Definition: msipriv.h:479
MSIOBJECTHDR hdr
Definition: msipriv.h:477
MSIPROGID * CurVer
Definition: msipriv.h:695
MSICLASS * Class
Definition: msipriv.h:691
struct list entry
Definition: msipriv.h:688
MSIPROGID * Parent
Definition: msipriv.h:690
LPWSTR ProgID
Definition: msipriv.h:689
MSIPROGID * VersionInd
Definition: msipriv.h:696
LPWSTR IconPath
Definition: msipriv.h:693
LPWSTR Description
Definition: msipriv.h:692
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:486
IStorage * storage
Definition: msipriv.h:487
DWORD update_count
Definition: msipriv.h:488
IStorage * stg
Definition: msipriv.h:95
struct list entry
Definition: msipriv.h:94
LPWSTR Command
Definition: msipriv.h:704
INT Sequence
Definition: msipriv.h:703
struct list entry
Definition: msipriv.h:701
LPWSTR Argument
Definition: msipriv.h:705
LPWSTR Verb
Definition: msipriv.h:702
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
void * PVOID
Definition: typedefs.h:50
uint32_t * LPDWORD
Definition: typedefs.h:59
int32_t INT
Definition: typedefs.h:58
Definition: pdh_main.c:94
int ret
static MONITORINFO mi
Definition: win.c:7338
int codepage
Definition: win_iconv.c:156
int * LPINT
Definition: windef.h:178
CONST void * LPCVOID
Definition: windef.h:191
#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:496
const char * LPCSTR
Definition: xmlstorage.h:183
char * LPSTR
Definition: xmlstorage.h:182
__wchar_t WCHAR
Definition: xmlstorage.h:180
WCHAR * LPWSTR
Definition: xmlstorage.h:184
const WCHAR * LPCWSTR
Definition: xmlstorage.h:185
unsigned char BYTE
Definition: xxhash.c:193