Hans Leidekker : msi: Load media info even if there's no file to install.
Alexandre Julliard
julliard at winehq.org
Tue Mar 8 11:03:51 CST 2011
Module: wine
Branch: master
Commit: be790cb0adec3a41297d2a51bdcee4e46544341c
URL: http://source.winehq.org/git/wine.git/?a=commit;h=be790cb0adec3a41297d2a51bdcee4e46544341c
Author: Hans Leidekker <hans at codeweavers.com>
Date: Tue Mar 8 10:08:39 2011 +0100
msi: Load media info even if there's no file to install.
---
dlls/msi/files.c | 7 +++++++
dlls/msi/media.c | 9 +--------
dlls/msi/msipriv.h | 1 +
dlls/msi/tests/install.c | 9 ---------
4 files changed, 9 insertions(+), 17 deletions(-)
diff --git a/dlls/msi/files.c b/dlls/msi/files.c
index e88a0c6..493baed 100644
--- a/dlls/msi/files.c
+++ b/dlls/msi/files.c
@@ -293,6 +293,13 @@ UINT ACTION_InstallFiles(MSIPACKAGE *package)
LIST_FOR_EACH_ENTRY( file, &package->files, MSIFILE, entry )
{
+ rc = msi_load_media_info( package, file, mi );
+ if (rc != ERROR_SUCCESS)
+ {
+ ERR("Unable to load media info for %s (%u)\n", debugstr_w(file->File), rc);
+ return ERROR_FUNCTION_FAILED;
+ }
+
if (file->state != msifs_missing && !mi->is_continuous && file->state != msifs_overwrite)
continue;
diff --git a/dlls/msi/media.c b/dlls/msi/media.c
index 8b5a8c6..8c4b0f7 100644
--- a/dlls/msi/media.c
+++ b/dlls/msi/media.c
@@ -656,7 +656,7 @@ static UINT get_drive_type(const WCHAR *path)
return GetDriveTypeW(root);
}
-static UINT msi_load_media_info(MSIPACKAGE *package, MSIFILE *file, MSIMEDIAINFO *mi)
+UINT msi_load_media_info(MSIPACKAGE *package, MSIFILE *file, MSIMEDIAINFO *mi)
{
MSIRECORD *row;
LPWSTR source_dir;
@@ -803,13 +803,6 @@ UINT ready_media(MSIPACKAGE *package, MSIFILE *file, MSIMEDIAINFO *mi)
if (mi->is_continuous)
return ERROR_SUCCESS;
- rc = msi_load_media_info(package, file, mi);
- if (rc != ERROR_SUCCESS)
- {
- ERR("Unable to load media info %u\n", rc);
- return ERROR_FUNCTION_FAILED;
- }
-
/* cabinet is internal, no checks needed */
if (!mi->cabinet || mi->cabinet[0] == '#')
return ERROR_SUCCESS;
diff --git a/dlls/msi/msipriv.h b/dlls/msi/msipriv.h
index 9ddcaeb..10f51de 100644
--- a/dlls/msi/msipriv.h
+++ b/dlls/msi/msipriv.h
@@ -987,6 +987,7 @@ typedef struct
} MSICABDATA;
extern UINT ready_media(MSIPACKAGE *package, MSIFILE *file, MSIMEDIAINFO *mi);
+extern UINT msi_load_media_info(MSIPACKAGE *package, MSIFILE *file, MSIMEDIAINFO *mi);
extern void msi_free_media_info(MSIMEDIAINFO *mi);
extern BOOL msi_cabextract(MSIPACKAGE* package, MSIMEDIAINFO *mi, LPVOID data);
diff --git a/dlls/msi/tests/install.c b/dlls/msi/tests/install.c
index ea5431a..ae6be76 100644
--- a/dlls/msi/tests/install.c
+++ b/dlls/msi/tests/install.c
@@ -3339,11 +3339,8 @@ static void test_lastusedsource(void)
r = pMsiSourceListGetInfoA(prodcode, NULL, MSIINSTALLCONTEXT_USERUNMANAGED,
MSICODE_PRODUCT, INSTALLPROPERTY_LASTUSEDSOURCE, value, &size);
ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %u\n", r);
- todo_wine
- {
ok(!lstrcmpA(value, path), "Expected \"%s\", got \"%s\"\n", path, value);
ok(size == lstrlenA(path), "Expected %d, got %d\n", lstrlenA(path), size);
- }
r = MsiInstallProductA("msifile0.msi", "REMOVE=ALL");
ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %u\n", r);
@@ -3368,11 +3365,8 @@ static void test_lastusedsource(void)
r = pMsiSourceListGetInfoA(prodcode, NULL, MSIINSTALLCONTEXT_USERUNMANAGED,
MSICODE_PRODUCT, INSTALLPROPERTY_LASTUSEDSOURCE, value, &size);
ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %u\n", r);
- todo_wine
- {
ok(!lstrcmpA(value, path), "Expected \"%s\", got \"%s\"\n", path, value);
ok(size == lstrlenA(path), "Expected %d, got %d\n", lstrlenA(path), size);
- }
r = MsiInstallProductA("msifile1.msi", "REMOVE=ALL");
ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %u\n", r);
@@ -3396,11 +3390,8 @@ static void test_lastusedsource(void)
r = pMsiSourceListGetInfoA(prodcode, NULL, MSIINSTALLCONTEXT_USERUNMANAGED,
MSICODE_PRODUCT, INSTALLPROPERTY_LASTUSEDSOURCE, value, &size);
ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %u\n", r);
- todo_wine
- {
ok(!lstrcmpA(value, path), "Expected \"%s\", got \"%s\"\n", path, value);
ok(size == lstrlenA(path), "Expected %d, got %d\n", lstrlenA(path), size);
- }
r = MsiInstallProductA("msifile2.msi", "REMOVE=ALL");
ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %u\n", r);
More information about the wine-cvs
mailing list