On Thu, 2012-09-27 at 09:59 +0200, Christian Costa wrote:
diff --git a/dlls/msi/media.c b/dlls/msi/media.c index 612624d..8a39fcd 100644 --- a/dlls/msi/media.c +++ b/dlls/msi/media.c @@ -358,8 +358,18 @@ static INT_PTR cabinet_next_cabinet(FDINOTIFICATIONTYPE fdint,
if (strcmpiW( mi->cabinet, cab )) {
ERR("Continuous cabinet does not match the next cabinet in the Media table\n");
goto done;
LPSTR next_cab;
WARN("Continuous cabinet %s does not match the next cabinet %s in the media table\n", debugstr_w(cab), debugstr_w(mi->cabinet));
/* Use cabinet name from the media table */
next_cab = strdupWtoA(mi->cabinet);
/* Modify path to cabinet file with full filename (psz3 points to a 256 bytes buffer that can be modified contrary to psz1 and psz2) */
strcat(pfdin->psz3, "\\");
strcat(pfdin->psz3, next_cab);
/* Path psz3 and cabinet psz1 are concatenated by FDI so just reset psz1 */
*pfdin->psz1 = 0;
msi_free(next_cab);
}
if (!(cabinet_file = get_cabinet_filename(mi)))
The requirement that the continuous cabinet name matches the next cabinet in the media table might simply be too strict. Perhaps we need to try them one by one and let FDI decide based on the setID and iCabinet fields. Can you please add some tests?
Le 27/09/2012 11:26, Hans Leidekker a écrit :
On Thu, 2012-09-27 at 09:59 +0200, Christian Costa wrote:
diff --git a/dlls/msi/media.c b/dlls/msi/media.c index 612624d..8a39fcd 100644 --- a/dlls/msi/media.c +++ b/dlls/msi/media.c @@ -358,8 +358,18 @@ static INT_PTR cabinet_next_cabinet(FDINOTIFICATIONTYPE fdint,
if (strcmpiW( mi->cabinet, cab )) {
ERR("Continuous cabinet does not match the next cabinet in the Media table\n");
goto done;
LPSTR next_cab;
WARN("Continuous cabinet %s does not match the next cabinet %s in the media table\n", debugstr_w(cab), debugstr_w(mi->cabinet));
/* Use cabinet name from the media table */
next_cab = strdupWtoA(mi->cabinet);
/* Modify path to cabinet file with full filename (psz3 points to a 256 bytes buffer that can be modified contrary to psz1 and psz2) */
strcat(pfdin->psz3, "\\");
strcat(pfdin->psz3, next_cab);
/* Path psz3 and cabinet psz1 are concatenated by FDI so just reset psz1 */
*pfdin->psz1 = 0;
msi_free(next_cab); } if (!(cabinet_file = get_cabinet_filename(mi)))
The requirement that the continuous cabinet name matches the next cabinet in the media table might simply be too strict. Perhaps we need to try them one by one and let FDI decide based on the setID and iCabinet fields. Can you please add some tests?
Does not seem trivial to test this but I will try.
Thanks Christian
On Thu, 2012-09-27 at 23:07 +0200, Christian Costa wrote:
if (!(cabinet_file = get_cabinet_filename(mi)))
The requirement that the continuous cabinet name matches the next cabinet in the media table might simply be too strict. Perhaps we need to try them one by one and let FDI decide based on the setID and iCabinet fields. Can you please add some tests?
Does not seem trivial to test this but I will try.
It shouldn't be too hard, we already have some tests for continuous cabinets.
Le 28/09/2012 09:05, Hans Leidekker a écrit :
On Thu, 2012-09-27 at 23:07 +0200, Christian Costa wrote:
if (!(cabinet_file = get_cabinet_filename(mi)))
The requirement that the continuous cabinet name matches the next cabinet in the media table might simply be too strict. Perhaps we need to try them one by one and let FDI decide based on the setID and iCabinet fields. Can you please add some tests?
Does not seem trivial to test this but I will try.
It shouldn't be too hard, we already have some tests for continuous cabinets.
Ok. I will take a look.