James Hawkins : msi: Add handling for MsiBreak.

Alexandre Julliard julliard at wine.codeweavers.com
Fri Jun 1 06:44:35 CDT 2007


Module: wine
Branch: master
Commit: 60e95ee6e8ea4a4f43a6c170c917fc7285b76455
URL:    http://source.winehq.org/git/wine.git/?a=commit;h=60e95ee6e8ea4a4f43a6c170c917fc7285b76455

Author: James Hawkins <truiken at gmail.com>
Date:   Thu May 31 13:21:43 2007 -0700

msi: Add handling for MsiBreak.

---

 dlls/msi/custom.c |   35 +++++++++++++++++++++++++++++++++++
 1 files changed, 35 insertions(+), 0 deletions(-)

diff --git a/dlls/msi/custom.c b/dlls/msi/custom.c
index eaf5ce9..0216f03 100644
--- a/dlls/msi/custom.c
+++ b/dlls/msi/custom.c
@@ -514,6 +514,40 @@ static msi_custom_action_info *find_action_by_guid( const GUID *guid )
     return info;
 }
 
+static void handle_msi_break( LPCWSTR target )
+{
+    LPWSTR msg;
+    WCHAR val[MAX_PATH];
+
+    static const WCHAR MsiBreak[] = { 'M','s','i','B','r','e','a','k',0 };
+    static const WCHAR WindowsInstaller[] = {
+        'W','i','n','d','o','w','s',' ','I','n','s','t','a','l','l','e','r',0
+    };
+
+    static const WCHAR format[] = {
+        'T','o',' ','d','e','b','u','g',' ','y','o','u','r',' ',
+        'c','u','s','t','o','m',' ','a','c','t','i','o','n',',',' ',
+        'a','t','t','a','c','h',' ','y','o','u','r',' ','d','e','b','u','g','g','e','r',' ',
+        't','o',' ','p','r','o','c','e','s','s',' ','%','i',' ','(','0','x','%','X',')',' ',
+        'a','n','d',' ','p','r','e','s','s',' ','O','K',0
+    };
+
+    if( !GetEnvironmentVariableW( MsiBreak, val, MAX_PATH ))
+        return;
+
+    if( lstrcmpiW( val, target ))
+        return;
+
+    msg = msi_alloc( (lstrlenW(format) + 10) * sizeof(WCHAR) );
+    if (!msg)
+        return;
+
+    wsprintfW( msg, format, GetCurrentProcessId(), GetCurrentProcessId());
+    MessageBoxW( NULL, msg, WindowsInstaller, MB_OK);
+    msi_free(msg);
+    DebugBreak();
+}
+
 static DWORD WINAPI ACTION_CallDllFunction( const GUID *guid )
 {
     msi_custom_action_info *info;
@@ -548,6 +582,7 @@ static DWORD WINAPI ACTION_CallDllFunction( const GUID *guid )
         if (hPackage)
         {
             TRACE("calling %s\n", debugstr_w( info->target ) );
+            handle_msi_break( info->target );
             r = fn( hPackage );
             MsiCloseHandle( hPackage );
         }




More information about the wine-cvs mailing list