msi: Use the long file name in the WriteIniValues action.

This commit is contained in:
James Hawkins 2008-10-27 00:56:04 -05:00 committed by Alexandre Julliard
parent 7616a750ba
commit bf9538f383
1 changed files with 12 additions and 4 deletions

View File

@ -3622,9 +3622,10 @@ end:
static UINT ITERATE_WriteIniValues(MSIRECORD *row, LPVOID param) static UINT ITERATE_WriteIniValues(MSIRECORD *row, LPVOID param)
{ {
MSIPACKAGE *package = (MSIPACKAGE*)param; MSIPACKAGE *package = (MSIPACKAGE*)param;
LPCWSTR component,section,key,value,identifier,filename,dirproperty; LPCWSTR component, section, key, value, identifier, dirproperty;
LPWSTR deformated_section, deformated_key, deformated_value; LPWSTR deformated_section, deformated_key, deformated_value;
LPWSTR folder, fullname = NULL; LPWSTR folder, filename, fullname = NULL;
LPCWSTR filenameptr;
MSIRECORD * uirow; MSIRECORD * uirow;
INT action; INT action;
MSICOMPONENT *comp; MSICOMPONENT *comp;
@ -3647,7 +3648,6 @@ static UINT ITERATE_WriteIniValues(MSIRECORD *row, LPVOID param)
comp->Action = INSTALLSTATE_LOCAL; comp->Action = INSTALLSTATE_LOCAL;
identifier = MSI_RecordGetString(row,1); identifier = MSI_RecordGetString(row,1);
filename = MSI_RecordGetString(row,2);
dirproperty = MSI_RecordGetString(row,3); dirproperty = MSI_RecordGetString(row,3);
section = MSI_RecordGetString(row,4); section = MSI_RecordGetString(row,4);
key = MSI_RecordGetString(row,5); key = MSI_RecordGetString(row,5);
@ -3658,6 +3658,12 @@ static UINT ITERATE_WriteIniValues(MSIRECORD *row, LPVOID param)
deformat_string(package,key,&deformated_key); deformat_string(package,key,&deformated_key);
deformat_string(package,value,&deformated_value); deformat_string(package,value,&deformated_value);
filename = msi_dup_record_field(row, 2);
if (filename && (filenameptr = strchrW(filename, '|')))
filenameptr++;
else
filenameptr = filename;
if (dirproperty) if (dirproperty)
{ {
folder = resolve_folder(package, dirproperty, FALSE, FALSE, TRUE, NULL); folder = resolve_folder(package, dirproperty, FALSE, FALSE, TRUE, NULL);
@ -3673,7 +3679,7 @@ static UINT ITERATE_WriteIniValues(MSIRECORD *row, LPVOID param)
goto cleanup; goto cleanup;
} }
fullname = build_directory_name(2, folder, filename); fullname = build_directory_name(2, folder, filenameptr);
if (action == 0) if (action == 0)
{ {
@ -3708,7 +3714,9 @@ static UINT ITERATE_WriteIniValues(MSIRECORD *row, LPVOID param)
MSI_RecordSetStringW(uirow,4,deformated_value); MSI_RecordSetStringW(uirow,4,deformated_value);
ui_actiondata(package,szWriteIniValues,uirow); ui_actiondata(package,szWriteIniValues,uirow);
msiobj_release( &uirow->hdr ); msiobj_release( &uirow->hdr );
cleanup: cleanup:
msi_free(filename);
msi_free(fullname); msi_free(fullname);
msi_free(folder); msi_free(folder);
msi_free(deformated_key); msi_free(deformated_key);