37 #include "msiserver.h" 38 #include "wine/unicode.h" 53 if (szAction && !szwAction)
74 package = msihandle2msiinfo( hInstall, MSIHANDLETYPE_PACKAGE );
88 IWineMsiRemotePackage_Release( remote_package );
92 hr = IWineMsiRemotePackage_DoAction( remote_package,
action );
95 IWineMsiRemotePackage_Release( remote_package );
143 package = msihandle2msiinfo( hInstall, MSIHANDLETYPE_PACKAGE );
157 IWineMsiRemotePackage_Release( remote_package );
161 hr = IWineMsiRemotePackage_Sequence( remote_package,
table, iSequenceMode );
164 IWineMsiRemotePackage_Release( remote_package );
185 if (awbuf->
str.
w && !sz)
199 if (awbuf->
str.
a && *sz && lenA >= *sz)
200 awbuf->
str.
a[*sz - 1] = 0;
203 if (awbuf->
str.
w &&
len >= *sz)
214 if (!
folder->ResolvedTarget)
223 return folder->ResolvedTarget;
239 package = msihandle2msiinfo( hInstall, MSIHANDLETYPE_PACKAGE );
255 IWineMsiRemotePackage_Release( remote_package );
260 hr = IWineMsiRemotePackage_GetTargetPath( remote_package,
folder,
NULL, &
len );
272 hr = IWineMsiRemotePackage_GetTargetPath( remote_package,
folder,
value, &
len );
279 IWineMsiRemotePackage_Release( remote_package );
316 if (szFolder && !szwFolder)
320 path.str.a = szPathBuf;
340 path.str.w = szPathBuf;
367 if (
f->ResolvedSource)
373 if (!
f->Parent)
return path;
408 package = msihandle2msiinfo( hInstall, MSIHANDLETYPE_PACKAGE );
424 IWineMsiRemotePackage_Release( remote_package );
429 hr = IWineMsiRemotePackage_GetSourcePath( remote_package,
folder,
NULL, &
len );
441 hr = IWineMsiRemotePackage_GetSourcePath( remote_package,
folder,
value, &
len );
448 IWineMsiRemotePackage_Release( remote_package );
463 if (szPathBuf->
str.
w && !pcchPathBuf )
494 str.str.a = szPathBuf;
514 str.str.w = szPathBuf;
528 if ( !szFolder || !szFolderPath )
533 if (!szwFolder || !szwFolderPath)
555 folder->ResolvedTarget = target_path;
611 if ( !szFolder || !szFolderPath )
614 package = msihandle2msiinfo(hInstall, MSIHANDLETYPE_PACKAGE);
631 IWineMsiRemotePackage_Release( remote_package );
635 hr = IWineMsiRemotePackage_SetTargetPath( remote_package,
folder,
path );
639 IWineMsiRemotePackage_Release( remote_package );
695 TRACE(
"%d %d\n", hInstall, iRunMode);
697 package = msihandle2msiinfo(hInstall, MSIHANDLETYPE_PACKAGE);
708 hr = IWineMsiRemotePackage_GetMode(remote_package, iRunMode, &
ret);
709 IWineMsiRemotePackage_Release(remote_package);
720 FIXME(
"no support for administrative installs\n");
724 FIXME(
"no support for advertised installs\n");
771 FIXME(
"unimplemented run mode: %d\n", iRunMode);
787 TRACE(
"%d %d %d\n", hInstall, iRunMode, fState);
789 package = msihandle2msiinfo( hInstall, MSIHANDLETYPE_PACKAGE );
799 hr = IWineMsiRemotePackage_SetMode( remote_package, iRunMode, fState );
800 IWineMsiRemotePackage_Release( remote_package );
863 newstate =
feature->ActionRequest;
870 if (!component->
Enabled)
continue;
872 TRACE(
"Modifying (%d): Component %s (Installed %d, Action %d, Request %d)\n",
888 component->
Action = newstate;
934 TRACE(
"Result (%d): Component %s (Installed %d, Action %d, Request %d)\n",
955 feature->ActionRequest = iState;
980 package = msihandle2msiinfo(hInstall, MSIHANDLETYPE_PACKAGE);
994 IWineMsiRemotePackage_Release(remote_package);
998 hr = IWineMsiRemotePackage_SetFeatureState(remote_package,
feature, iState);
1001 IWineMsiRemotePackage_Release(remote_package);
1110 *piInstalled =
feature->Installed;
1113 *piAction =
feature->ActionRequest;
1129 TRACE(
"%d %s %p %p\n", hInstall,
debugstr_w(szFeature), piInstalled, piAction);
1131 package = msihandle2msiinfo(hInstall, MSIHANDLETYPE_PACKAGE);
1139 if (!remote_package)
1145 IWineMsiRemotePackage_Release(remote_package);
1149 hr = IWineMsiRemotePackage_GetFeatureState(remote_package,
feature,
1150 piInstalled, piAction);
1153 IWineMsiRemotePackage_Release(remote_package);
1232 feature_parent =
parent->Feature_Parent;
1242 WARN(
"unhandled cost tree %u\n",
tree);
1261 iCostTree, iState, piCost);
1263 package = msihandle2msiinfo(hInstall, MSIHANDLETYPE_PACKAGE);
1271 if (!remote_package)
1277 IWineMsiRemotePackage_Release(remote_package);
1281 hr = IWineMsiRemotePackage_GetFeatureCost(remote_package,
feature,
1282 iCostTree, iState, piCost);
1285 IWineMsiRemotePackage_Release(remote_package);
1318 TRACE(
"%u, %s, %p, %p, %p, %p, %p\n",
handle,
debugstr_a(
feature), attrs,
title,
1319 title_len,
help, help_len);
1372 if (*title_len <=
len)
1388 if (*help_len <=
len)
1412 TRACE(
"%u, %s, %p, %p, %p, %p, %p\n",
handle,
debugstr_w(
feature), attrs,
title,
1413 title_len,
help, help_len);
1486 piInstalled, piAction);
1503 *piAction = comp->
Action;
1521 package = msihandle2msiinfo(hInstall, MSIHANDLETYPE_PACKAGE);
1529 if (!remote_package)
1535 IWineMsiRemotePackage_Release(remote_package);
1539 hr = IWineMsiRemotePackage_SetComponentState(remote_package, component, iState);
1542 IWineMsiRemotePackage_Release(remote_package);
1570 piInstalled, piAction);
1572 package = msihandle2msiinfo(hInstall, MSIHANDLETYPE_PACKAGE);
1580 if (!remote_package)
1586 IWineMsiRemotePackage_Release(remote_package);
1590 hr = IWineMsiRemotePackage_GetComponentState(remote_package, component,
1591 piInstalled, piAction);
1594 IWineMsiRemotePackage_Release(remote_package);
1620 package = msihandle2msiinfo(hInstall, MSIHANDLETYPE_PACKAGE);
1628 if (!remote_package)
1631 hr = IWineMsiRemotePackage_GetLanguage(remote_package, &
lang);
1646 static const WCHAR fmt[] = {
'%',
'd',0 };
1651 TRACE(
"%p %i\n", package, iInstallLevel);
1653 if (iInstallLevel > 32767)
1656 if (iInstallLevel < 1)
1675 TRACE(
"%d %i\n", hInstall, iInstallLevel);
1677 package = msihandle2msiinfo(hInstall, MSIHANDLETYPE_PACKAGE);
1684 if (!remote_package)
1687 hr = IWineMsiRemotePackage_SetInstallLevel(remote_package, iInstallLevel);
1689 IWineMsiRemotePackage_Release(remote_package);
1716 FIXME(
"%d %s %p stub returning %d\n",
1717 hInstall,
debugstr_w(szFeature), pInstallState, pInstallState ? *pInstallState : 0);
static DWORD unmap_feature_attributes(DWORD attrs)
#define ERROR_INVALID_PARAMETER
UINT WINAPI MsiSetFeatureStateA(MSIHANDLE hInstall, LPCSTR szFeature, INSTALLSTATE iState)
INTERNETFEATURELIST feature
enum tagMSICOSTTREE MSICOSTTREE
static UINT MSI_SetComponentStateW(MSIPACKAGE *package, LPCWSTR szComponent, INSTALLSTATE iState)
WCHAR * msi_normalize_path(const WCHAR *in)
WINE_UNICODE_INLINE unsigned int strlenW(const WCHAR *str)
UINT WINAPI MsiGetFeatureCostA(MSIHANDLE hInstall, LPCSTR szFeature, MSICOSTTREE iCostTree, INSTALLSTATE iState, LPINT piCost)
MSIFEATURE * msi_get_loaded_feature(MSIPACKAGE *package, const WCHAR *Feature)
#define WideCharToMultiByte
static const WCHAR szRollbackDisabled[]
GLsizei const GLchar ** path
static WCHAR * strdupW(const WCHAR *src)
GLdouble GLdouble GLdouble r
int msi_get_property_int(MSIDATABASE *package, LPCWSTR prop, int def) DECLSPEC_HIDDEN
UINT MSI_GetFeatureCost(MSIPACKAGE *package, MSIFEATURE *feature, MSICOSTTREE tree, INSTALLSTATE state, LPINT cost)
UINT msi_set_sourcedir_props(MSIPACKAGE *package, BOOL replace)
#define ERROR_INVALID_HANDLE
BOOL msi_is_global_assembly(MSICOMPONENT *comp)
UINT WINAPI MsiGetFeatureInfoA(MSIHANDLE handle, LPCSTR feature, LPDWORD attrs, LPSTR title, LPDWORD title_len, LPSTR help, LPDWORD help_len)
static UINT MSI_GetSourcePath(MSIHANDLE hInstall, LPCWSTR szFolder, awstring *szPathBuf, LPDWORD pcchPathBuf)
UINT WINAPI MsiSetFeatureAttributesW(MSIHANDLE handle, LPCWSTR name, DWORD attrs)
static WCHAR * get_source_root(MSIPACKAGE *package)
#define INVALID_HANDLE_VALUE
UINT WINAPI MsiSetTargetPathA(MSIHANDLE hInstall, LPCSTR szFolder, LPCSTR szFolderPath)
GLenum GLsizei GLenum GLenum const GLvoid * table
UINT MSI_Sequence(MSIPACKAGE *package, LPCWSTR table)
static void set_target_path(MSIPACKAGE *package, MSIFOLDER *folder, const WCHAR *path)
WCHAR * msi_resolve_source_folder(MSIPACKAGE *package, const WCHAR *name, MSIFOLDER **folder)
static const WCHAR szProductLanguage[]
DWORD WINAPI GetVersion(VOID)
UINT msi_strcpy_to_awstring(const WCHAR *str, int len, awstring *awbuf, DWORD *sz)
UINT msi_load_all_features(MSIPACKAGE *package)
static UINT MSI_GetTargetPath(MSIHANDLE hInstall, LPCWSTR szFolder, awstring *szPathBuf, LPDWORD pcchPathBuf)
static INT feature_cost(MSIFEATURE *feature)
static UINT MSI_GetFeatureInfo(MSIPACKAGE *package, LPCWSTR name, LPDWORD attrs, LPWSTR title, LPDWORD title_len, LPWSTR help, LPDWORD help_len)
#define LIST_FOR_EACH_ENTRY(elem, list, type, field)
#define ERROR_FUNCTION_FAILED
UINT WINAPI MsiSetTargetPathW(MSIHANDLE hInstall, LPCWSTR szFolder, LPCWSTR szFolderPath)
BOOL WINAPI MsiGetMode(MSIHANDLE hInstall, MSIRUNMODE iRunMode)
UINT MSI_SetInstallLevel(MSIPACKAGE *package, int iInstallLevel)
#define ERROR_ACCESS_DENIED
UINT WINAPI MsiSetComponentStateA(MSIHANDLE hInstall, LPCSTR szComponent, INSTALLSTATE iState)
UINT WINAPI MsiSetMode(MSIHANDLE hInstall, MSIRUNMODE iRunMode, BOOL fState)
DWORD WINAPI GetFileAttributesW(LPCWSTR lpFileName)
#define HRESULT_FACILITY(hr)
UINT WINAPI MsiGetComponentStateW(MSIHANDLE hInstall, LPCWSTR szComponent, INSTALLSTATE *piInstalled, INSTALLSTATE *piAction)
unsigned char rollback_action_running
UINT WINAPI MsiDoActionW(MSIHANDLE hInstall, LPCWSTR szAction)
UINT WINAPI MsiSetFeatureAttributesA(MSIHANDLE handle, LPCSTR feature, DWORD attrs)
UINT WINAPI MsiGetSourcePathA(MSIHANDLE hInstall, LPCSTR szFolder, LPSTR szPathBuf, LPDWORD pcchPathBuf)
BSTR WINAPI SysAllocString(LPCOLESTR str)
INSTALLSTATE ActionRequest
UINT ACTION_PerformAction(MSIPACKAGE *package, const WCHAR *action, UINT script)
UINT WINAPI MsiGetSourcePathW(MSIHANDLE hInstall, LPCWSTR szFolder, LPWSTR szPathBuf, LPDWORD pcchPathBuf)
UINT WINAPI MsiGetFeatureValidStatesA(MSIHANDLE hInstall, LPCSTR szFeature, LPDWORD pInstallState)
UINT WINAPI MsiGetFeatureValidStatesW(MSIHANDLE hInstall, LPCWSTR szFeature, LPDWORD pInstallState)
WINE_DEFAULT_DEBUG_CHANNEL(advpack)
unsigned char commit_action_running
static const WCHAR lang[]
UINT WINAPI MsiGetFeatureStateW(MSIHANDLE hInstall, LPCWSTR szFeature, INSTALLSTATE *piInstalled, INSTALLSTATE *piAction)
#define ERROR_UNKNOWN_FEATURE
UINT MSI_SetTargetPathW(MSIPACKAGE *package, LPCWSTR szFolder, LPCWSTR szFolderPath)
UINT MSI_SetFeatureStates(MSIPACKAGE *package)
unsigned char need_reboot_now
UINT WINAPI MsiSetComponentStateW(MSIHANDLE hInstall, LPCWSTR szComponent, INSTALLSTATE iState)
static const WCHAR szCostingComplete[]
static const WCHAR titleW[]
#define FILE_ATTRIBUTE_READONLY
UINT msi_load_all_components(MSIPACKAGE *package)
MSIFOLDER * msi_get_loaded_folder(MSIPACKAGE *package, const WCHAR *dir)
#define INVALID_FILE_ATTRIBUTES
int msiobj_release(MSIOBJECTHDR *info)
MSICOMPONENT * msi_get_loaded_component(MSIPACKAGE *package, const WCHAR *Component)
static const WCHAR szSourceDir[]
UINT WINAPI MsiDoActionA(MSIHANDLE hInstall, LPCSTR szAction)
UINT MSI_SetFeatureStateW(MSIPACKAGE *package, LPCWSTR szFeature, INSTALLSTATE iState)
UINT WINAPI MsiSetInstallLevel(MSIHANDLE hInstall, int iInstallLevel)
#define MSIHANDLETYPE_PACKAGE
#define memcpy(s1, s2, n)
static const WCHAR helpW[]
unsigned char scheduled_action_running
const WCHAR * msi_get_target_folder(MSIPACKAGE *package, const WCHAR *name)
unsigned int hasLocalFeature
UINT WINAPI MsiGetComponentStateA(MSIHANDLE hInstall, LPCSTR szComponent, INSTALLSTATE *piInstalled, INSTALLSTATE *piAction)
WINE_UNICODE_INLINE WCHAR * strcpyW(WCHAR *dst, const WCHAR *src)
UINT WINAPI MsiSequenceA(MSIHANDLE hInstall, LPCSTR szTable, INT iSequenceMode)
void msi_resolve_target_folder(MSIPACKAGE *package, const WCHAR *name, BOOL load_prop)
UINT WINAPI MsiGetFeatureCostW(MSIHANDLE hInstall, LPCWSTR szFeature, MSICOSTTREE iCostTree, INSTALLSTATE iState, LPINT piCost)
UINT WINAPI MsiSequenceW(MSIHANDLE hInstall, LPCWSTR szTable, INT iSequenceMode)
static const WCHAR szOne[]
void WINAPI DECLSPEC_HOTPATCH SysFreeString(BSTR str)
#define ERROR_UNKNOWN_COMPONENT
UINT WINAPI MsiGetTargetPathW(MSIHANDLE hInstall, LPCWSTR szFolder, LPWSTR szPathBuf, LPDWORD pcchPathBuf)
UINT msi_set_property(MSIDATABASE *, const WCHAR *, const WCHAR *, int) DECLSPEC_HIDDEN
UINT WINAPI MsiGetFeatureStateA(MSIHANDLE hInstall, LPCSTR szFeature, INSTALLSTATE *piInstalled, INSTALLSTATE *piAction)
static BOOL msi_free(void *mem)
WINE_UNICODE_INLINE int strcmpW(const WCHAR *str1, const WCHAR *str2)
LANGID WINAPI MsiGetLanguage(MSIHANDLE hInstall)
static const WCHAR szTargetDir[]
UINT WINAPI MsiGetTargetPathA(MSIHANDLE hInstall, LPCSTR szFolder, LPSTR szPathBuf, LPDWORD pcchPathBuf)
static void * msi_alloc(size_t len) __WINE_ALLOC_SIZE(1)
UINT WINAPI MsiSetFeatureStateW(MSIHANDLE hInstall, LPCWSTR szFeature, INSTALLSTATE iState)
WCHAR * msi_build_directory_name(DWORD count,...)
IUnknown * msi_get_remote(MSIHANDLE handle)
static DWORD map_feature_attributes(DWORD attrs)
UINT MSI_GetComponentStateW(MSIPACKAGE *package, LPCWSTR szComponent, INSTALLSTATE *piInstalled, INSTALLSTATE *piAction)
void * msihandle2msiinfo(MSIHANDLE handle, UINT type)
static const WCHAR szInstalled[]
void ACTION_UpdateComponentStates(MSIPACKAGE *package, MSIFEATURE *feature)
static WCHAR * strdupAtoW(const char *str)
UINT MSI_GetFeatureStateW(MSIPACKAGE *package, LPCWSTR szFeature, INSTALLSTATE *piInstalled, INSTALLSTATE *piAction)
static const WCHAR szTable[]
UINT WINAPI MsiGetFeatureInfoW(MSIHANDLE handle, LPCWSTR feature, LPDWORD attrs, LPWSTR title, LPDWORD title_len, LPWSTR help, LPDWORD help_len)
#define FILE_ATTRIBUTE_OFFLINE
static const WCHAR szInstallLevel[]
unsigned char need_reboot_at_end
LPWSTR msi_dup_property(MSIDATABASE *db, LPCWSTR prop) DECLSPEC_HIDDEN