Module: wine Branch: master Commit: 2c5e1f686be5aae0c4a1bc75860e746909503f62 URL: http://source.winehq.org/git/wine.git/?a=commit;h=2c5e1f686be5aae0c4a1bc7586...
Author: Hans Leidekker hans@codeweavers.com Date: Fri Mar 26 12:12:06 2010 +0100
msi: Implement the Reinstall control event.
---
dlls/msi/events.c | 19 +++++++++++++++++++ 1 files changed, 19 insertions(+), 0 deletions(-)
diff --git a/dlls/msi/events.c b/dlls/msi/events.c index e8f2297..1f63c72 100644 --- a/dlls/msi/events.c +++ b/dlls/msi/events.c @@ -383,6 +383,24 @@ static UINT ControlEvent_ReinstallMode(MSIPACKAGE *package, LPCWSTR argument, return MSI_SetPropertyW( package, szReinstallMode, argument ); }
+static UINT ControlEvent_Reinstall( MSIPACKAGE *package, LPCWSTR argument, + msi_dialog *dialog ) +{ + static const WCHAR szReinstallEq[] = {'R','E','I','N','S','T','A','L','L','=',0}; + UINT r = ERROR_OUTOFMEMORY; + WCHAR *cmd; + + cmd = msi_alloc( (strlenW( szReinstallEq ) + strlenW( argument ) + 1) * sizeof(WCHAR) ); + if (cmd) + { + strcpyW( cmd, szReinstallEq ); + strcatW( cmd, argument ); + r = MsiConfigureProductExW( package->ProductCode, INSTALLLEVEL_DEFAULT, INSTALLSTATE_DEFAULT, cmd ); + msi_free( cmd ); + } + return r; +} + static UINT ControlEvent_ValidateProductID(MSIPACKAGE *package, LPCWSTR argument, msi_dialog *dialog) { @@ -417,6 +435,7 @@ static const struct _events Events[] = { { "DirectoryListUp",ControlEvent_DirectoryListUp }, { "SelectionBrowse",ControlEvent_SpawnDialog }, { "ReinstallMode",ControlEvent_ReinstallMode }, + { "Reinstall",ControlEvent_Reinstall }, { "ValidateProductID",ControlEvent_ValidateProductID }, { NULL,NULL }, };