95 IAssemblyCache_Release( package->
cache_sxs );
102 IAssemblyCache_Release( package->
cache_net[
i] );
106 package->pGetFileVersion =
NULL;
107 package->pCreateAssemblyNameObject =
NULL;
108 package->pCreateAssemblyEnum =
NULL;
127 r =
MSI_OpenQuery( package->
db, &
view,
L"SELECT * FROM `MsiAssembly` WHERE `Component_` = '%s'", comp );
144 TRACE(
"component is a global assembly\n");
180 r =
MSI_OpenQuery( db, &
view,
L"SELECT * FROM `MsiAssemblyName` WHERE `Component_` = '%s'", comp );
188 if (!
name.count)
goto done;
191 if (!
name.attrs)
goto done;
202 for (
i = 0;
i <
name.count;
i++)
229 hr = IAssemblyCache_QueryAssemblyInfo(
cache, 0, displayname, &
info );
234 hr = IAssemblyCache_QueryAssemblyInfo(
cache, 0, displayname, &
info );
237 free(
info.pszCurrentAssemblyPathBuf );
241 return info.pszCurrentAssemblyPathBuf;
252 if (!
init_assembly_caches( package ) || !package->pCreateAssemblyNameObject || !package->pCreateAssemblyEnum)
261 IAssemblyName_Release(
name );
266 IAssemblyName_Release(
name );
273 hr = package->pCreateAssemblyNameObject( &
name,
str, 0,
NULL );
278 IAssemblyName_Release(
name );
313 TRACE(
"attributes %lu\n",
a->attributes );
317 WARN(
"can't get display name\n");
321 free(
a->application );
378 WARN(
"no manifest\n");
425 if (
FAILED(
hr ))
WARN(
"failed to uninstall assembly %#lx\n",
hr );
437 if (
FAILED(
hr ))
WARN(
"failed to uninstall assembly %#lx\n",
hr );
470 if (win32)
path =
L"Installer\\Win32Assemblies\\";
471 else path =
L"Installer\\Assemblies\\";
476 if (win32)
path =
L"Software\\Microsoft\\Installer\\Win32Assemblies\\";
477 else path =
L"Software\\Microsoft\\Installer\\Assemblies\\";
530 if (win32)
path =
L"Installer\\Win32Assemblies\\Global";
531 else path =
L"Installer\\Assemblies\\Global";
536 if (win32)
path =
L"Software\\Microsoft\\Installer\\Win32Assemblies\\Global";
537 else path =
L"Software\\Microsoft\\Installer\\Assemblies\\Global";
588 WARN(
"failed to open local assembly key %ld\n",
res );
596 WARN(
"failed to open global assembly key %ld\n",
res );
603 WARN(
"failed to set assembly value %ld\n",
res );
649 WARN(
"failed to delete local assembly key %ld\n",
res );
655 WARN(
"failed to delete global assembly key %ld\n",
res );
659 WARN(
"failed to delete global assembly value %ld\n",
res );
#define WINE_DEFAULT_DEBUG_CHANNEL(t)
#define RegCloseKey(hKey)
LONG WINAPI RegSetValueExW(_In_ HKEY hKey, _In_ LPCWSTR lpValueName, _In_ DWORD Reserved, _In_ DWORD dwType, _In_ CONST BYTE *lpData, _In_ DWORD cbData)
LONG WINAPI RegDeleteKeyW(_In_ HKEY hKey, _In_ LPCWSTR lpSubKey)
LONG WINAPI RegDeleteValueW(HKEY hKey, LPCWSTR lpValueName)
LONG WINAPI RegCreateKeyW(HKEY hKey, LPCWSTR lpSubKey, PHKEY phkResult)
#define GetProcAddress(x, y)
HRESULT WINAPI CreateAssemblyCache(IAssemblyCache **ppAsmCache, DWORD dwReserved)
static const WCHAR version[]
UINT WINAPI GetSystemDirectoryW(OUT LPWSTR lpBuffer, IN UINT uSize)
INSTALLSTATE msi_get_component_action(MSIPACKAGE *package, MSICOMPONENT *comp)
MSIFEATURE * msi_get_loaded_feature(MSIPACKAGE *package, const WCHAR *Feature)
MSIFILE * msi_get_loaded_file(MSIPACKAGE *package, const WCHAR *key)
UINT msi_schedule_action(MSIPACKAGE *package, UINT script, const WCHAR *action)
int msiobj_release(MSIOBJECTHDR *info)
HRESULT WINAPI CLSIDFromString(LPCOLESTR idstr, LPCLSID id)
GLdouble GLdouble GLdouble r
GLboolean GLboolean GLboolean GLboolean a
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
_CRTIMP size_t __cdecl wcslen(_In_z_ const wchar_t *_Str)
LPWSTR WINAPI lstrcatW(LPWSTR lpString1, LPCWSTR lpString2)
INTERNETFEATURELIST feature
static LONG open_local_assembly_key(UINT context, BOOL win32, const WCHAR *filename, HKEY *hkey)
UINT ACTION_MsiUnpublishAssemblies(MSIPACKAGE *package)
void msi_destroy_assembly_caches(MSIPACKAGE *package)
UINT msi_uninstall_assembly(MSIPACKAGE *package, MSICOMPONENT *comp)
static enum clr_version get_clr_version(MSIPACKAGE *package, const WCHAR *filename)
static UINT get_assembly_name_attribute(MSIRECORD *rec, LPVOID param)
static WCHAR * build_local_assembly_path(const WCHAR *filename)
IAssemblyEnum * msi_create_assembly_enum(MSIPACKAGE *package, const WCHAR *displayname)
static LONG open_global_assembly_key(UINT context, BOOL win32, HKEY *hkey)
static MSIRECORD * get_assembly_record(MSIPACKAGE *package, const WCHAR *comp)
static BOOL init_assembly_caches(MSIPACKAGE *package)
static WCHAR * get_assembly_display_name(MSIDATABASE *db, const WCHAR *comp, MSIASSEMBLY *assembly)
WCHAR * msi_get_assembly_path(MSIPACKAGE *package, const WCHAR *displayname)
MSIASSEMBLY * msi_load_assembly(MSIPACKAGE *package, MSICOMPONENT *comp)
static LONG delete_local_assembly_key(UINT context, BOOL win32, const WCHAR *filename)
static void load_fusion_dlls(MSIPACKAGE *package)
static LONG open_assemblies_key(UINT context, BOOL win32, HKEY *hkey)
UINT ACTION_MsiPublishAssemblies(MSIPACKAGE *package)
UINT msi_install_assembly(MSIPACKAGE *package, MSICOMPONENT *comp)
@ INSTALLMESSAGE_ACTIONDATA
@ MSIINSTALLCONTEXT_MACHINE
@ msidbAssemblyAttributesWin32
int MSI_RecordGetInteger(MSIRECORD *, UINT)
UINT MSI_ViewExecute(MSIQUERY *, MSIRECORD *)
BOOL encode_base85_guid(GUID *, LPWSTR)
const WCHAR * MSI_RecordGetString(const MSIRECORD *, UINT)
UINT WINAPIV MSI_OpenQuery(MSIDATABASE *, MSIQUERY **, LPCWSTR,...)
INT MSI_ProcessMessage(MSIPACKAGE *, INSTALLMESSAGE, MSIRECORD *)
UINT MSI_ViewFetch(MSIQUERY *, MSIRECORD **)
UINT MSI_RecordSetStringW(MSIRECORD *, UINT, LPCWSTR)
MSIRECORD * MSI_CreateRecord(UINT)
UINT MSI_IterateRecords(MSIQUERY *, LPDWORD, record_func, LPVOID)
_Check_return_ _CRTIMP int __cdecl wcscmp(_In_z_ const wchar_t *_Str1, _In_z_ const wchar_t *_Str2)
_Check_return_ _CRTIMP wchar_t *__cdecl wcsdup(_In_z_ const wchar_t *_Str)
#define LIST_FOR_EACH_ENTRY(elem, list, type, field)
struct file_info manifest
WCHAR DWORD const WCHAR void IUnknown IAssemblyName void *IAssemblyCache * cache_net[CLR_VERSION_MAX]
IAssemblyCache * cache_sxs
MSIINSTALLCONTEXT Context
static const CHAR manifest[]
#define E_NOT_SUFFICIENT_BUFFER
#define ERROR_FUNCTION_FAILED
#define HKEY_CURRENT_USER
#define HKEY_CLASSES_ROOT
@ CANOF_PARSE_DISPLAY_NAME