48 pLoadLibraryShim(
L"fusion.dll",
L"v1.0.3705",
NULL, &package->
hfusion10 );
49 pLoadLibraryShim(
L"fusion.dll",
L"v1.1.4322",
NULL, &package->
hfusion11 );
50 pLoadLibraryShim(
L"fusion.dll",
L"v2.0.50727",
NULL, &package->
hfusion20 );
51 pLoadLibraryShim(
L"fusion.dll",
L"v4.0.30319",
NULL, &package->
hfusion40 );
98 IAssemblyCache_Release( package->
cache_sxs );
105 IAssemblyCache_Release( package->
cache_net[
i] );
109 package->pGetFileVersion =
NULL;
110 package->pCreateAssemblyNameObject =
NULL;
111 package->pCreateAssemblyEnum =
NULL;
130 r =
MSI_OpenQuery( package->
db, &
view,
L"SELECT * FROM `MsiAssembly` WHERE `Component_` = '%s'", comp );
147 TRACE(
"component is a global assembly\n");
183 r =
MSI_OpenQuery( db, &
view,
L"SELECT * FROM `MsiAssemblyName` WHERE `Component_` = '%s'", comp );
191 if (!
name.count)
goto done;
194 if (!
name.attrs)
goto done;
205 for (
i = 0;
i <
name.count;
i++)
231 hr = IAssemblyCache_QueryAssemblyInfo(
cache, 0, display_name, &
info );
236 TRACE(
"QueryAssemblyInfo returned %#lx\n",
hr );
250 hr = IAssemblyCache_QueryAssemblyInfo(
cache, 0, displayname, &
info );
255 hr = IAssemblyCache_QueryAssemblyInfo(
cache, 0, displayname, &
info );
262 return info.pszCurrentAssemblyPathBuf;
273 if (!package->pCreateAssemblyNameObject || !package->pCreateAssemblyEnum)
return NULL;
281 IAssemblyName_Release(
name );
286 IAssemblyName_Release(
name );
293 hr = package->pCreateAssemblyNameObject( &
name,
str, 0,
NULL );
298 IAssemblyName_Release(
name );
340 TRACE(
"attributes %lu\n",
a->attributes );
344 WARN(
"can't get display name\n");
372 if (
a->clr_version[
i])
381 TRACE(
"assembly is %s\n",
a->installed ?
"installed" :
"not installed");
431 WARN(
"no manifest\n");
477 if (
FAILED(
hr ))
WARN(
"failed to uninstall assembly %#lx\n",
hr );
489 if (
FAILED(
hr ))
WARN(
"failed to uninstall assembly %#lx\n",
hr );
523 if (win32)
path =
L"Installer\\Win32Assemblies\\";
524 else path =
L"Installer\\Assemblies\\";
529 if (win32)
path =
L"Software\\Microsoft\\Installer\\Win32Assemblies\\";
530 else path =
L"Software\\Microsoft\\Installer\\Assemblies\\";
583 if (win32)
path =
L"Installer\\Win32Assemblies\\Global";
584 else path =
L"Installer\\Assemblies\\Global";
589 if (win32)
path =
L"Software\\Microsoft\\Installer\\Win32Assemblies\\Global";
590 else path =
L"Software\\Microsoft\\Installer\\Assemblies\\Global";
641 WARN(
"failed to open local assembly key %ld\n",
res );
649 WARN(
"failed to open global assembly key %ld\n",
res );
656 WARN(
"failed to set assembly value %ld\n",
res );
702 WARN(
"failed to delete local assembly key %ld\n",
res );
708 WARN(
"failed to delete global assembly key %ld\n",
res );
712 WARN(
"failed to delete global assembly value %ld\n",
res );
#define WINE_DEFAULT_DEBUG_CHANNEL(t)
static WCHAR * strdupW(const WCHAR *src)
#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)
#define ASSEMBLYINFO_FLAG_INSTALLED
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
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 BOOL load_fusion_dlls(MSIPACKAGE *package)
static enum clr_version get_clr_version(MSIPACKAGE *package, const WCHAR *filename)
static UINT get_assembly_name_attribute(MSIRECORD *rec, LPVOID param)
BOOL msi_init_assembly_caches(MSIPACKAGE *package)
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 WCHAR * get_assembly_display_name(MSIDATABASE *db, const WCHAR *comp, MSIASSEMBLY *assembly)
WCHAR * msi_get_assembly_path(MSIPACKAGE *package, const WCHAR *displayname)
static const WCHAR * get_clr_version_str(enum clr_version version)
MSIASSEMBLY * msi_load_assembly(MSIPACKAGE *package, MSICOMPONENT *comp)
static BOOL is_assembly_installed(IAssemblyCache *cache, const WCHAR *display_name)
static LONG delete_local_assembly_key(UINT context, BOOL win32, const WCHAR *filename)
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
static void * msi_alloc_zero(size_t len) __WINE_ALLOC_SIZE(1)
UINT MSI_ViewFetch(MSIQUERY *, MSIRECORD **) DECLSPEC_HIDDEN
UINT MSI_IterateRecords(MSIQUERY *, LPDWORD, record_func, LPVOID) DECLSPEC_HIDDEN
static void msi_free(void *mem)
int MSI_RecordGetInteger(MSIRECORD *, UINT) DECLSPEC_HIDDEN
const WCHAR * MSI_RecordGetString(const MSIRECORD *, UINT) DECLSPEC_HIDDEN
INT MSI_ProcessMessage(MSIPACKAGE *, INSTALLMESSAGE, MSIRECORD *) DECLSPEC_HIDDEN
static void * msi_alloc(size_t len) __WINE_ALLOC_SIZE(1)
MSIRECORD * MSI_CreateRecord(UINT) DECLSPEC_HIDDEN
UINT WINAPIV MSI_OpenQuery(MSIDATABASE *, MSIQUERY **, LPCWSTR,...) DECLSPEC_HIDDEN
UINT MSI_RecordSetStringW(MSIRECORD *, UINT, LPCWSTR) DECLSPEC_HIDDEN
UINT MSI_ViewExecute(MSIQUERY *, MSIRECORD *) DECLSPEC_HIDDEN
BOOL encode_base85_guid(GUID *, LPWSTR) DECLSPEC_HIDDEN
_Check_return_ _CRTIMP int __cdecl wcscmp(_In_z_ const wchar_t *_Str1, _In_z_ const wchar_t *_Str2)
#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
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