2 * Common prototypes for Action handlers
4 * Copyright 2005 Aric Stewart for CodeWeavers
6 * This library is free software; you can redistribute it and/or
7 * modify it under the terms of the GNU Lesser General Public
8 * License as published by the Free Software Foundation; either
9 * version 2.1 of the License, or (at your option) any later version.
11 * This library is distributed in the hope that it will be useful,
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
14 * Lesser General Public License for more details.
16 * You should have received a copy of the GNU Lesser General Public
17 * License along with this library; if not, write to the Free Software
18 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
21 #define IDENTIFIER_SIZE 96
23 typedef struct tagMSIFEATURE
25 WCHAR Feature
[IDENTIFIER_SIZE
];
26 WCHAR Feature_Parent
[IDENTIFIER_SIZE
];
28 WCHAR Description
[0x100];
31 WCHAR Directory
[IDENTIFIER_SIZE
];
34 INSTALLSTATE Installed
;
35 INSTALLSTATE ActionRequest
;
39 INT Components
[1024]; /* yes hardcoded limit.... I am bad */
43 typedef struct tagMSICOMPONENT
45 WCHAR Component
[IDENTIFIER_SIZE
];
46 WCHAR ComponentId
[IDENTIFIER_SIZE
];
47 WCHAR Directory
[IDENTIFIER_SIZE
];
49 WCHAR Condition
[0x100];
50 WCHAR KeyPath
[IDENTIFIER_SIZE
];
52 INSTALLSTATE Installed
;
53 INSTALLSTATE ActionRequest
;
61 LPWSTR AdvertiseString
;
64 typedef struct tagMSIFOLDER
70 LPWSTR ResolvedTarget
;
71 LPWSTR ResolvedSource
;
72 LPWSTR Property
; /* initially set property */
75 /* 0 = uninitialized */
77 /* 2 = created remove if empty */
78 /* 3 = created persist if empty */
83 typedef struct tagMSIFILE
96 /* 0 = uninitialize */
98 /* 2 = present but replace */
99 /* 3 = present do not replace */
106 typedef struct tagMSICLASS
108 WCHAR CLSID
[IDENTIFIER_SIZE
]; /* Primary Key */
109 WCHAR Context
[IDENTIFIER_SIZE
]; /* Primary Key */
110 INT ComponentIndex
; /* Primary Key */
117 LPWSTR DefInprocHandler
;
118 LPWSTR DefInprocHandler32
;
122 /* not in the table, set during installation */
126 typedef struct tagMSIEXTENSION
128 WCHAR Extension
[256]; /* Primary Key */
129 INT ComponentIndex
; /* Primary Key */
134 /* not in the table, set during installation */
137 INT Verbs
[100]; /* yes hard coded limit, but realistically 100 verbs??? */
140 typedef struct tagMSIPROGID
142 LPWSTR ProgID
; /* Primary Key */
147 /* not in the table, set during installation */
152 typedef struct tagMSIVERB
161 typedef struct tagMSIMIME
163 LPWSTR ContentType
; /* Primary Key */
165 WCHAR CLSID
[IDENTIFIER_SIZE
];
167 /* not in the table, set during installation */
171 typedef struct tagMSIAPPID
173 WCHAR AppID
[IDENTIFIER_SIZE
]; /* Primary key */
174 LPWSTR RemoteServerName
;
176 LPWSTR ServiceParameters
;
178 BOOL ActivateAtStorage
;
179 BOOL RunAsInteractiveUser
;
189 typedef struct tagMSISCRIPT
191 LPWSTR
*Actions
[TOTAL_SCRIPTS
];
192 UINT ActionCount
[TOTAL_SCRIPTS
];
193 BOOL ExecuteSequenceRun
;
194 BOOL CurrentlyScripting
;
198 UINT
ACTION_PerformAction(MSIPACKAGE
*package
, const WCHAR
*action
, BOOL force
);
199 UINT
ACTION_PerformUIAction(MSIPACKAGE
*package
, const WCHAR
*action
);
200 void ACTION_FinishCustomActions( MSIPACKAGE
* package
);
201 UINT
ACTION_CustomAction(MSIPACKAGE
*package
,const WCHAR
*action
, BOOL execute
);
202 void ACTION_UpdateComponentStates(MSIPACKAGE
*package
, LPCWSTR szFeature
);
203 UINT
ACTION_AppSearch(MSIPACKAGE
*package
);
205 DWORD
deformat_string(MSIPACKAGE
*package
, LPCWSTR ptr
, WCHAR
** data
);
206 WCHAR
*load_dynamic_stringW(MSIRECORD
*row
, INT index
);
207 LPWSTR
load_dynamic_property(MSIPACKAGE
*package
, LPCWSTR prop
, UINT
* rc
);
208 LPWSTR
resolve_folder(MSIPACKAGE
*package
, LPCWSTR name
, BOOL source
,
209 BOOL set_prop
, MSIFOLDER
**folder
);
210 int get_loaded_component(MSIPACKAGE
* package
, LPCWSTR Component
);
211 int get_loaded_feature(MSIPACKAGE
* package
, LPCWSTR Feature
);
212 int get_loaded_file(MSIPACKAGE
* package
, LPCWSTR file
);
213 int track_tempfile(MSIPACKAGE
*package
, LPCWSTR name
, LPCWSTR path
);
214 UINT
schedule_action(MSIPACKAGE
*package
, UINT script
, LPCWSTR action
);
216 /* control event stuff */
217 VOID
ControlEvent_FireSubscribedEvent(MSIPACKAGE
*package
, LPCWSTR event
,
219 VOID
ControlEvent_CleanupSubscriptions(MSIPACKAGE
*package
);