40#define DEFAULT_INSTALLER_DESC "Active Setup Installation"
196 while (*
src && max_len-- > 1)
281 return This->priority;
294 FIXME(
"how to handle pv (%p)?\n", pv);
428 FIXME(
"(%p)->(%u, %p, %u, %p, %u, %p): stub\n",
This,
index,
cmd, cmd_size, switches, switch_size,
type);
476 *app =
This->size_app;
487 return This->size_download;
496 return This->size_extracted;
509 char *cancel,
DWORD cancel_size)
514 TRACE(
"(%p)->(%p, %u, %p, %u): semi-stub\n",
This,
progress, progress_size, cancel, cancel_size);
519 if (cancel_size > 0 && cancel)
558 return This->priority;
568 TRACE(
"(%p)->(%u, %p, %u, %p, %p, %p)\n",
This,
index,
id, id_size,
type, ver, build);
570 if (!
id || !ver || !build)
578 if (ICifFile_FindComponent(
This->parent,
entry->id, &dependency) ==
S_OK)
580 ICifComponent_GetVersion(dependency, ver, build);
605 return This->platform;
677 return This->installed;
704 return This->queue_state;
723 return This->size_download;
732 return This->current_priority;
794 *
ppv = &
This->IEnumCifComponents_iface;
833 ICifFile_Release(
This->file);
895 enumerator = heap_alloc_zero(
sizeof(*enumerator));
905 ICifFile_AddRef(
file);
918 *
ppv = &
This->IEnumCifGroups_iface;
957 ICifFile_Release(
This->file);
1007 enumerator = heap_alloc_zero(
sizeof(*enumerator));
1011 enumerator->
ref = 1;
1016 ICifFile_AddRef(
file);
1098 FIXME(
"how to handle pv (%p)?\n", pv);
1131 FIXME(
"how to handle pv (%p)?\n", pv);
1360 if (!
line)
goto done;
1366 if (!
next)
goto done;
1371 if (!
next)
goto done;
1376 if (!
next)
goto done;
1396 if (!
line)
goto done;
1438 if (!
line)
goto done;
1446 dependency = heap_alloc_zero(
sizeof(*dependency));
1447 if (!dependency)
goto done;
1450 if (!dependency->
id)
1457 if (dependency->
type) *dependency->
type++ = 0;
1494 url_entry = heap_alloc_zero(
sizeof(*url_entry));
1495 if (!url_entry)
goto error;
1501 if (!url_entry->
url || !*url_entry->
url)
1545 component = heap_alloc_zero(
sizeof(*component));
1557 if (!component->
id)
goto error;
1683 else if (
strcasecmp(section_name,
"Version") == 0)
1708 file = heap_alloc_zero(
sizeof(*
file));
1723 *icif = &
file->ICifFile_iface;
1728 ICifFile_Release(&
file->ICifFile_iface);
int strcmp(const char *String1, const char *String2)
char * strstr(char *String1, char *String2)
ACPI_SIZE strlen(const char *String)
static BOOL heap_free(void *mem)
#define InterlockedIncrement
#define InterlockedDecrement
#define WINE_DEFAULT_DEBUG_CHANNEL(t)
static void strip_quotes(WCHAR *word, WCHAR **end)
static void list_remove(struct list_entry *entry)
static void list_add_tail(struct list_entry *head, struct list_entry *entry)
static void list_add_head(struct list_entry *head, struct list_entry *entry)
static void list_init(struct list_entry *head)
static const WCHAR version[]
static LPSTR strdupA(LPCSTR str)
static UINT enum_components(const WCHAR *usersid, DWORD ctx, DWORD index, DWORD *idx, WCHAR guid[39], MSIINSTALLCONTEXT *installed_ctx, LPWSTR sid, LPDWORD sid_len)
GLuint GLuint GLsizei GLenum type
GLint GLenum GLsizei GLsizei GLsizei GLint GLsizei const GLvoid * data
GLenum GLenum GLuint components
GLint GLint GLint GLint GLint GLint GLint GLbitfield GLenum filter
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint i
static HRESULT WINAPI component_GetMode(ICifComponent *iface, UINT index, char *mode, DWORD size)
static HRESULT WINAPI component_IsRebootRequired(ICifComponent *iface)
static HRESULT load_ciffile(const char *path, ICifFile **icif)
static ULONG WINAPI enum_components_Release(IEnumCifComponents *iface)
static const ICifFileVtbl ciffileVtbl
static const IEnumCifGroupsVtbl enum_groupsVtbl
static ULONG WINAPI enum_components_AddRef(IEnumCifComponents *iface)
HRESULT WINAPI GetICifFileFromFile(ICifFile **icif, const char *path)
void component_set_installed(ICifComponent *iface, BOOL value)
static HRESULT WINAPI component_GetPatchID(ICifComponent *iface, char *id, DWORD size)
static HRESULT WINAPI ciffile_FindComponent(ICifFile *iface, const char *id, ICifComponent **component)
static HRESULT WINAPI ciffile_GetDescription(ICifFile *iface, char *desc, DWORD size)
static HRESULT WINAPI group_GetDescription(ICifGroup *iface, char *desc, DWORD size)
static HRESULT WINAPI enum_groups_Next(IEnumCifGroups *iface, ICifGroup **group)
static DWORD WINAPI component_GetExtractSize(ICifComponent *iface)
static BOOL section_get_dword(struct inf_section *inf_sec, const char *key, DWORD *value, DWORD def)
static HRESULT WINAPI component_GetDependency(ICifComponent *iface, UINT index, char *id, DWORD id_size, char *type, DWORD *ver, DWORD *build)
static HRESULT WINAPI component_GetDetVersion(ICifComponent *iface, char *dll, DWORD dll_size, char *entry, DWORD entry_size)
static HRESULT enum_groups_create(ICifFile *file, struct list *start, IEnumCifGroups **iface)
static HRESULT process_group(struct ciffile *file, struct inf_section *section, const char *section_name)
static struct ciffenum_components * impl_from_IEnumCifComponents(IEnumCifComponents *iface)
static HRESULT WINAPI component_IsActiveSetupAware(ICifComponent *iface)
static HRESULT WINAPI enum_components_Reset(IEnumCifComponents *iface)
static BOOL section_get_dword_field(struct inf_section *inf_sec, const char *key, int field, DWORD *value, DWORD def)
static BOOL copy_string(char **dest, const char *source)
static const ICifComponentVtbl cifcomponentVtbl
static BOOL read_version_entry(struct inf_section *section, DWORD *ret_ver, DWORD *ret_build)
static HRESULT WINAPI ciffile_EnumModes(ICifFile *iface, IEnumCifModes **cuf_modes, DWORD filter, void *pv)
void add_component_by_priority(struct ciffile *file, struct cifcomponent *component)
static void dependency_entry_free(struct dependency_info *dependency)
static HRESULT WINAPI component_IsUIVisible(ICifComponent *iface)
static HRESULT WINAPI component_IsComponentDownloaded(ICifComponent *iface)
static BOOL value_get_dword_field(struct inf_value *inf_val, int field, DWORD *value, DWORD def)
static HRESULT WINAPI ciffile_QueryInterface(ICifFile *iface, REFIID riid, void **ppv)
static HRESULT process_component(struct ciffile *file, struct inf_section *section, const char *section_name)
static BOOL value_get_str_field(struct inf_value *inf_val, int field, char **value, const char *def)
static HRESULT WINAPI enum_groups_Reset(IEnumCifGroups *iface)
static void group_free(struct cifgroup *group)
static DWORD WINAPI group_GetCurrentPriority(ICifGroup *iface)
static HRESULT WINAPI component_GetTreatAsOneComponents(ICifComponent *iface, UINT index, char *id, DWORD size)
static HRESULT WINAPI component_GetGUID(ICifComponent *iface, char *guid, DWORD size)
static HRESULT WINAPI ciffile_GetDetDlls(ICifFile *iface, char *dlls, DWORD size)
static HRESULT WINAPI component_GetVersion(ICifComponent *iface, DWORD *version, DWORD *build)
static BOOL read_platform_entry(struct inf_section *section, DWORD *ret_platform)
static HRESULT enum_components_create(ICifFile *file, struct list *start, char *group_id, IEnumCifComponents **iface)
static BOOL section_get_str(struct inf_section *inf_sec, const char *key, char **value, const char *def)
static DWORD WINAPI component_IsComponentInstalled(ICifComponent *iface)
static HRESULT WINAPI component_SetCurrentPriority(ICifComponent *iface, DWORD priority)
static HRESULT WINAPI component_GetDescription(ICifComponent *iface, char *desc, DWORD size)
static HRESULT WINAPI enum_components_QueryInterface(IEnumCifComponents *iface, REFIID riid, void **ppv)
static const ICifGroupVtbl cifgroupVtbl
static HRESULT WINAPI component_GetGroup(ICifComponent *iface, char *id, DWORD size)
static DWORD WINAPI component_GetActualDownloadSize(ICifComponent *iface)
static HRESULT WINAPI component_GetSuccessKey(ICifComponent *iface, char *key, DWORD size)
static HRESULT WINAPI group_GetID(ICifGroup *iface, char *id, DWORD size)
static DWORD WINAPI component_GetCurrentPriority(ICifComponent *iface)
void component_set_actual_download_size(ICifComponent *iface, DWORD size)
static DWORD WINAPI group_GetPriority(ICifGroup *iface)
static DWORD WINAPI component_GetPlatform(ICifComponent *iface)
static ULONG WINAPI ciffile_AddRef(ICifFile *iface)
static BOOL read_urls(struct cifcomponent *component, struct inf_section *section)
HRESULT WINAPI GetICifRWFileFromFile(ICifRWFile **icif, const char *path)
static struct cifgroup * impl_from_ICifGroup(ICifGroup *iface)
static HRESULT WINAPI component_GetUrlCheckRange(ICifComponent *iface, UINT index, DWORD *min, DWORD *max)
static HRESULT process_inf(struct ciffile *file, struct inf_file *inf)
static BOOL read_dependencies(struct cifcomponent *component, struct inf_section *section)
static struct ciffenum_groups * impl_from_IEnumCifGroups(IEnumCifGroups *iface)
static HRESULT WINAPI component_GetID(ICifComponent *iface, char *id, DWORD size)
static ULONG WINAPI enum_groups_AddRef(IEnumCifGroups *iface)
static HRESULT WINAPI group_EnumComponents(ICifGroup *iface, IEnumCifComponents **enum_components, DWORD filter, LPVOID pv)
static void component_free(struct cifcomponent *comp)
static HRESULT WINAPI ciffile_FindGroup(ICifFile *iface, const char *id, ICifGroup **group)
static HRESULT WINAPI enum_components_Next(IEnumCifComponents *iface, ICifComponent **component)
static HRESULT WINAPI enum_groups_QueryInterface(IEnumCifGroups *iface, REFIID riid, void **ppv)
static HRESULT WINAPI component_SetInstallQueueState(ICifComponent *iface, DWORD state)
static HRESULT process_version(struct ciffile *file, struct inf_section *section)
static DWORD WINAPI component_GetPriority(ICifComponent *iface)
static HRESULT WINAPI component_RequiresAdminRights(ICifComponent *iface)
static HRESULT WINAPI component_GetCommand(ICifComponent *iface, UINT index, char *cmd, DWORD cmd_size, char *switches, DWORD switch_size, DWORD *type)
void component_set_downloaded(ICifComponent *iface, BOOL value)
static struct ciffile * impl_from_ICiffile(ICifFile *iface)
static void url_entry_free(struct url_info *url)
static ULONG WINAPI ciffile_Release(ICifFile *iface)
static HRESULT WINAPI component_GetProgressKeys(ICifComponent *iface, char *progress, DWORD progress_size, char *cancel, DWORD cancel_size)
char * component_get_id(ICifComponent *iface)
static HRESULT WINAPI component_GetInstalledSize(ICifComponent *iface, DWORD *win, DWORD *app)
static HRESULT WINAPI component_GetFileExtractList(ICifComponent *iface, UINT index, char *list, DWORD size)
static struct cifcomponent * impl_from_ICifComponent(ICifComponent *iface)
static HRESULT WINAPI component_GetLocale(ICifComponent *iface, char *locale, DWORD size)
static HRESULT WINAPI component_GetDetails(ICifComponent *iface, char *details, DWORD size)
static HRESULT WINAPI ciffile_EnumGroups(ICifFile *iface, IEnumCifGroups **enum_groups, DWORD filter, void *pv)
static char * next_part(char **str, BOOL strip_quotes)
static HRESULT WINAPI component_GetUrl(ICifComponent *iface, UINT index, char *url, DWORD size, DWORD *flags)
static const IEnumCifComponentsVtbl enum_componentsVtbl
static DWORD WINAPI component_IsThisVersionInstalled(ICifComponent *iface, DWORD version, DWORD build, DWORD *ret_version, DWORD *ret_build)
static HRESULT WINAPI component_GetCustomData(ICifComponent *iface, char *key, char *data, DWORD size)
#define DEFAULT_INSTALLER_DESC
static DWORD WINAPI component_GetDownloadSize(ICifComponent *iface)
static ULONG WINAPI enum_groups_Release(IEnumCifGroups *iface)
static DWORD WINAPI component_GetInstallQueueState(ICifComponent *iface)
static HRESULT WINAPI ciffile_EnumComponents(ICifFile *iface, IEnumCifComponents **enum_components, DWORD filter, void *pv)
static HRESULT copy_substring_null(char *dest, int max_len, char *src)
static HRESULT WINAPI ciffile_FindMode(ICifFile *iface, const char *id, ICifMode **mode)
static HRESULT process_section(struct ciffile *file, struct inf_section *section, const char *section_name)
static HRESULT WINAPI component_GetUninstallKey(ICifComponent *iface, char *key, DWORD size)
_Check_return_ int __cdecl atoi(_In_z_ const char *_Str)
_Check_return_ long __cdecl strtol(_In_z_ const char *_Str, _Out_opt_ _Deref_post_z_ char **_EndPtr, _In_ int _Radix)
char * inf_section_get_name(struct inf_section *section)
BOOL inf_section_next_value(struct inf_section *sec, struct inf_value **value)
char * inf_value_get_value(struct inf_value *value)
char * trim(char *str, char **last_chr, BOOL strip_quotes)
void inf_free(struct inf_file *inf)
BOOL inf_next_section(struct inf_file *inf, struct inf_section **sec)
struct inf_value * inf_get_value(struct inf_section *sec, const char *key)
char * inf_value_get_key(struct inf_value *value)
HRESULT inf_load(const char *path, struct inf_file **inf_file)
static const WCHAR desc[]
static UNICODE_STRING value_str
#define IsEqualGUID(rguid1, rguid2)
static unsigned __int64 next
#define LIST_FOR_EACH_ENTRY(elem, list, type, field)
#define LIST_FOR_EACH_ENTRY_SAFE(cursor, cursor2, list, type, field)
__WINE_SERVER_LIST_INLINE struct list * list_next(const struct list *list, const struct list *elem)
__WINE_SERVER_LIST_INLINE void list_add_before(struct list *elem, struct list *to_add)
ICifComponent ICifComponent_iface
DWORD size_actual_download
IEnumCifComponents IEnumCifComponents_iface
IEnumCifGroups IEnumCifGroups_iface
ICifGroup ICifGroup_iface
#define CONTAINING_RECORD(address, type, field)