Compare commits

...

4 commits

Author SHA1 Message Date
Fabian Maurer
273a290573 Merge branch 'java' into 'master'
msi: Make MsiInstallProductW open msi readonly

See merge request wine/wine!6760
2024-11-15 23:38:55 +00:00
Fabian Maurer
63a5064bbf msi: Make MsiInstallProductW open msi readonly
Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=57343
2024-11-03 16:15:28 +01:00
Fabian Maurer
b829695f75 msi/tests: Add test for MsiOpenDatabaseA during MsiInstallProductA 2024-11-03 16:15:17 +01:00
Fabian Maurer
3d93244dea ieframe: Add IERefreshElevationPolicy stub
Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=57343
2024-11-03 15:26:35 +01:00
6 changed files with 29 additions and 3 deletions

View file

@ -875,3 +875,9 @@ void InternetExplorer_WebBrowser_Init(InternetExplorer *This)
This->IExternalConnection_iface.lpVtbl = &ExternalConnectionVtbl;
This->IServiceProvider_iface.lpVtbl = &ServiceProviderVtbl;
}
HRESULT WINAPI IERefreshElevationPolicy(void)
{
FIXME("(): stub\n");
return 0;
}

View file

@ -6,5 +6,6 @@
@ stdcall -private DllRegisterServer()
@ stdcall -private DllUnregisterServer()
@ stdcall IEGetWriteableHKCU(ptr)
@ stdcall IERefreshElevationPolicy()
@ stdcall OpenURL(long long str long)
@ stdcall SetQueryNetSessionCount(long)

View file

@ -229,7 +229,7 @@ UINT WINAPI MsiInstallProductW(LPCWSTR szPackagePath, LPCWSTR szCommandLine)
{
MSIPACKAGE *package = NULL;
const WCHAR *reinstallmode;
DWORD options = 0;
DWORD options = WINE_OPENPACKAGEFLAGS_READONLY;
UINT r, len;
TRACE("%s %s\n",debugstr_w(szPackagePath), debugstr_w(szCommandLine));

View file

@ -906,6 +906,7 @@ extern UINT MSI_SetInstallLevel( MSIPACKAGE *package, int iInstallLevel );
/* package internals */
#define WINE_OPENPACKAGEFLAGS_RECACHE 0x80000000
#define WINE_OPENPACKAGEFLAGS_READONLY 0x40000000
extern MSIPACKAGE *MSI_CreatePackage( MSIDATABASE * );
extern UINT MSI_OpenPackageW( LPCWSTR szPackage, DWORD dwOptions, MSIPACKAGE **pPackage );
extern UINT MSI_SetTargetPathW( MSIPACKAGE *, LPCWSTR, LPCWSTR );

View file

@ -1327,7 +1327,7 @@ UINT MSI_OpenPackageW(LPCWSTR szPackage, DWORD dwOptions, MSIPACKAGE **pPackage)
MSIRECORD *data_row, *info_row;
UINT r;
WCHAR localfile[MAX_PATH], cachefile[MAX_PATH];
LPCWSTR file = szPackage;
LPCWSTR file = szPackage, mode;
DWORD index = 0;
MSISUMMARYINFO *si;
BOOL delete_on_close = FALSE;
@ -1405,7 +1405,8 @@ UINT MSI_OpenPackageW(LPCWSTR szPackage, DWORD dwOptions, MSIPACKAGE **pPackage)
product_version = get_product_version( db );
msiobj_release( &db->hdr );
TRACE("opening package %s\n", debugstr_w( localfile ));
r = MSI_OpenDatabaseW( localfile, MSIDBOPEN_TRANSACT, &db );
mode = (dwOptions & WINE_OPENPACKAGEFLAGS_READONLY) ? MSIDBOPEN_READONLY : MSIDBOPEN_TRANSACT;
r = MSI_OpenDatabaseW( localfile, mode, &db );
if (r != ERROR_SUCCESS)
{
free( product_version );

View file

@ -1259,6 +1259,22 @@ static void test_view_get_error(MSIHANDLE hinst)
MsiCloseHandle(db);
}
static void test_open_msi(MSIHANDLE hinst)
{
MSIHANDLE handle = 0;
UINT result;
char buffer[300];
DWORD len = sizeof(buffer);
result = MsiGetPropertyA(hinst, "DATABASE", buffer, &len);
ok(hinst, result == 0, "Failed: %x\n", result);
result = MsiOpenDatabaseA(buffer, (LPCSTR)MSIDBOPEN_READONLY, &handle);
ok (hinst, result == 0, "Got %u\n", result);
MsiCloseHandle(handle);
}
/* Main test. Anything that doesn't depend on a specific install configuration
* or have undesired side effects should go here. */
UINT WINAPI main_test(MSIHANDLE hinst)
@ -1287,6 +1303,7 @@ UINT WINAPI main_test(MSIHANDLE hinst)
test_costs(hinst);
test_invalid_functions(hinst);
test_view_get_error(hinst);
test_open_msi(hinst);
return ERROR_SUCCESS;
}