Module: wine Branch: master Commit: 7f5204e1bc5d64333c9d1d1f7ca81285479596d5 URL: http://source.winehq.org/git/wine.git/?a=commit;h=7f5204e1bc5d64333c9d1d1f7c...
Author: Hans Leidekker hans@codeweavers.com Date: Fri Oct 22 10:36:45 2010 +0200
msi: Register service dependencies in the InstallServices action.
---
dlls/msi/action.c | 13 ++++++------- 1 files changed, 6 insertions(+), 7 deletions(-)
diff --git a/dlls/msi/action.c b/dlls/msi/action.c index 3b21810..633557d 100644 --- a/dlls/msi/action.c +++ b/dlls/msi/action.c @@ -5367,8 +5367,9 @@ static UINT ITERATE_InstallService(MSIRECORD *rec, LPVOID param) MSIRECORD *row; MSIFILE *file; SC_HANDLE hscm, service = NULL; - LPCWSTR comp, depends, key; - LPWSTR name = NULL, disp = NULL, load_order = NULL, serv_name = NULL, pass = NULL; + LPCWSTR comp, key; + LPWSTR name = NULL, disp = NULL, load_order = NULL, serv_name = NULL; + LPWSTR depends = NULL, pass = NULL; DWORD serv_type, start_type; DWORD err_control; SERVICE_DESCRIPTIONW sd = {NULL}; @@ -5391,15 +5392,12 @@ static UINT ITERATE_InstallService(MSIRECORD *rec, LPVOID param) if (start_type == SERVICE_BOOT_START || start_type == SERVICE_SYSTEM_START) goto done;
- depends = MSI_RecordGetString(rec, 8); - if (depends && *depends) - FIXME("Dependency list unhandled!\n"); - deformat_string(package, MSI_RecordGetString(rec, 2), &name); deformat_string(package, MSI_RecordGetString(rec, 3), &disp); serv_type = MSI_RecordGetInteger(rec, 4); err_control = MSI_RecordGetInteger(rec, 6); deformat_string(package, MSI_RecordGetString(rec, 7), &load_order); + deformat_string(package, MSI_RecordGetString(rec, 8), &depends); deformat_string(package, MSI_RecordGetString(rec, 9), &serv_name); deformat_string(package, MSI_RecordGetString(rec, 10), &pass); comp = MSI_RecordGetString(rec, 12); @@ -5424,7 +5422,7 @@ static UINT ITERATE_InstallService(MSIRECORD *rec, LPVOID param)
service = CreateServiceW(hscm, name, disp, GENERIC_ALL, serv_type, start_type, err_control, file->TargetPath, - load_order, NULL, NULL, serv_name, pass); + load_order, NULL, depends, serv_name, pass); if (!service) { if (GetLastError() != ERROR_SERVICE_EXISTS) @@ -5445,6 +5443,7 @@ done: msi_free(load_order); msi_free(serv_name); msi_free(pass); + msi_free(depends);
return ERROR_SUCCESS; }