42 #include "wine/unicode.h" 78 'S',
'E',
'L',
'E',
'C',
'T',
' ',
'*',
' ',
'F',
'R',
'O',
'M',
' ',
79 '`',
'A',
'p',
'p',
'I',
'd',
'`',
' ',
'W',
'H',
'E',
'R',
'E',
' ',
80 '`',
'A',
'p',
'p',
'I',
'd',
'`',
' ',
'=',
' ',
'\'',
'%',
's',
'\'',0};
142 static const WCHAR fmt[] = {
'%',
's',
',',
'%',
'i',0};
182 'S',
'E',
'L',
'E',
'C',
'T',
' ',
'*',
' ',
'F',
'R',
'O',
'M',
' ',
183 '`',
'P',
'r',
'o',
'g',
'I',
'd',
'`',
' ',
'W',
'H',
'E',
'R',
'E',
' ',
184 '`',
'P',
'r',
'o',
'g',
'I',
'd',
'`',
' ',
'=',
' ',
'\'',
'%',
's',
'\'',0};
247 static const WCHAR fmt[] = {
'%',
's',
',',
'%',
'i',0};
269 static const WCHAR ole2[] = {
'o',
'l',
'e',
'2',
'.',
'd',
'l',
'l',0};
270 static const WCHAR ole32[] = {
'o',
'l',
'e',
'3',
'2',
'.',
'd',
'l',
'l',0};
312 'S',
'E',
'L',
'E',
'C',
'T',
' ',
'*',
' ',
'F',
'R',
'O',
'M',
' ',
313 '`',
'C',
'l',
'a',
's',
's',
'`',
' ',
'W',
'H',
'E',
'R',
'E',
' ',
314 '`',
'C',
'L',
'S',
'I',
'D',
'`',
' ',
'=',
' ',
'\'',
'%',
's',
'\'',0};
371 'S',
'E',
'L',
'E',
'C',
'T',
' ',
'*',
' ',
'F',
'R',
'O',
'M',
' ',
372 '`',
'M',
'I',
'M',
'E',
'`',
' ',
'W',
'H',
'E',
'R',
'E',
' ',
373 '`',
'C',
'o',
'n',
't',
'e',
'n',
't',
'T',
'y',
'p',
'e',
'`',
' ',
'=',
' ',
'\'',
'%',
's',
'\'',0};
439 'S',
'E',
'L',
'E',
'C',
'T',
' ',
'*',
' ',
'F',
'R',
'O',
'M',
' ',
440 '`',
'E',
'x',
't',
'e',
'n',
's',
'i',
'o',
'n',
'`',
' ',
'W',
'H',
'E',
'R',
'E',
' ',
441 '`',
'E',
'x',
't',
'e',
'n',
's',
'i',
'o',
'n',
'`',
' ',
'=',
' ',
'\'',
'%',
's',
'\'',0};
544 'S',
'E',
'L',
'E',
'C',
'T',
' ',
'*',
' ',
'F',
'R',
'O',
'M',
' ',
'`',
'C',
'l',
'a',
's',
's',
'`',0};
574 if (comp ==
ext->Component)
590 'S',
'E',
'L',
'E',
'C',
'T',
' ',
'*',
' ',
'F',
'R',
'O',
'M',
' ',
'`',
'E',
'x',
't',
'e',
'n',
's',
'i',
'o',
'n',
'`',0};
616 'S',
'E',
'L',
'E',
'C',
'T',
' ',
'`',
'P',
'r',
'o',
'g',
'I',
'd',
'`',
' ',
'F',
'R',
'O',
'M',
' ',
617 '`',
'P',
'r',
'o',
'g',
'I',
'd',
'`',0};
633 'S',
'E',
'L',
'E',
'C',
'T',
' ',
'*',
' ',
'F',
'R',
'O',
'M',
' ',
'`',
'V',
'e',
'r',
'b',
'`',0};
659 'S',
'E',
'L',
'E',
'C',
'T',
' ',
'`',
'C',
'o',
'n',
't',
'e',
'n',
't',
'T',
'y',
'p',
'e',
'`',
' ',
660 'F',
'R',
'O',
'M',
' ',
'`',
'M',
'I',
'M',
'E',
'`',0};
677 TRACE(
"Loading all the class info and related tables\n");
704 {
'R',
'e',
'm',
'o',
't',
'e',
'S',
'e',
'r',
'v',
'e',
'r',
'N',
'a',
'm',
'e',0};
705 static const WCHAR szLocalService[] =
706 {
'L',
'o',
'c',
'a',
'l',
'S',
'e',
'r',
'v',
'i',
'c',
'e',0};
707 static const WCHAR szService[] =
708 {
'S',
'e',
'r',
'v',
'i',
'c',
'e',
'P',
'a',
'r',
'a',
'm',
'e',
't',
'e',
'r',
's',0};
709 static const WCHAR szDLL[] =
710 {
'D',
'l',
'l',
'S',
'u',
'r',
'r',
'o',
'g',
'a',
't',
'e',0};
711 static const WCHAR szActivate[] =
712 {
'A',
'c',
't',
'i',
'v',
'a',
't',
'e',
'A',
's',
'S',
't',
'o',
'r',
'a',
'g',
'e',0};
713 static const WCHAR szY[] = {
'Y',0};
714 static const WCHAR szRunAs[] = {
'R',
'u',
'n',
'A',
's',0};
715 static const WCHAR szUser[] =
716 {
'I',
'n',
't',
'e',
'r',
'a',
'c',
't',
'i',
'v',
'e',
' ',
'U',
's',
'e',
'r',0};
725 if (
appid->RemoteServerName)
728 if (
appid->LocalServer)
731 if (
appid->ServiceParameters)
734 if (
appid->DllSurrogate)
737 if (
appid->ActivateAtStorage)
740 if (
appid->RunAsInteractiveUser)
749 static const WCHAR szFileType_fmt[] = {
'F',
'i',
'l',
'e',
'T',
'y',
'p',
'e',
'\\',
'%',
's',
'\\',
'%',
'i',0};
750 const WCHAR *keypath;
752 HKEY hkey, hkey2, hkey3;
782 TRACE(
"component is disabled\n");
794 TRACE(
"feature %s not scheduled for installation, skipping registration of class %s\n",
914 static const WCHAR szFileType[] = {
'F',
'i',
'l',
'e',
'T',
'y',
'p',
'e',
'\\',0};
915 const WCHAR *keypath;
946 TRACE(
"component is disabled\n");
957 TRACE(
"feature %s not scheduled for removal, skipping unregistration of class %s\n",
967 WARN(
"Failed to delete class key %d\n",
res);
976 WARN(
"Failed to delete appid key %d\n",
res);
991 WARN(
"Failed to delete file type %d\n",
res);
1009 return progid->Class->clsid;
1019 static const WCHAR szCurVer[] = {
'C',
'u',
'r',
'V',
'e',
'r',0};
1162 TRACE(
"Failed to delete progid key %d\n",
res);
1178 static const WCHAR szShell[] = {
's',
'h',
'e',
'l',
'l',0};
1179 static const WCHAR szCommand[] = {
'c',
'o',
'm',
'm',
'a',
'n',
'd',0};
1180 static const WCHAR fmt[] = {
'\"',
'%',
's',
'\"',
' ',
'%',
's',0};
1181 static const WCHAR fmt2[] = {
'\"',
'%',
's',
'\"',0};
1250 static const WCHAR szContentType[] = {
'C',
'o',
'n',
't',
'e',
'n',
't',
' ',
'T',
'y',
'p',
'e',0};
1272 if (!
ext->Component)
1275 if (!
ext->Component->Enabled)
1277 TRACE(
"component is disabled\n");
1293 TRACE(
"feature %s not scheduled for installation, skipping registration of extension %s\n",
1309 WARN(
"Failed to create extension key %d\n",
res);
1315 if (
ext->ProgID ||
ext->ProgIDText)
1317 static const WCHAR szSN[] =
1318 {
'\\',
'S',
'h',
'e',
'l',
'l',
'N',
'e',
'w',0};
1345 ext, verb, &Sequence);
1375 if (!
ext->Component)
1378 if (!
ext->Component->Enabled)
1380 TRACE(
"component is disabled\n");
1391 TRACE(
"feature %s not scheduled for removal, skipping unregistration of extension %s\n",
1407 WARN(
"Failed to delete extension key %d\n",
res);
1410 if (
ext->ProgID ||
ext->ProgIDText)
1412 static const WCHAR shellW[] = {
'\\',
's',
'h',
'e',
'l',
'l',0};
1425 strcatW( progid_shell, shellW );
1429 WARN(
"Failed to delete shell key %d\n",
res);
1444 static const WCHAR szExtension[] = {
'E',
'x',
't',
'e',
'n',
's',
'i',
'o',
'n',0};
1473 if (extension &&
key)
1528 WARN(
"Failed to delete MIME key %d\n",
res);
LONG msi_reg_set_subkey_val(HKEY hkey, LPCWSTR path, LPCWSTR name, LPCWSTR val) DECLSPEC_HIDDEN
INTERNETFEATURELIST feature
UINT MSI_RecordSetStringW(MSIRECORD *, UINT, LPCWSTR) DECLSPEC_HIDDEN
INSTALLSTATE msi_get_feature_action(MSIPACKAGE *package, MSIFEATURE *feature)
static MSIPROGID * load_progid(MSIPACKAGE *package, MSIRECORD *row)
WINE_UNICODE_INLINE unsigned int strlenW(const WCHAR *str)
MSIFEATURE * msi_get_loaded_feature(MSIPACKAGE *package, const WCHAR *Feature)
static MSICLASS * load_given_class(MSIPACKAGE *package, LPCWSTR classid)
static UINT iterate_all_progids(MSIRECORD *rec, LPVOID param)
static BOOL has_all_extensions_removed(const MSIPACKAGE *package, const MSIPROGID *progid)
static WCHAR * strdupW(const WCHAR *src)
GLdouble GLdouble GLdouble r
WINE_UNICODE_INLINE WCHAR * strchrW(const WCHAR *str, WCHAR ch)
static MSIMIME * load_mime(MSIPACKAGE *package, MSIRECORD *row)
WINE_DEFAULT_DEBUG_CHANNEL(msi)
LONG WINAPI RegDeleteKeyW(_In_ HKEY hKey, _In_ LPCWSTR lpSubKey)
static const WCHAR szCLSID[]
UINT ACTION_UnregisterProgIdInfo(MSIPACKAGE *package)
static UINT load_all_classes(MSIPACKAGE *package)
static const MSICLASS * get_progid_class(const MSIPROGID *progid)
static UINT register_verb(MSIPACKAGE *package, LPCWSTR progid, MSICOMPONENT *component, const MSIEXTENSION *extension, MSIVERB *verb, INT *Sequence)
static MSICLASS * load_class(MSIPACKAGE *package, MSIRECORD *row)
static MSIAPPID * load_appid(MSIPACKAGE *package, MSIRECORD *row)
WCHAR * msi_build_icon_path(MSIPACKAGE *package, const WCHAR *icon_name)
static const BOOL is_64bit
static const WCHAR szProgID[]
static const WCHAR szSpace[]
static void * msi_alloc_zero(size_t len) __WINE_ALLOC_SIZE(1)
static UINT load_classes_and_such(MSIPACKAGE *package)
__WINE_SERVER_LIST_INLINE void list_add_tail(struct list *list, struct list *elem)
#define LIST_FOR_EACH_ENTRY(elem, list, type, field)
#define ERROR_FUNCTION_FAILED
LONG WINAPI RegCloseKey(HKEY hKey)
BOOL MSI_RecordIsNull(MSIRECORD *, UINT) DECLSPEC_HIDDEN
static const WCHAR szAppID[]
static UINT iterate_all_classes(MSIRECORD *rec, LPVOID param)
LONG WINAPI RegOpenKeyW(HKEY hKey, LPCWSTR lpSubKey, PHKEY phkResult)
INT MSI_ProcessMessage(MSIPACKAGE *, INSTALLMESSAGE, MSIRECORD *) DECLSPEC_HIDDEN
static UINT load_all_progids(MSIPACKAGE *package)
LPWSTR szRemoteServerName
LONG msi_reg_set_val_str(HKEY hkey, LPCWSTR name, LPCWSTR value) DECLSPEC_HIDDEN
static UINT load_all_verbs(MSIPACKAGE *package)
const WCHAR * MSI_RecordGetString(const MSIRECORD *, UINT) DECLSPEC_HIDDEN
static const WCHAR szWow6432NodeCLSID[]
MSIFILE * msi_get_loaded_file(MSIPACKAGE *package, const WCHAR *key)
WCHAR * msi_create_component_advertise_string(MSIPACKAGE *package, MSICOMPONENT *component, const WCHAR *feature)
MSIRECORD * MSI_QueryGetRecord(MSIDATABASE *db, LPCWSTR query,...) DECLSPEC_HIDDEN
static BOOL has_class_removed(const MSIPROGID *progid)
static MSIMIME * load_given_mime(MSIPACKAGE *package, LPCWSTR mime)
static const WCHAR szVIProgID[]
UINT ACTION_UnregisterClassInfo(MSIPACKAGE *package)
UINT ACTION_RegisterClassInfo(MSIPACKAGE *package)
_In_opt_ PVOID _In_ ULONG _In_ PVOID context
int msiobj_release(MSIOBJECTHDR *info)
MSICOMPONENT * msi_get_loaded_component(MSIPACKAGE *package, const WCHAR *Component)
MSIRECORD * MSI_CreateRecord(UINT) DECLSPEC_HIDDEN
UINT ACTION_UnregisterExtensionInfo(MSIPACKAGE *package)
static MSIEXTENSION * load_given_extension(MSIPACKAGE *package, LPCWSTR extension)
LONG WINAPI RegCreateKeyW(HKEY hKey, LPCWSTR lpSubKey, PHKEY phkResult)
UINT ACTION_RegisterProgIdInfo(MSIPACKAGE *package)
static UINT register_progid(const MSIPROGID *progid)
static MSIAPPID * load_given_appid(MSIPACKAGE *package, LPCWSTR name)
static const WCHAR szInprocHandler[]
LSTATUS WINAPI RegDeleteTreeW(HKEY hKey, LPCWSTR lpszSubKey)
int MSI_RecordGetInteger(MSIRECORD *, UINT) DECLSPEC_HIDDEN
void msi_reduce_to_long_filename(WCHAR *filename)
__WINE_SERVER_LIST_INLINE int list_empty(const struct list *list)
WINE_UNICODE_INLINE WCHAR * strcpyW(WCHAR *dst, const WCHAR *src)
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
WCHAR * msi_dup_record_field(MSIRECORD *row, INT index) DECLSPEC_HIDDEN
static MSIEXTENSION * load_extension(MSIPACKAGE *package, MSIRECORD *row)
static UINT load_all_extensions(MSIPACKAGE *package)
WINE_UNICODE_INLINE WCHAR * strcatW(WCHAR *dst, const WCHAR *src)
static BOOL has_one_extension_installed(const MSIPACKAGE *package, const MSIPROGID *progid)
static UINT iterate_all_extensions(MSIRECORD *rec, LPVOID param)
int command(const char *fmt,...)
static BOOL msi_free(void *mem)
WINE_UNICODE_INLINE int strcmpW(const WCHAR *str1, const WCHAR *str2)
__WINE_SERVER_LIST_INLINE void list_init(struct list *list)
static void * msi_alloc(size_t len) __WINE_ALLOC_SIZE(1)
static IOleDocumentView * view
WCHAR * msi_build_directory_name(DWORD count,...)
static BOOL has_class_installed(const MSIPROGID *progid)
static UINT register_appid(const MSIAPPID *appid, LPCWSTR app)
LPWSTR DefInprocHandler32
#define HKEY_CLASSES_ROOT
UINT ACTION_RegisterExtensionInfo(MSIPACKAGE *package)
LPWSTR WINAPI lstrcatW(LPWSTR lpString1, LPCWSTR lpString2)
static MSIPROGID * load_given_progid(MSIPACKAGE *package, LPCWSTR progid)
static const WCHAR szDefaultIcon[]
static LPCWSTR get_clsid_of_progid(const MSIPROGID *progid)
LONG msi_reg_set_val_multi_str(HKEY hkey, LPCWSTR name, LPCWSTR value) DECLSPEC_HIDDEN
UINT ACTION_UnregisterMIMEInfo(MSIPACKAGE *package)
static const WCHAR szInprocHandler32[]
UINT MSI_IterateRecords(MSIQUERY *, LPDWORD, record_func, LPVOID) DECLSPEC_HIDDEN
UINT ACTION_RegisterMIMEInfo(MSIPACKAGE *package)
static const WCHAR szMIMEDatabase[]
static UINT iterate_load_verb(MSIRECORD *row, LPVOID param)
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
static UINT iterate_all_mimes(MSIRECORD *rec, LPVOID param)
static BOOL has_extensions(const MSIPACKAGE *package, const MSIPROGID *progid)
static UINT load_all_mimes(MSIPACKAGE *package)
UINT MSI_DatabaseOpenViewW(MSIDATABASE *, LPCWSTR, MSIQUERY **) DECLSPEC_HIDDEN